RU2568920C2 - Способ выполнения машинной команды, компьютерная система и машиночитаемый носитель, обеспечивающие расчет расстояния от положения в основной памяти до границы блока основной памяти - Google Patents

Способ выполнения машинной команды, компьютерная система и машиночитаемый носитель, обеспечивающие расчет расстояния от положения в основной памяти до границы блока основной памяти Download PDF

Info

Publication number
RU2568920C2
RU2568920C2 RU2012148584/08A RU2012148584A RU2568920C2 RU 2568920 C2 RU2568920 C2 RU 2568920C2 RU 2012148584/08 A RU2012148584/08 A RU 2012148584/08A RU 2012148584 A RU2012148584 A RU 2012148584A RU 2568920 C2 RU2568920 C2 RU 2568920C2
Authority
RU
Russia
Prior art keywords
operand
register
border
boundary
computer
Prior art date
Application number
RU2012148584/08A
Other languages
English (en)
Other versions
RU2012148584A (ru
Inventor
Дейвид БРЕДБЕРИ Джонатан
Карл ГШВИНД Майкл
Марк ШВАРЦ Эрик
Дж. СЛИДЖЛ Тимоти
ЯКОБИ Кристиан
Original Assignee
Интернэшнл Бизнес Машинз Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Интернэшнл Бизнес Машинз Корпорейшн filed Critical Интернэшнл Бизнес Машинз Корпорейшн
Publication of RU2012148584A publication Critical patent/RU2012148584A/ru
Application granted granted Critical
Publication of RU2568920C2 publication Critical patent/RU2568920C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

Изобретение относится к средствам расчета расстояния от положения в основной памяти до границы блока основной памяти. Технический результат заключается в обеспечении обработки данных вблизи границ памяти. Получают машинную команду, которая включает: по меньшей мере одно поле кода операции для предоставления кода операции, идентифицирующего операцию Load Count to Block Boundary, предназначенную для расчета расстояния от положения в основной памяти до границы блока основной памяти; поле регистра, используемое для обозначения регистра, причем регистр включает первый операнд и по меньшей мере одно поле для указания положения второго операнда, причем второй операнд включает по меньшей мере часть указанного блока основной памяти. Выполняют машинную команду для выполнения указанной операции. Определяют расстояние от положения второго операнда до границы блока основной памяти, включающее подсчет процессором количества байт от положения второго операнда до границы блока основной памяти. Размещают значение, представляющее указанное расстояние и являющееся результатом выполнения операции Load Count to Block Boundary, в первом операнде. 3 н. и 17 з.п. ф-лы, 17 ил.

Description

Предпосылки создания изобретения
[001] Аспект данного изобретения относится, в общем, к обработке данных, и в частности к обработке, которая предусматривает границы памяти.
[002] Обработка данных включает в себя различные типы обработки, в том числе обработку текста или другие типы обработки. Во время обработки данных часто необходимо выполнять специальное манипулирование, когда обрабатываемые данные находятся вблизи заданной границы памяти. Представленные на сегодняшний день команды и/или техники, связанные с обработкой вблизи границы памяти, зачастую являются неэффективными или проблематичными.
КРАТКОЕ ИЗЛОЖЕНИЕ
[003] Для устранения недостатков уровня техники предложен машиночитаемый носитель данных, в котором хранятся команды, считываемые и выполняемые обрабатывающим устройством в центральном процессорном устройстве для выполнения способа, включающего получение процессором машинной команды для выполнения, причем машинная команда определена для выполнения компьютером согласно архитектуре компьютера и включает: по меньшей мере одно поле кода операции для предоставления кода операции, идентифицирующего операцию Load Count to Block Boundary, предназначенную для расчета расстояния от положения в основной памяти до границы блока основной памяти; поле регистра, используемое для обозначения регистра, причем регистр включает первый операнд; и по меньшей мере одно поле для указания положения второго операнда, причем второй операнд включает по меньшей мере часть указанного блока основной памяти. Кроме того, способ включает выполнение машинной команды для выполнения указанной операции Load Count to Block Boundary, включающее определение расстояния от положения второго операнда до границы блока основной памяти, включающее подсчет процессором количества байт от положения второго операнда до границы блока основной памяти, и размещение значения, представляющего указанное расстояние и являющееся результатом выполнения операции Load Count to Block Boundary, в первом операнде
[004] Также предложены соответствующие способ и компьютерная система.
[005] С помощью методик согласно данному изобретению реализуются и другие особенности и преимущества. Другие варианты воплощения и аспекты изобретения излагаются здесь подробно и считаются частью формулы изобретения.
КРАТКОЕ ОПИСАНИЕ И НЕСКОЛЬКО ПРЕДСТАВЛЕНИЙ ЧЕРТЕЖЕЙ
[006] Один или более аспектов данного изобретения выделены особо и явно заявлены как примеры в формуле изобретения в конце описания. Вышеуказанное и другие цели, признаки и преимущества изобретения понятны из следующего подробного описания с помощью сопровождающих чертежей, в которых:
На ФИГ. 1 изображен один из примеров вычислительной среды, включающей и использующей один или более аспектов данного изобретения;
На ФИГ.2А изображен другой пример вычислительной среды, включающей и использующей один или более аспектов данного изобретения;
На ФИГ.2Б изображены дополнительные подробности памяти ФИГ. 2а в соответствии с аспектом настоящего изобретения;
На ФИГ.3 изображен один из вариантов воплощения формата команды Load Count to Block Boundary в соответствии с аспектом настоящего изобретения;
На ФИГ.4 изображен один из вариантов воплощения логики, связанной с командой Load Count to Block Boundary в соответствии с аспектом данного изобретения;
На ФИГ.5А изображен один из примеров по меньшей мере части блока памяти, для которого обеспечивается счет (расстояние), в соответствии с аспектом данного изобретения;
На ФИГ.5Б изображен один из примеров регистра общего назначения, содержащего расстояние, в соответствии с аспектом данного изобретения;
На ФИГ.6 изображен пример файла регистра в соответствии с аспектом данного изобретения;
На ФИГ.7 изображен один из вариантов воплощения компьютерного программного продукта, включающего один или более аспектов данного изобретения;
На ФИГ.8 изображен один из вариантов воплощения главной (хост) компьютерной системы, включающей и использующей один или более аспектов данного изобретения;
На ФИГ.9 изображен другой пример компьютерной системы, включающей и использующей один или более аспектов данного изобретения;
На ФИГ.10 изображен еще один пример компьютерной системы, содержащей компьютерную сеть, включающую и использующую один или более аспектов данного изобретения;
На ФИГ.11 изображен один из вариантов воплощения различных элементов компьютерной системы, включающей и использующей один или более аспектов данного изобретения;
На ФИГ.12А изображен один из вариантов воплощения исполнительного устройства компьютерной системы согласно ФИГ.11, включающего и использующего один или более аспектов данного изобретения;
На ФИГ.12Б изображен один из вариантов воплощения устройства ветвления компьютерной системы согласно ФИГ.11, включающего и использующего один или более аспектов данного изобретения;
На ФИГ.12В изображен один из вариантов воплощения устройства загрузки/сохранения компьютерной системы согласно ФИГ.11, включающего и использующего один или более аспектов данного изобретения; и
На ФИГ.13 изображен один из вариантов воплощения эмулируемой хост-компьютерной системы, включающей и использующей один или более аспектов данного изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[007] В соответствии с аспектом настоящего изобретения предоставляется средство для определения расстояния до заданной границы в памяти от заданного положения (например, адреса памяти). Граница в памяти является, например, окончанием блока основной памяти (также называемой здесь основным запоминающим устройством). Блок основной памяти является любым блоком памяти заданного размера. Заданный размер также называют границей блока. Блок основной памяти включает данные, такие как символьные данные, целые данные или другие типы данных.
[008] Символьные данные включают, но не ограничиваются: алфавитные символы на любом языке; числовые цифры; знаки препинания; и/или другие символы. Символьные данные могут быть или не быть строками данных. С символьными данными связаны стандарты, примеры которых включают, но не ограничиваются: ASCII (American Standard Code for Information Interchange, американский стандартный код для информационного обмена); Unicode, включая, но не ограничиваясь, UTF (Unicode Transformation Format, формат трансформации Юникода) 8; UTF 16 и т.п.
[009] В отдельном примере предоставляется команда Load Count to Block Boundary (LCBB), которая предоставляет количество байт данных до заданной границы в памяти от заданного адреса в памяти. Для вычисления количества бит (называемого здесь расстоянием) используется размер границы. Размер границы может быть задан командой явно (напр., значение переменной в тексте команды, фиксированное значение в тексте команды, вкодированное в код операции, граница на основе регистра, заданная в команде, и т.д.); или размер границы может динамически определяться машиной. Например, команда задает тип границы, такой как граница страницы или кэша, и машина определяет размер строки кэша или страницы, либо по предопределенному значению, либо динамически на основе информации (напр., поиска, например, в буфере динамической трансляции адресов для определения размера страницы).
[0010] Как пример, команда Load Count to Block Boundary предоставляет количество байт данных, которые могут быть или были загружены из памяти, например, в регистр без пересечения заданной границы памяти. Регистр может быть векторным регистром или любым другим типом регистра.
[0011] Векторный регистр (также называемый вектором) включает один или более элементов, а каждый элемент векторного регистра (также называемый вектором) имеет длину, например, один, два или четыре байта. Далее, векторный операнд является, к примеру, операндом типа SIMD (Single Instruction, Multiple Data - одна команда, много данных), имеющим множество элементов. В других вариантах реализации элементы могут иметь другие размеры; а векторный операнд не обязательно типа SIMD, и/или может включать один элемент.
[0012] Один из вариантов осуществления вычислительной среды, включающей и использующей один или более аспектов данного изобретения, описаны при помощи ФИГ.1. Вычислительная среда 100 включает, например, процессор 102 (например, центральное процессорное устройство), память 104 (например, главная память) и одно или более устройств ввода-вывода (I/O) и/или интерфейсов 106, соединенных между собой посредством, например, одной или более шин 108 и/или других соединений.
[0013] В одном примере, процессор 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 или других компаний.
[0014] В дополнительном варианте воплощения, процессор 102 основан на Power Architecture, предложенной корпорацией International Business Machines. Один вариант воплощения Power Architecture описан в "Power ISA™ Version 2.06 Revision В," корпорации International Business Machines, 23 июля 2010 г., который включается сюда по ссылке во всей его целостности. POWER ARCHITECTURE® является зарегистрированной торговой маркой корпорации International Business Machines.
[0015] В еще одном дополнительном варианте воплощения процессор 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-041US, декабрь 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, Санта-Клара, Калифорния.
[0016] Другой вариант воплощения вычислительной среды, включающей и использующей один или более аспектов данного изобретения, описан при помощи ФИГ.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, или другими.
[0017] Собственное центральное процессорное устройство 202 содержит один или более собственных регистров 210, такие как один или более регистров общего назначения и/или один или более регистров специального назначения, использующихся при обработке внутри среды. Эти регистры содержат сведения, которые представляют состояние среды в любой отдельный момент времени.
[0018] Кроме того, собственное центральное процессорное устройство 202 выполняет команды и код, хранящиеся в памяти 204. В отдельном примере центральное процессорное устройство выполняет код эмулятора 212, хранящийся в памяти 204. Этот код задействует вычислительную среду, настроенную на одной архитектуре для эмуляции другой архитектуры. Например, код эмулятора 212 позволяет машинам, основанным на архитектурах, отличных от z/Architecture, таких так процессоры PowerPC, серверы pSeries, серверы xSeries, серверы HP Superdome или другие, эмулировать z/Architecture и выполнять программное обеспечение и команды, разработанные на основе z/Architecture.
[0019] Дальнейшие подробности касательно кода эмулятора 212 описаны при помощи ФИГ. 2Б. Гостевые команды 250 включают программные команды (напр., машинные команды), которые были разработаны для выполнения в архитектуре иной, нежели таковая собственного ЦПУ 202. Например, гостевые команды 250 могли быть разработаны для выполнения на процессоре 102 z/Architecture, но вместо этого эмулируются на собственном ЦПУ 202, которое может быть, например, процессором Intel Itanium II. В одном из примеров код эмулятора 212 включает модуль считывания команд 252 для получения одной или более гостевых команд 250 из памяти 204 и опционального обеспечения локальной буферизации полученных команд. Он включает также программу трансляции команд 254 для определения типа гостевой команды, которая была получена, и для трансляции гостевой команды в одну или более соответствующих собственных команд 256. Эта трансляция включает, например, идентификацию функции для выполнения гостевой командой и выбор собственной команды (команд), выполняющих эту функцию.
[0020] Далее, эмулятор 212 включает программу управления эмуляцией 260, заставляющую собственные команды выполняться. Программа управления эмуляцией 260 может заставить собственное ЦПУ 202 выполнить программу собственных команд, которые эмулируют одну или более ранее полученных гостевых команд, и, по завершению этого выполнения, вернуть управление программе считывания команд для эмуляции получения следующей гостевой команды или группы гостевых команд. Выполнение собственных команд 256 может включать загрузку данных в регистр из памяти 204; запись данных обратно в память из регистра; или выполнение некоторого типа арифметической или логической операции, как определено программой трансляции.
[0021] Каждая программа, например, реализована в программном обеспечении, которое хранится в памяти и выполняется собственным центральным процессорным устройством 202. В других примерах одна или более программ или операций могут быть реализованы в микропрограммном, аппаратном, программном обеспечении или в некоторой их комбинации. Регистры эмулируемого процессора могут эмулироваться с помощью регистров 210 собственного ЦПУ или с помощью ячеек в памяти 204. В вариантах реализации гостевые команды 250, собственные команды 256 и код эмулятора 212 могут находиться в одной памяти или могут быть рассредоточены по различным запоминающим устройствам.
[0022] В данном контексте, микропрограмма включает, напр., микрокод, милликод и/или макрокод процессора. Она включает, например, команды аппаратного уровня и/или структуры данных, используемые в реализации машинного кода высокого уровня. В одном варианте реализации она включает, например, проприетарный код, который обычно поставляется как микрокод, который включает достоверное программное обеспечение или микрокод, специфичный для нижележащего аппаратного обеспечения, и управляет доступом операционной системы к системному аппаратному обеспечению.
[0023] В одном примере гостевая команда 250, которая считывается, транслируется и выполняется, является командой, описываемой здесь. Команда одной архитектуры (напр., для z/Architecture) считывается из памяти, транслируется и представляется в виде последовательности собственных команд 256 другой архитектуры (напр., PowerPC, pSeries, xSeries, Intel и т.п.). Затем эти собственные команды выполняются.
[0024] Как описано здесь, команды Load Count to Block Boundary могут быть реализованы как часть различных архитектур, включая, но не ограничиваясь, z/Architecture, Power, Intel и т.д. Хотя здесь описывается реализация для z/Architecture, команда и один или более аспектов данного изобретения могут основываться на многих других архитектурах. z/Architecture является только одним из примеров.
[0025] Один вариант воплощения команды Load Count to Block Boundary показан на ФИГ.3. В одном примере, команда Load Count to Block Boundary 300 содержит поля кода операции 302а (например, биты 0-7), 302b (например, биты 40-47), обозначающие операцию Load Count to Block Boundary; поле регистра 304 (например, биты 8-11), использующееся для задания регистра общего назначения (R1); индексное поле (Х2) 306 (например, биты 12-15); базовое поле (В2) 308 (например, биты 16-19); поле смещения (D2) 310 (например, биты 20-31); и поле маски (М3) 312 (например, биты 32-35). Каждое из полей 304-312 в одном примере отделено и независимо от поля (полей) кода операции. Далее, в одном варианте реализации они отделены и независимы друг от друга; однако в других вариантах более чем одно поле могут комбинироваться. Дальнейшие сведения об использовании этих полей описываются ниже.
[0026] В одном из примеров выбранные биты (напр., первые два бита) кода операции, заданные полем кода операции 302а, определяют длину и формат команды. В этом частном примере длина равна трем полусловам, а формат является регистрово-индексной операцией сохранения с расширенным полем кода операции.
[0027] Нижний индекс, связанный с полем команды, обозначает операнд, к которому применяется поле. Например, нижний индекс 1, связанный с R1, обозначает первый операнд и так далее. Регистровый операнд равен одному регистру по длине, которая составляет, например, 128 бит.
[0028] В одном примере, в команде операции регистро-индексного сохранения, содержимое регистров общего назначения, определенное полями Х2 и B2, прибавляется к содержимому поля D2 для получения адреса второго операнда. Смещение D2 для команды Load Count to Block Boundary рассматривается как 12-битное целое без знака, в одном примере. Адрес второго операнда используется для указания положения в главной памяти; однако, он не используется для адресации данных, в данном варианте воплощения.
[0029] Поле М3 в одном из вариантов осуществления определяет код, который используется для сообщения ЦПУ о размере границы блока для вычисления количества возможных байт для загрузки, без пересечения границы памяти. Если определено зарезервированное значение, обнаруживается исключение определения. Примерные коды и соответствующие значения следующие:
[0030]
Код Граница
0 64 байта
1 128 байт
2 256 байт
3 512 байта
4 1 кбайт
5 2 кбайта
6 4 кбайта
[0031] В другом примере размер границы не включен в команду, а вместо этого динамически определяется процессором, выполняющим команду. Например, поле М3 определяет тип границы (напр., строка кэша, страница и т.п.), и на основе типа и одной или более характеристик процессора (напр., размер строки кэша для процессора; размер страницы для процессора; и т.п.), процессор определяет границу. К примеру, на основе типа, процессор использует постоянный размер для границы (напр., предопределенный постоянный размер строки кэша или страницы для процессора), или, на основе типа, процессор определяет границу. Например, если тип - граница страницы, процессор ищет начальный адрес в буфере динамической трансляции адресов (Translation Look-Aside Buffer, TLB) и определяет границу страницы из него. Другие примеры также существуют. Например, тип может предоставляться другим полем команды или из директивы вне команды.
[0032] При выполнении одной из реализации команды Load Count to Block Boundary, двоичное беззнаковое целое (напр., 64-битное), содержащее число бит, которое возможно загрузить от положения второго операнда без пересечения заданной границы блока, ограниченное, например, размером вектора для загрузки (напр., 16), помещается в регистр общего назначения, определенный в первом операнде.
[0033] В результате выполнения команды опциональный код состояния устанавливается, например, таким:
[0034] 0 - Операнд один равен шестнадцати
[0035] 1 -
[0036] 2 -
[0037] 3 - Операнд один меньше шестнадцати
[0038] В приведенном выше примере команды, адрес второго операнда определяется значением индексного регистра (Х2)+значение базового регистра (В2)+смещение (D2); однако в других реализациях он предоставляется значением регистра; адресом команды+отступ, заданный в тексте команды; значением регистра+смещение; или значением регистра+значение индексного регистра; это лишь некоторые примеры.
[0039] Дальнейшие подробности воплощения обработки команды Vector Count to Block Boundary описаны при помощи ФИГ. 4. В одном примере процессор вычислительной среды следует данной логике.
[0040] В одном из вариантов воплощения вначале создается маска границы (BdyMask), которая используется для определения близости к заданной границе, ШАГ 400. Чтобы создать маску, в одном примере берется двоичное дополнительное отрицание от размера границы (BdySize) 402, создающее маску границы 404 (напр., BdyMask=0-BdySize). Размер границы предоставляется, в одном примере, командой (напр., полем М3); а в другом примере он определяется машиной согласно данной заявке.
[0041] После этого вычисляется начальный адрес, который обозначает ячейку в памяти, из которой должен начинаться счет, ШАГ 410. К примеру, начальный адрес 412 может быть предоставлен значением регистра; адресом команды плюс отступ, заданный в тексте команды; значением регистра плюс смещение; значением регистра плюс значение индексного регистра; или значением регистра плюс значение индексного регистра плюс смещение. В предоставленной здесь команде начальный адрес предоставляется полем Х2, полем В2 и полем D2. То есть, содержимое регистров, заданных полями Х2 и В2, прибавляется к смещению, указанному D2 для получения начального адреса. Вышеуказанные способы вычисления начального адреса являются лишь примерами; другие примеры также возможны.
[0042] Далее, вычисляется конечный адрес, указывающий положение, на котором остановить счет, ШАГ 420. Вводными для этого вычисления являются, например, размер границы 402, начальный адрес 412, размер вектора (vec_size) 414 и маска границы 404. Размер вектора представляет собой размер выбранного векторного регистра или другого регистра (например, в байтах; например, 16). Регистр представляет собой, например, регистр, в который данные могут быть загружены. В одном из примеров конечный адрес 422 вычисляется следующим образом:
[0043] EndAddress=min(StartAddress+(BdySize - (StartAddress & ¬BdyMask)), StartAddress+vec_size).
[0044] Затем, вычисляется расстояние, ШАГ 430. Например, расстояние=EndAddress 422 - StartAddress 412. В дополнительном примере, расстояние может быть вычислено с начального адреса и без использования конечного адреса. В этом примере, расстояние=min(16, BdySize - (StartAddress И ¬BdyMask)), где 16 представляет собой размер векторного регистра (или другого регистра) в байтах. В другом примере, могут использоваться другие размеры вектора.
[0045] Один из примеров по меньшей мере части блока 500 памяти изображен на ФИГ. 5А. Блок 500 памяти включает данные от выбранного адреса 502 до заданной границы 504. Как показано, никакие данные не считаются или не загружаются после границы, обозначенной пунктирной вертикальной линией 504. Ячейки после границы недоступны, и не делается никаких исключений. Далее, счет расстояния от выбранного адреса до заданной границы, определенный в соответствии с аспектом данного изобретения, сохраняется в регистре общего назначения 510, пример которого изображен на ФИГ.5Б. Как показано в этом примере, расстояние представляет собой 13 шестнадцатеричное, и поэтому OD сохраняется в регистре общего назначения 510, указывая, что 13 байт данных были подсчитаны и могут быть сохранены в векторном регистре.
[0046] Описанное выше представляет собой один из примеров команды счета, используемой для определения расстояния от заданного адреса до заданной границы. Может быть представлено предупреждение, если заданный адрес находится недалеко от границы, что, возможно, потребует специальной обработки.
[0047] Как один пример, команда Load Count to Block Boundary используется для определения того, как много байтов данных было загружено в регистр, такой как векторный регистр. Этот подсчет (расстояние) может быть использован в другой обработке.
[0048] В одном из вариантов воплощения, регистр, который загружен и для которого получен счет, представляет собой векторный регистр, являющийся частью векторного средства. Векторное средство предоставляет, например, векторы постоянного размера в пределах от одного до шестнадцати элементов. Каждый вектор содержит данные, которые обрабатываются векторными командами, определенными этим средством. В одном из вариантов реализации, если вектор составлен из нескольких элементов, то каждый элемент обрабатывается параллельно с другими элементами. Завершения команды не происходит, пока не будет завершена обработка всех элементов.
[0049] Как один из примеров, есть 32 векторных регистра, а другие типы регистров могут быть отображены на квадрант векторных регистров. К примеру, как изображено на ФИГ. 6, если есть файл регистра 600, который содержит 32 векторных регистра 602, и каждый регистр имеет 128 бит в длину, то 16 регистров с плавающей точкой 604, которые имеют 64 бит в длину, могут быть наложены на векторные регистры. Таким образом, к примеру, когда регистр с плавающей точкой 2 изменяется, то векторный регистр 2 также изменяется. Другие отображения для других типов регистров также возможны.
[0050] В данном контексте, термины "память", "главная память", "запоминающее устройство" и "главное запоминающее устройство" используются как взаимозаменяемые, если не указано иное, явным образом или неявно по контексту.
[0051] Дополнительные детали, касающиеся векторного средства, включая примеры команд, представлены ниже как часть этого Подробного описания.
[0052] Как оценят специалисты в данной области техники, один или больше аспектов настоящего изобретения могут быть воплощены в виде системы, способа или компьютерного программного продукта. Соответственно, один или больше аспектов настоящего изобретения могут принимать форму целиком аппаратного варианта осуществления, целиком программного варианта осуществления (содержащего аппаратно-программное обеспечение, резидентное программное обеспечение, микрокод и т.д.) или варианта осуществления, сочетающего программные и аппаратные особенности, которые все могут в целом именоваться в описании "схемой", "модулем" или "системой". Кроме того, один или больше аспектов настоящего изобретения могут принимать форму компьютерного программного продукта, воплощенного в одной или нескольких машиночитаемых средах, в которых записан машиночитаемый программный код.
[0053] Может использоваться любое сочетание одной или нескольких машиночитаемых сред. Машиночитаемой средой может являться машиночитаемая запоминающая среда (носитель данных). Машиночитаемой запоминающей средой может являться, например, без ограничения электронная, магнитная, оптическая, электромагнитная, инфракрасная или полупроводниковая система, аппаратура или устройство или любое применимое сочетание перечисленного. Более конкретные примеры (неисчерпывающий список) машиночитаемой запоминающей среды включают: электрическое соединение, содержащее один или несколько проводов, портативный компьютерный диск, жесткий диск, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), стираемое программируемое постоянное запоминающее устройство (СППЗУ или флэш-память), оптическое волокно, портативное постоянное запоминающее устройство на компакт-диске (CD-ROM), оптическое запоминающее устройство, магнитное запоминающее устройство или любое применимое сочетание перечисленного. В контексте настоящего документа машиночитаемой запоминающей средой может являться любая материальная среда, в которой содержится или хранится программа для использования системой, аппаратурой или устройством выполнения команд или применительно к ним.
[0054] Как показано на ФИГ.7, в одном из примеров компьютерный программный продукт 700 содержит, например, одну или несколько не-временных машиночитаемых запоминающих сред 702 для хранения в них машиночитаемого программного кода или логики 704 для обеспечения и реализации одного или нескольких аспектов настоящего изобретения.
[0055] Программный код, воплощенный в машиночитаемой среде, может передаваться с использованием соответствующей среды, включая без ограничения беспроводную, проводную среду, оптоволоконный кабель, ВЧ-среду и т.д. или любое применимое сочетание перечисленного.
[0056] Компьютерный программный код для выполнения операций, для одного или более аспектов настоящего изобретения, может быть записан на одном или нескольких языках программирования в любом сочетании, включая объектно-ориентированный язык программирования, такой как Java, Smalltalk, C++ и т.п., и традиционных процедурных языках программирования, таких как "С" и языки ассемблера или аналогичные языки программирования. Программный код может целиком выполняться в пользовательском компьютере, частично в пользовательском компьютере, в качестве автономного пакета программного обеспечения, частично в пользовательском компьютере и частично в удаленном компьютере или целиком в удаленном компьютере или сервере. В случае последнего сценария удаленный компьютер может быть соединен с пользовательским компьютером посредством сети любого типа, включая локальную вычислительную сеть (ЛВС) или глобальную вычислительную сеть (ГВС), или может быть установлено соединение с внешним компьютером (например, по сети Интернет с использованием поставщика услуг Интернет).
[0057] Один или более аспектов настоящего изобретения описаны со ссылкой на структурные схемы и/или блок-схемы способов, оборудования (систем) и компьютерных программных продуктов в соответствии с воплощениями настоящего изобретения. Подразумевается, что каждый блок на структурных схемах и/или блок-схемах и сочетания блоков на структурных схемах и/или блок-схемах могут быть реализованы посредством команд управления компьютерной программой. Эти команды управления компьютерной программой могут передаваться процессору универсального компьютера, специализированного компьютера или другой программируемого аппаратуры для обработки данных с целью формирования механизма, в котором команды, выполняемые посредством процессора компьютера или другого программируемого оборудования обработки данных, создают средство реализации функций/действий, обозначенных блоком или блоками на структурных схемах и/или блок-схемах.
[0058] Эти команды управления компьютерной программой также могут храниться в машиночитаемой среде, которая способна предписывать компьютеру, другому программируемому оборудованию обработки данных или другим устройствам действовать конкретным способом, в результате чего команды, хранящиеся в машиночитаемой среде, формируют продукт, содержащий команды, в которых реализуется функция/действие, обозначенное блоком или блоками на структурных схемах и/или блок-схемах.
[0059] Команды управления компьютерной программой также могут загружаться в компьютер, другое программируемое оборудование обработки данных или другие устройства, чтобы инициировать выполнение последовательности оперативных шагов компьютером, другим программируемым оборудованием или другими устройствами с целью формирования реализованного в компьютере процесса, при этом команды, выполняемые компьютером или другим программируемым оборудованием, обеспечивают процессы реализации функций/действий, обозначенных блоком или блоками на структурных схемах и/или блок-схемах.
[0060] Приведенные на чертежах структурные схемы и блок-схемы иллюстрируют архитектуру, функциональные возможности и действие возможных вариантов реализации систем, способов и компьютерных программных продуктов согласно различным вариантам осуществления одного или более аспектов настоящего изобретения. В связи с этим каждым блоком на структурных схемах или блок-схемах может быть представлен определенный модуль, сегмент или часть кода, которая содержит одну или несколько выполняемых команд для реализации заданной логической функции(-й). Следует также отметить, что в некоторых альтернативных вариантах реализации указанные в блоке функции могут выполняться не в том порядке, в котором они представлены на чертежах. Например, функции, указанные двумя последовательно показанными блоками, в действительности, могут выполняться преимущественно одновременно, или функции иногда могут выполняться в обратном порядке в зависимости от соответствующих функциональных возможностей. Следует также отметить, что каждый блок на блок-схемах и/или структурных схемах и сочетания блоков на блок-схемах и/или структурных схемах могут быть реализованы посредством специализированных аппаратных систем, выполняющих заданные функции или действия, или посредством сочетаний специализированных аппаратных систем и компьютерных команд.
[0061] Помимо вышесказанного, одна или несколько особенностей настоящего изобретения может обеспечиваться, предлагаться, применяться, координироваться, обслуживаться и т.д. поставщиком услуг, который предлагает управление пользовательскими средами. Например, поставщик услуг способен создавать, вести, поддерживать и т.д. для одного или нескольких пользователей машинный код и/или вычислительную инфраструктуру, в которой выполняется одна или несколько особенностей настоящего изобретения. В ответ поставщик услуг может получать оплату от пользователя на основании соглашения о подписке и/или абонентской плате в качестве примеров. Дополнительно или в качестве альтернативы, поставщик услуг может получать плату за рекламное содержание, продаваемое одному или нескольким третьим лицам.
[0062] Согласно одному аспекту настоящего изобретения для выполнения одного или нескольких аспектов настоящего изобретения может быть развернуто приложение. В качестве одного из примеров, развертывание приложения включает использование вычислительной инфраструктуры, способной выполнять один или несколько аспектов настоящего изобретения.
[0063] В качестве одного из дополнительных аспектов настоящего изобретения, развертывание вычислительной инфраструктуры может включать интегрирование машиночитаемого кода в вычислительную систему, при этом код в сочетании с вычислительной системой способен выполнять один или несколько аспектов настоящего изобретения.
[0064] В качестве еще одного из дополнительных аспектов настоящего изобретения может быть предложен способ интегрирования вычислительной инфраструктуры, включающий интегрирование машиночитаемого кода в компьютерную систему. Компьютерная система содержит машиночитаемую среду, содержащую один или несколько аспектов настоящего изобретения. Код в сочетании с компьютерной системой способен выполнять один или несколько аспектов настоящего изобретения.
[0065] Хотя различные варианты осуществления описаны выше, они являются лишь примерами. Например, вычислительные среды других архитектур могут содержать или использовать один или несколько аспектов настоящего изобретения. Далее, могут быть использованы векторы других размеров и другие регистры, и изменения в командах могут быть сделаны, не отступая от сути настоящего изобретения.
Дополнительно, могут быть использованы другие технологии для расчета расстояния от заданного адреса до определенной границы.
[0066] Кроме того, другие типы вычислительных сред могут выгодно применяться из одного или нескольких аспектов настоящего изобретения. В качестве примера, может использоваться система обработки данных, применимая для хранения и/или выполнения программного кода и содержащая по меньшей мере два процессора, прямо или косвенно связанных со средствами памяти посредством системной шины. Элементы памяти включают, например, локальную память, применяемую во время фактического выполнения программного кода, массовую память и кэш-память, которая обеспечивает временное хранение по меньшей мере части программного кода для уменьшения необходимого числа случаев извлечения кода из массовой памяти во время выполнения.
[0067] С системой прямой или косвенно посредством промежуточных контроллеров ввода-вывода могут быть связаны устройства ввода-вывода (включая без ограничения, клавиатуры, дисплеи, координатно-указательные устройства, ЗУПД, накопители на магнитной ленте, на компакт-дисках, на многоцелевых компакт-дисках, портативные миниатюрные накопители на жестких дисках и другие запоминающие среды и т.д.). С системой также могут быть связаны сетевые адаптеры, позволяющие системе обработки данных устанавливать связь с другими системами обработки данных или удаленными принтерами или запоминающими устройствами посредством промежуточной частных или общедоступных сетей. Модемы, кабельные модемы и сетевые карты Ethernet являются лишь несколькими из сетевых адаптеров доступных типов.
[0068] Согласно ФИГ. 8, на которой представлены характерные компоненты хост-компьютерной системы 5000 для реализации одного или нескольких аспектов настоящего изобретения. Характерный хост-компьютер 5000 содержит один или несколько процессоров 5001, поддерживающих связь с памятью (т.е. центральной памятью) 5002 компьютера, а также интерфейсы ввода-вывода с запоминающими средами 5011 и сетями 5010 для связи с другими компьютерами или SAN и т.п. Процессор 5001 совместим с архитектурой, содержащей структурированный набор команд и структурированные функциональные возможности. Процессор 5001 может иметь динамическую трансляцию адреса (DAT) 5003 для превращения адресов программ (виртуальных адресов) в действительные адреса памяти. DAT обычно содержит буфер 5007 быстрой трансляции адреса (TLB) для кэширования трансляций, чтобы при последующих доступах к блоку памяти 5002 компьютера не требовалась задержка трансляции адреса. Обычно между памятью 5002 компьютера и процессором 5001 используется кэш-память 5009. Кэш-память 5009 может являться иерархической и состоящей из кэша большой емкости, доступного для нескольких процессоров, и более быстродействующих кэшей (низкого уровня) меньшей емкости между кэшем большой емкости и каждым процессором. В некоторых случаях реализации кэши низкого уровня разделены на отдельные кэши низкого уровня для выборки команд и доступа к данным. В одном из вариантов осуществления блок 5004 выборки команд вызывает из памяти 5002 команду посредством кэш-памяти 5009. Команда декодируется в блоке 5006 декодирования команд и отправляется (с другими командами в некоторых вариантах осуществления) в блок или блоки 5008 выполнения команд. Обычно используется несколько блоков 5008 выполнения команд, например, блок выполнения арифметических команд, блок выполнения команд с плавающей точкой и блок выполнения команд ветвления. Команда выполняется блоком, который в зависимости от необходимости осуществляет доступ к операндам из определяемых командами регистров или памяти. Если доступ (загрузка или сохранение) к операнду должен осуществляться из памяти 5002, блок 5005 загрузки/сохранения обычно обрабатывает процедуру доступа под управлением выполняемой команды. Команды могут выполняться в аппаратных схемах или во внутреннем микрокоде (аппаратно-программном обеспечении) или с использованием сочетания того и другого.
[0069] Как было отмечено, в локальном (или основном) запоминающем устройстве компьютерной системы хранится информация, а также адресные, защитные, контрольные и корректирующие записи. Некоторые аспекты адресации включают формат адресов, концепцию адресных пространств, различные типы адресов и то, каким образом адрес одного типа транслируется в адрес другого типа. Некоторые из основных запоминающих устройств имеют постоянно абонированные ячейки. Основное запоминающее устройство обеспечивает систему запоминающим устройством с прямой адресацией и быстрой выборкой данных. В основное запоминающее устройство должны загружаться (из устройств ввода) как данные, так и программы, после чего они могут обрабатываться.
[0070] Основное запоминающее устройство может содержать одно или несколько буферных запоминающих устройств меньшей емкости с более быстрой выборкой, иногда называемых кэшами. Кэш обычно физически связан с процессором (ЦП) или процессором ввода-вывода. Физическая конструкция и использование различных запоминающих сред в целом не сказывается на программе за исключением производительности.
[0071] Для команд и операндов, хранимых в памяти, могу быть предусмотрены раздельные кэши. Информация содержится в кэше в форме непрерывных байтов на целочисленной границе, называемой блоком или строкой данных кэша (или для краткости строкой). Согласно одной из моделей может быть предусмотрена команда извлечения атрибута кэша (EXTRACT CACHE ATTRIBUTE), которая выдает размер строки кэша в байтах. Согласно одной из моделей также может быть предусмотрена команда упреждающей выборки данных (PREFETCH DATA) и команда упреждающей выборки данных относительно большой длины (PREFETCH DATA RELATIVE LONG) для упреждающей выборки данных из запоминающего устройства в кэш данных или команд или для высвобождения данных из кэша.
[0072] Запоминающее устройство рассматривается как длинная горизонтальная битовая строка. В случае большинства операций доступ к запоминающему устройству последовательно осуществляется слева направо. Битовая строка подразделяется на блоки из восьми разрядов. Восьмиразрядный блок называется байтом и является базовым конструктивным блоком всех форматов представления информации. Местоположение каждого байта в запоминающем устройстве идентифицируется однозначно определяемым неотрицательным целым числом, которое является адресом местоположения этого байта или просто адресом байта. Соседние местоположения байтов имеют идущие подряд адреса, начинающиеся слева с 0 и последовательно следующие слева направо. Адреса представляют собой двоичные целые числа без знака, содержащие 24, 31 или 64 разряда.
[0073] Обмен информацией между запоминающим устройством и процессором или канальной подсистемой осуществляется путем передачи одного байта или группы байтов за один раз. Если не оговорено иное, например, в системе z/Architecture хранящаяся группа байтов адресуется посредством крайнего левого байта из группы. Число байтов в группе подразумевается или прямо оговаривается выполняемой операцией. Используемая в работе процессора группа байтов называется полем. Разряды в каждой группе байтов, например, в системе z/Architecture последовательно нумеруются слева направо. Крайние левые разряды в z/Architecture иногда именуются "старшими" разрядами, а крайние правые разряды - "младшими" разрядами. Тем не менее, номера разрядов не являются адресами ячеек запоминающего устройства. Возможна только адресация байтов. Чтобы оперировать с отдельными разрядами хранящегося байта, осуществляется доступ ко всему байту. Разряды в байте пронумерованы слева направо от 0 до 7 (например, в системе z/Architecture). Разряды в адресе могут быть пронумерованы от 8 до 31 или от 40 до 63 в случае 24-разрядных адресов или от 1 до 31 или от 33 до 63 в случае 31-разрядных адресов и от 0 до 63 в случае 64-разрядных адресов. В любом другом имеющем фиксированную длину формате из множества байтов разряды, образующие формат, последовательно пронумерованы, начиная с 0. В целях обнаружения ошибок и предпочтительно их исправления с каждым байтом или группой байтов может передаваться один или несколько контрольных разрядов. Такие контрольные разряды генерируются автоматически машиной и не могут непосредственно управляться программой. Емкость запоминающего устройства выражается в числе байтов. Когда кодом операций команды подразумевается длина хранящегося поля операнда, считается, что поле имеет фиксированную длину, которая может составлять 1, 2, 4, 8 или 16 байтов. Для некоторых команд могут подразумеваться более длинные поля. Когда длина хранящегося поля операнда не подразумевается, а прямо указывается, считается, что поле имеет переменную длину. Операнды переменной длины могут различаться по длине с шагом в 1 байт (или в случае некоторых команд с шагом в 2 байта и другими шагами). При сохранении информации в запоминающем устройстве замещается содержимое местоположений только тех байтов, которые включены в указанное поле, несмотря на то, что ширина физического пути доступа к запоминающему устройству может превышать длину сохраняемого поля.
[0074] Некоторые хранящиеся единицы информации должны находиться на целочисленной границе. Применительно к единице информации граница называется целочисленной, когда адрес ее ячейки запоминающего устройства кратен длине единицы информации в байтах. Полям длиной 2, 4, 8 и 16 байтам на целочисленной границе даются особые названия. Полуслово является группой из 2 идущих подряд байтов на двухбайтовой границе и представляет собой базовый конструктивный блок команд. Слово является группой из 4 идущих подряд байтов на четырехбайтовой границе. Двойное слово является группой из 8 идущих подряд байтов на 8-байтовой границе. Учетверенное слово является группой из 16 идущих подряд байтов на 16-байтовой границе. Когда в адресах ячеек запоминающего устройства указаны полуслова, слова, двойные слова и учетверенные слова, в двоичном представлении адреса содержится один, два, три или четыре крайних правых нулевых разряда, соответственно. Команды должны находиться на двухбайтовых целочисленных границах. Хранящиеся операнды большинства команд не содержат требования размещения на границах.
[0075] В устройствах, в которых реализованы раздельные кэши для команд и операндов, могут происходить значительные задержки, если программа сохраняется в строке кэша, из которой впоследствии осуществляется выборка команд, независимо от того, изменяются ли при сохранении команды, выборка которых впоследствии осуществляется.
[0076] В одном варианте осуществления, настоящее изобретение может быть реализовано на практике посредством программного обеспечения (иногда называемого лицензионным внутренним кодом, аппаратно-программным обеспечением, микрокодом, милликодом, пикокодом и т.п., что во всех случаях согласуется с одним или большим количеством аспектов настоящего изобретения). Как показано на ФИГ. 8, обычно процессор 5001 хост-системы 5000, получает доступ к программному коду системы программного обеспечения, в котором воплощены один или больше аспектов настоящего изобретения, посредством долговременных запоминающих сред 5011, таких как ПЗУ на компакт-дисках, накопитель на магнитной ленте или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям из памяти 5002 компьютера или запоминающего устройства одной компьютерной системы по сети 5010 другим компьютерным системам для применения пользователями таких других систем.
[0077] Программный код включает операционную систему, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ. Обычно подкачка страниц программного кода осуществляется из запоминающей среды 5011 в относительно быстродействующее запоминающее устройство 5002, в котором он доступен для обработки процессором 5001. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и/или распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски, универсальные цифровые диски, магнитную ленту и т.п.) часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.
[0078] На ФИГ.9 проиллюстрирована характерная рабочая станция или аппаратная серверная система, в которой может быть на практике реализованы один или большее количество аспектов настоящего изобретения. В показанную на ФИГ.9 систему 5020 входит характерная базовая компьютерная система 5021, такая как персональный компьютер, рабочая станция или сервер, включая необязательные периферийные устройства. Базовая компьютерная система 5021 имеет один или несколько процессоров 5026 и шину для соединения процессора(ов) 5026 и других компонентов системы 5021 и обеспечения связи между ними известными способами. Шина соединяет процессор 5026 с памятью 5025 и долговременным запоминающим устройством 5027, которое может содержать накопитель на жестких дисках (например, включая любое из следующего: магнитный носитель, компакт-диск, универсальный цифровой диск и флэш-память) или, например, накопитель на магнитной ленте. В систему 5021 также может входить адаптер пользовательского интерфейса, который посредством шины соединяет микропроцессор 5026 с одним или несколькими устройствами сопряжения, такими как клавиатура 5024, мышь 5023, принтер/сканнер 5030 и/или другие устройства сопряжения, которыми могут являться любое пользовательское устройство сопряжения, такое как сенсорный экран, дополнительная цифровая клавиатура и т.д. Шина посредством дисплейного адаптера также соединяет дисплей 5022, такой как ЖК-дисплей или монитор с микропроцессором 5026.
[0079] Система 5021 может поддерживать связь с другими компьютерами или компьютерными сетями посредством сетевого адаптера, способного поддерживать связь 5028 с сетью 5029. Примерами сетевых адаптеров являются каналы связи, кольцевая сеть с эстафетным доступом, сеть Ethernet или модемы. В качестве альтернативы, система 5021 может поддерживать связь с использованием беспроводного интерфейса, такого как карта CDPD (сотовой системы передачи пакетов цифровых данных). Система 5021 может быть связана с другими такими компьютерами в локальной вычислительной сети (ЛВС) или глобальной вычислительной сети (ГВС), или системой 5021 может являться клиент, связанный отношениями клиент/сервер с другим компьютером и т.д. Все эти конфигурации, а также соответствующее коммуникационное оборудование и программное обеспечение известны из уровня техники.
[0080] На ФИГ.10 проиллюстрирована сеть 5040 обработки данных, в которой может быть реализовано на практике один или несколько аспектов настоящего изобретения. В сеть 5040 обработки данных может входить множество отдельных сетей, таких как беспроводная сеть и проводная сеть, в каждую из которых может входить множество отдельных рабочих станций 5041, 5042, 5043, 5044. Кроме того, как известно специалистам в данной области техники, в нее может входить одна или несколько ЛВС, в которую может входить множество интеллектуальных рабочих станций, связанных с хост-процессором.
[0081] На ФИГ.10 также показано, что в сети также могут входить мэйнфреймы или серверы, такие как шлюз (клиент-сервер 5046) или сервер приложений (удаленный сервер 5048, который может осуществлять доступ к хранилищу данных, а также может быть доступен непосредственно с рабочей станции 5045). Шлюз 5046 служит точкой входа в каждую отдельную сеть. Шлюз необходим при подсоединении одного сетевого протокола к другому. Шлюз 5046 предпочтительно может быть связан с другой сетью (например, сетью Интернет 5047) линией связи. Шлюз 5046 также может быть непосредственно связан с одной или несколькими рабочими станциями 5041, 5042, 5043, 5044 с использованием линии связи. Шлюз может быть реализован с использованием сервера IBM eServer™ System z производства International Business Machines Corporation.
[0082] Как показано на ФИГ.9 и 10, доступ к программному коду системы программного обеспечения, в котором может быть воплощен один или несколько аспектов настоящего изобретения, может осуществлять процессор 5026 системы 5020 посредством долговременных запоминающих сред 5027, таких как ПЗУ на компакт-дисках, или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям 5050, 5051 из памяти компьютера или запоминающего устройства одной компьютерной системы по сети другим компьютерным системам для применения пользователями таких других систем.
[0083] В качестве альтернативы, программный код может быть воплощен в памяти 5025 с возможностью доступа к нему для процессора 5026 с использованием процессорной шины. В таком программном коде реализована операционная система, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ 5032. Обычно подкачка страниц программного кода осуществляется из запоминающих сред 5027 в быстродействующее запоминающее устройство 5025, в котором он доступен для обработки процессором 5026. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и/или распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски, универсальные цифровые диски, магнитную ленту и т.п.) часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.
[0084] Кэш, который является наиболее легкодоступным для процессора (обычно более быстродействующим и менее объемным, чем другие кэши процессора), представляет собой кэш низшего уровня (L1 или уровня 1), а основное запоминающее устройство (основная память) представляет собой кэш высшего уровня (L3 в случае 3 уровней). Кэш низшего уровня часто поделен на кэш команд (I-кэш), в котором хранятся машинные команды для выполнения, и кэш данных (D-кэш), в котором хранятся операнды, хранимые в памяти.
[0085] На ФИГ.11 проиллюстрирован один из примеров осуществления процессора 5026. Обычно с целью помещения в буфер блоков памяти и повышения производительности процессора используется один или несколько уровней кэша 5053. Кэш 5053 представляет собой высокоскоростной буфер, в котором в строках данных кэша хранятся данные в памяти, которые вероятно будут использоваться. Типичные строки данных кэша содержат 64, 128 или 256 байтов данных в памяти. Для кэширования команд и для кэширования данных часто используются раздельные кэши. Согласованность кэшей (синхронизация копий строк в памяти и в кэшах) часто обеспечивается различными алгоритмами слежения ("snoop"), хорошо известными из уровня техники. Основное запоминающее устройство 5025 процессорной системы часто называют кэшем. В процессорной системе, имеющей уровня 4 кэша 5053, основное запоминающее устройство 5025 иногда называют кэшем уровня 5 (L5), поскольку оно обычно является более быстродействующими и представляет собой лишь часть энергонезависимого запоминающего устройство (ЗУПД, ЗУ на ленте и т.д.), которое доступно для компьютерной системы. Основное запоминающее устройство 5025 "кэширует" страницы данных, которые подкачиваются в основное запоминающее устройство 5025 и откачиваются из него операционной системой.
[0086] Программный счетчик (счетчик команд) 5061 отслеживает адрес текущей команды для выполнения. Счетчиком команд в процессоре на основе z/Architecture является 64-разрядным, при этом он может быть усечен до 31 или 24 разрядов с целью поддержки ранее существовавших ограничений адресации. Поскольку счетчик команд обычно воплощен в слове состояния программы (PSW) компьютера, оно сохраняется при переключении контекста. Соответственно, выполняемая программа с показанием счетчика команд может прерываться, например, операционной системой (при переключении контекста из программной среды в среду операционной системы). PSW программы поддерживает показание счетчика команд, пока программа неактивна, а во время выполнения операционной системы используется счетчик команд (в PSW) операционной системы. Обычно показание счетчика команд приращивается на величину, равную числу байтов текущей команды. RISC-команды (на основе вычислений с сокращенным набором команд) обычно имеют фиксированную длину, тогда как CISC-команды (на основе вычислений с полным набором команд) обычно имеют переменную длину. Команды, используемые в системе IBM z/Architecture, являются CISC-командами, имеющими длину 2, 4 или 6 байтов. Показание счетчика 5061 команд изменяется, например, в результате операции переключения контекста или операции выбранного ветвления согласно команде ветвления. При операции переключения контекста в слове состояния программы сохраняется текущее показание счетчика команд вместе с другой информацией о состоянии выполняемой программы (такой как коды условий), и загружается новое показание счетчика команд, указывающее на команду нового программного модуля для выполнения. Операция выбранного ветвления выполняется, чтобы позволить программе принимать решения, или чтобы выполнять программный цикл путем загрузки в счетчик 5061 команд результата команды ветвления.
[0087] Обычно для выборки команд от имени процессора 5026 применяется блок 5055 выборки команд. Блок выборки осуществляет выборку "очередных последовательных команд", целевых команд из команд выбранного ветвления или первых команд программы, следующей за переключением контекста. В современных блоках выборки команд часто применяют методы выборки с целью предварительной выборки команд по предположению, исходя из вероятности использования команд, предварительная выборка которых была осуществлена. Например, блок выборки может осуществлять выборку 16 байтов команды, содержащих очередную последовательную команду, и дополнительных байтов следующих далее команд.
[0088] Затем вызванные команды выполняются процессором 5026. В одном из вариантов осуществления вызванная команда(-ы) передаются блоку 5056 диспетчеризации блока выборки. Блок диспетчеризации декодирует команду(-ы) и пересылает информацию о декодированной команде(-ах) соответствующим блокам 5057, 5058, 5060. Блок 5057 выполнения обычно принимает информацию о декодированных арифметических командах от блока 5055 выборки команд и выполняет арифметические операции с операндами в соответствии с содержащимся в команде кодом операции. Операнды предоставляются блоку 5057 выполнения предпочтительно из памяти 5025, структурированных регистров 5059 или из непосредственного поля выполняемой команды. Сохраненные результаты выполнения хранятся в памяти 5025, регистрах 5059 или в другом машинном аппаратном обеспечении (таком как управляющие регистры, регистры PSW и т.п.).
[0089] Процессор 5026, как правило, имеет один или несколько блоков 5057, 5058, 5060, выполнения функции команды. Как показано на ФИГ. 12А, блок 5057 выполнения, посредством интерфейсной логической схемы 5071, может поддерживать связь со структурированными общими регистрами 5059, блоком 5056 декодирования/диспетчеризации, блоком 5060 загрузки/сохранения и другими процессорными блоками 5065. В блоке 5057 выполнения может применяться несколько регистровых схем 5067, 5068, 5069 для хранения информации, с которой будет работать арифметическое логическое устройство (ALU) 5066. ALU выполняет арифметические операции, такие как сложение, вычитание, умножение и деление, а также логические функции, такие как И, ИЛИ и исключающее ИЛИ, поворот и смещение. ALU предпочтительно поддерживает зависящие от конструкции специализированные операции. В других схемах могут обеспечиваться другие структурированные средства 5072, включающие, например, коды условия и логическую схему поддержки восстановления. Обычно результат операции ALU хранится в схеме 5070 выходного регистра, из которой он может пересылаться целому ряду других функций обработки. Хотя существует множество конструкций процессоров, настоящее описание имеет целью лишь обеспечить понимание одного из вариантов осуществления.
[0090] Например, команда сложения (ADD) выполняется блоком 5057 выполнения, обладающим арифметическими и логическими функциональными возможностями, а, например, команда с плавающей точкой выполняется блоком вычислений с плавающей точкой, обладающим специализированными возможностями работы с плавающей точкой. Блок выполнения предпочтительно работает с указанными командой операндами путем выполнения заданной кодом операции функции применительно к операндам. Например, команда сложения может выполняться блоком 5057 выполнения применительно к операндам, обнаруженным в двух регистрах 5059, указанных в регистровых полях команды.
[0091] Блок 5057 выполнения выполняет арифметическое сложение двух операндов и сохраняет результат в третьем операнде, которым может являться третий регистр или один из двух исходных регистров. Блок выполнения предпочтительно использует арифметическое логическое устройство (ALU) 5066, способное выполнять ряд логических функций, таких как смещение, поворот. И, ИЛИ и исключающее ИЛИ, а также ряд алгебраических функций, включая любые из следующих функций: сложение, вычитание, умножение, деление. Некоторые ALU 5066 рассчитаны на скалярные операции, а некоторые - на операции с плавающей точкой. В зависимости от архитектуры данные могут иметь обратный порядок следования байтов (когда наименьший значимый байт соответствует старшему байтовому адресу) или прямой порядок следования байтов (когда наименьший значимый байт соответствует младшему байтовому адресу). В системе IBM z/Architecture используется обратный порядок следования байтов. В зависимости от архитектуры поля чисел со знаком могут быть представлены в виде прямого кода, дополнения до единицы или дополнения до двух. Число в форме дополнения до двух выгодно в том смысле, что ALU не требуется поддерживать возможность вычитания, поскольку при отрицательной или положительной величине дополнения до двух в ALU требуется только сложение. Числа обычно описаны в сокращенном виде, в котором 12-разрядное поле определяет адрес блока из 4096 байтов и обычно описано, например, в виде 4-х килобайтового блока.
[0092] Как показано на ФИГ.12Б, информация, содержащаяся в команде ветвления, для выполнения команды ветвления обычно передается блоку 5058 ветвления, в котором часто применяется алгоритм предсказания ветвления, такой как таблица 5082 предыстории ветвления, для предсказания исхода ветвления до завершения других условных операций. Целевой объект текущей команды ветвления вызывается и выполняется по предположению до завершения условных операций. Когда условные операции завершены, выполненные по предположению команды ветвления завершаются или отбрасываются, исходя из условной операции и предположенного исхода. Типичная команда ветвления может предусматривать проверку кодов условий и ветвление к целевому адресу, если коды условий отвечают требованию команды ветвления, при этом целевой адрес может вычисляться на основании нескольких чисел, включая, например, числа из регистровых полей или непосредственного поля команды. В блоке 5058 ветвления может применяться ALU 5074, имеющее множество схем 5075, 5076, 5077 входных регистров и схему 5080 выходного регистра. Блок 5058 ветвления, например, может поддерживать связь с общими регистрами 5059, декодировать блок 5056 диспетчеризации или другие схемы 5073.
[0093] Выполнение группы команд может прерываться по ряду причин, включая, например, переключение контекста, инициированное операционной системой, исключительную ситуацию или ошибку в процессе выполнения программы, приводящую к переключению контекста, сигнал прерывания ввода-вывода, приводящий к переключению контекста, или многопоточный режим работы множества программ (в многопоточной среде). Переключение контекста предпочтительно служит для сохранения информации о состоянии выполняемой в данный момент программы и затем для загрузки информации о состоянии другой вызываемой программы. Информация о состоянии может сохраняться, например, в аппаратных регистрах или в памяти. Информация о состоянии предпочтительно содержит показание счетчика команд, указывающее очередную команду для выполнения, коды условий, сведения о транслировании данных памяти и содержимое структурированного регистра. Переключение контекста может осуществляться аппаратными схемами, прикладными программами, программами операционной системы или аппаратно-программным кодом (микрокодом, пикокодом или лицензионным внутренним кодом (LIC) по отдельности или в сочетании).
[0094] Процессор осуществляет доступ к операндам в соответствии с определенными командами способами. Команда может содержать непосредственный операнд, в котором используется значение части команды, может содержать одно или несколько регистровых полей, прямо указывающих регистры общего назначения или регистры особо назначения (например, регистры с плавающей точкой). В команде могут использоваться подразумеваемые регистры, обозначаемые полем кода операции как операнды. В команде могут использоваться ячейки памяти для операндов. Ячейка памяти для операнда может обеспечиваться регистром, непосредственным полем или сочетанием регистров и непосредственного поля, примером чего является средство дальнего смещения на основе системы z/Architecture, в котором команда определяет базовый регистр, индексный регистр и непосредственное поле (поле смещения), которые суммируются с целью получения, например, адреса операнда в памяти. Под ячейкой в данном случае подразумевается ячейка основной памяти (основного запоминающего устройства), если не указано иное.
[0095] Как показано на ФИГ.12В, процессор осуществляет доступ к памяти с использованием блока 5060 загрузки/сохранения. Блок 5060 загрузки/сохранения может выполнять операцию загрузки путем получения адреса целевого операнда в памяти 5053 и загрузки операнда в регистр 5059 или другую ячейку памяти 5053, или может выполнять операцию сохранения путем получения адреса целевого операнда в памяти 5053 и сохранения данных, полученных из регистра 5059 или другой ячейки памяти 5053, в ячейке целевого операнда в памяти 5053. Блок 5060 загрузки/сохранения может действовать по предположению и осуществлять доступ к памяти в последовательности, которая не соответствует последовательности команд, тем не менее, блок 5060 загрузки/сохранения должен обеспечивать для программ видимость выполнения команды по порядку. Блок 5060 загрузки/сохранения может поддерживать связь с общими регистрами 5059, блоком 5056 декодирования/диспетчеризации, интерфейсом 5053 кэша/памяти или другими элементами 5083 и содержит различные регистровые схемы, ALU 5085 и управляющую логику 5090 для вычисления адресов ячеек запоминающего устройства и обеспечения последовательного потока для сохранения порядка следования операций. Некоторые операции могут выполняться не по порядку, но блок загрузки/сохранения обеспечивает функциональные возможности для того, чтобы выполняемые не по порядку операции выглядели для программы выполненными по порядку, как хорошо известно из уровня техники.
[0096] Адреса, которые "видит" прикладная программа, предпочтительно часто именуются виртуальными адресами. Иногда виртуальные адреса именуются "логическими адресами" и "исполнительными адресами". Эти виртуальные адреса являются виртуальными в том смысле, что их перенаправляют в ячейку физической памяти посредством одной из ряда технологий динамической трансляции адреса (DAT), включая без ограничения простое приписывание величины смещения к виртуальному адресу, трансляцию виртуального адреса посредством одной или нескольких таблиц трансляции, которые предпочтительно содержат по меньшей мере таблицу сегментов и таблицу страниц по отдельности или в сочетании, предпочтительно таблицу сегментов, содержащую запись с указанием таблицы страниц. В системе z/Architectwe предусмотрена иерархия трансляции, в которую входит первая таблица региона, вторая таблица региона, третья таблица региона, таблица сегментов и необязательная таблица страниц. Эффективность трансляции адресов часто повышается за счет использования буфера быстрого трансляции адреса (TLB), который содержит записи, отображающие виртуальный адрес соответствующей ячейки физической памяти. Записи создаются, когда DAT транслирует виртуальный адрес с использованием таблиц перевода. Затем при последующем использовании виртуального адреса может использоваться запись из быстродействующего TLB вместо доступа к таблицам медленной последовательной трансляции. Содержимым TLB может управлять ряд алгоритмов замещения, включая алгоритм замещения наиболее давней по использованию страницы (LRU).
[0097] В том случае, когда процессором является процессор мультипроцессорной системы, каждый процессор отвечает за сохранение совместно используемых ресурсов, таких как средства ввода-вывода, кэши, TLB и память, взаимно заблокированных для обеспечения непротиворечивости. Обычно для поддержания непротиворечивости кэшей используются технологии "слежения". Для облегчения совместного использования каждая строка кэша может помечаться в среде слежения как находящаяся в одном из следующих состояний, включающих состояние совместного использования, состояние монопольного использования, измененное состояние, недействительное состояние и т.п.
[0098] Блоки 5054 ввода-вывода (ФИГ. 11) обеспечивают процессор средствами подключения к периферийным устройствам, включая, например, накопители на магнитной ленте, накопители на дисках, принтеры, дисплеи и сети. Блоки ввода-вывода представлены в компьютерной программе программными драйверами. В мэйнфреймах, таких как System z® производства IBM®, блоки ввода-вывода мэйнфрейма являются адаптерами каналов и адаптерами открытых систем и обеспечивают связь между операционной системой и периферийными устройствами.
[0099] Кроме того, один или несколько аспектов настоящего изобретения могут выгодно применяться в вычислительных средах других типов. В качестве примера, среда может содержать эмулятор (например, программные или другие механизмы эмуляции), в которых эмулируется конкретная архитектура (включая, например, выполнение команд, структурированные функции, такие как трансляция адреса, и структурированные регистры) или ее сокращенная версия (например, в собственной компьютерной системе, имеющей процессор и память). В такой среде за счет одной или нескольких эмулирующих функций эмулятора могут быть реализованы один или несколько аспектов настоящего изобретения, несмотря на то, что компьютер, в котором выполняется эмулятор, может иметь архитектуру, отличающуюся от эмулируемых возможностей. В качестве одного из примеров в режиме эмуляции декодируется конкретная эмулируемая команда или операция, и создается соответствующая эмулирующая функция с целью реализации отдельной команды или операции.
[00100] В эмулирующей среде хост-компьютер содержит, например, память для хранения команд и данных; блок выборки команд для выборки команд из памяти и необязательно локальной буферизации выбранных команд; блок декодирования команд для приема команд от блока выборки команд и определения типа команд, которые были выбраны; и блок выполнения команд для выполнения команд. Выполнение может предусматривать загрузку данных из памяти в регистр; сохранение данных из регистра в памяти; или выполнение арифметической или логической операции какого-либо типа, определяемой блоком декодирования. В одном из примеров каждый блок реализован посредством программного обеспечения. Например, выполняемые блоками операции реализованы в виде одной или нескольких подпрограмм в программном обеспечении эмулятора.
[00101] В частности, в мэйнфрейме структурированные машинные команды используются программаторами, обычно современными программаторами на языке "С" посредством компилирующего приложения. Эти команды, хранящиеся в запоминающей среде, могут выполняться в собственной системе команд сервера IBM® на основе z/Architecture® или в качестве альтернативы в машинах на основе других архитектур. Они могут эмулироваться в существующих и будущих серверах на основе мэйнфреймов IBM® и в других машинах IBM® (например, серверах Power Systems и серверах System x®). Они могут выполняться в операционной системе Linux разнообразными машинами, использующими аппаратное обеспечение производства IBM®, Intel®, AMD™ и других компаний. Помимо выполнения этим аппаратным обеспечением на основе Z/Architecture®, может использоваться Linux, а также машины, использующие эмуляцию Hercules, UMX или FSI (Fundamental Software, Inc), когда выполнение обычно происходит в режиме эмуляции. В режиме эмуляции эмулирующее программное обеспечение выполняется собственным процессором, эмулирующим архитектуру эмулируемого процессора.
[00102] Собственный процессор обычно выполняет эмулирующее программное обеспечение, представляющее собой аппаратно-программное обеспечение или собственную операционную систему для эмуляции эмулируемого процессора. Эмулирующее программное обеспечение отвечает за выборку и выполнение команд архитектуры эмулируемого процессора. Эмулирующее программное обеспечение поддерживает счетчик эмулируемых команд для слежения за границами команд. Эмулирующее программное обеспечение может осуществлять выборку одной или нескольких эмулируемых машинных команд за один раз и транслирование одной или нескольких эмулируемых машинных команд в соответствующую группу собственных машинных команд для выполнения собственным процессором. Эти транслированные команды могут помещаться в кэш, что позволяет ускорять транслирование. Тем не менее, эмулирующее программное обеспечение должно поддерживать правила архитектуры эмулируемого процессора с тем, чтобы обеспечивать правильную работу операционных систем и приложений, написанных для эмулируемого процессора. Кроме того, эмулирующее программное обеспечение должно обеспечивать ресурсы, указанные архитектурой эмулируемого процессора, включая без ограничения управляющие регистры, регистры общего назначения, регистры с плавающей точкой, функцию динамической трансляции адреса, включая таблицы сегментов и таблицы страниц, например, механизмы прерывания, механизмы переключения контекста, часы истинного времени (TOD) и структурированные интерфейсы с подсистемами ввода-вывода с тем, чтобы операционная система или прикладная программа, рассчитанная на работу в эмулируемом процессоре, могла быть запущена в собственном процессоре, имеющем эмулирующее программное обеспечение.
[00103] Конкретная эмулируемая команда декодируется, и вызывается подпрограмма для выполнения функции отдельной команды. Функция эмулирующего программного обеспечения, эмулирующая функцию эмулируемого процессора, реализуется, в подпрограмме или драйвере на языке "С" или каким-либо другим способом обеспечения драйвера для конкретного аппаратного обеспечения, доступным для специалистов в данной области техники, ознакомившихся в описанием предпочтительного варианта осуществления. В различных патентах, в которых предложена эмуляция программного и аппаратного обеспечения, включая без ограничения патент US 5551013 под названием "Multiprocessor for hardware emulation", выданный на имя Beausoleil и др., патент US 6009261 под названием "Preprocessing of stored target routines for emulating incompatible instructions on a target processor", выданный на имя Scalzi и др.; патент US 5574873 под названием "Decoding guest instruction to directly access emulation routines that emulate the guest instructions", выданный на имя Davidian и др.; патент US 6308255 под названием "Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system", выданный на имя Gorishek и др.; патент US 6463582 под названием "Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method", выданный на имя Lethin и др.; патент US 5790825 под названием "Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions", выданный на имя Eric Traut; каждый из которых включен в данное описание во всей их полноте, и многие другие, проиллюстрированные разнообразные известные способы эмуляции формата команд, структурированного для отличающейся машины, в целевой машине, доступные для специалистов в данной области техники.
[00104] На ФИГ.13 проиллюстрирован один из примеров известной из техники эмулирующей компьютерной хост-системы 5092, которая эмулирует компьютерную хост-систему 5000', имеющую хост-архитектуру. Хост-процессором (ЦП) 5091 в компьютерной хост-системе 5092 эмуляции является хост-процессор (или виртуальный хост-процессор) эмуляции, представляющий собой процессор 5093 эмуляции со структурой собственных команд, отличающейся от структуры команд процессора 5091 хост-компьютера 5000'. Компьютерная хост-система 5092 эмуляции имеет память 5094, доступную для процессора 5093 эмуляции. В примере осуществления память 5094 разделена на память 5096 хост-компьютера и память 5097 программ эмуляции. Память 5096 хост-компьютера доступна для программ эмулируемого хост-компьютера 5092 в зависимости от архитектуры хост-компьютера. Процессор 5093 эмуляции выполняет собственные команды структурированной системы команд, структура которых отличается от структуры команд эмулируемого процессора 5091 и которые извлекаются из памяти 5097 программ эмуляции, и может осуществлять выборку хост-команды для выполнения из программы в памяти 5096 хост-компьютера путем применения одной или нескольких команд из программы контроля последовательности и выборки/декодирования (Sequence & Access/Decode), которая может декодировать выбранную хост-команду(-ы) и определять программу выполнения собственных команд эмуляции функции выбранной хост-команды. Другие средства, которые предусмотрены в архитектуре компьютерной хост-системы 5000', могут эмулироваться программами структурированных средств (Architected Facilities Routines), включая такие средства, как, например, регистры общего назначения, управляющие регистры, поддержка подсистемы динамической трансляции адреса и ввода-вывода и кэш-память процессора. Программы эмуляции также могут использовать функции, доступные в процессоре 5093 эмуляции (такие как общие регистры и динамическое транслирование виртуальных адресов) для повышения производительности программ эмуляции. Также может быть предусмотрено особое программное обеспечение и механизмы разгрузки, облегчающие процессору 5093 эмуляцию функции хост-компьютера 5000'.
[00105] Используемая в описании терминология имеет целью описание лишь частных вариантов осуществления, а не ограничение настоящего изобретения. Подразумевается, что используемые в описании формы единственного числа включают также формы множественного числа, если из контекста ясно не следует иное. Дополнительно подразумевается, что термины "содержит" и/или "содержащий", используемые в описании, означают присутствие указанных признаков, чисел, шагов, операций, элементов и/или компонентов, но не исключают присутствие или добавление одного или нескольких других признаков, чисел, шагов, операций, элементов, компонентов и/или их групп.
[00106] Подразумевается, что соответствующие структуры, материалы, действия и эквиваленты всех элементов "средство или шаг плюс функция" следующей далее формулы изобретения, если таковые существуют, включают любую структуру, материал или действие для выполнения функции в сочетании с другими конкретно заявленными средствами. Описание одного или более из аспектов настоящего изобретения представлено в качестве иллюстрации и не имеет целью исчерпать или ограничить изобретение раскрытой формой. Для специалистов в данной области техники бесспорны многочисленные модификации и разновидности без отступления от сути и объема настоящего изобретения. Выбранный и описанный вариант осуществления имеет целью наилучшим образом пояснить принципы настоящего изобретения и его практическое применение, а также позволить специалистам в данной области техники понять различные варианты осуществления настоящего изобретения с различными модификациями, рассчитанными на конкретное применение.
Глава 23. Векторные строковые команды
Векторное строковое средство
Команды
Если не определено иное, все операнды являются векторно-регистровыми операндами. "V" в синтаксисе ассемблера обозначает векторный операнд.
Название Обозначение Характеристики Код операции Страница
VECTOR FIND ANY EQUAL VFAE VRR-b C* VF o9 SP Dv E782 23-1
VECTOR FIND ELEMENT EQUAL VFEE VRR-b C* VF о9 SP Dv E780 23-2
VECTOR RND ELEMENT NOT EQUAL VFENE VRR-b C* VF o9 SP Dv E781 23-3
VECTOR STRING RANGE COMPARE VSTRC VRR-d C* VF о9 SP Dv E78A 23-4
VECTOR FIND ANY EQUAL (найти любые одинаковые значения вектора)
Figure 00000001
При продвижении слева направо, каждый беззнаковый целый двоичный элемент второго операнда сравнивается на совпадение с каждым беззнаковым целым двоичным элементом третьего операнда, и опционально с нулем, если установлен флаг поиска нуля (ZS) в поле М5.
Если флаг типа результата (RT) в поле М5 равен нулю, то для каждого элемента во втором операнде, который совпадает с любым элементом в третьем операнде, или опционально с нулем, двоичные разряды соответствующего элемента в первом операнде устанавливаются в единицу, иначе они устанавливаются в нуль.
Если флаг типа результата (RT) в поле M5 равен единице, то индекс байта крайнего левого элемента во втором операнде, который совпадает с элементом в третьем операнде, или с нулем, сохраняется в байте семь первого операнда.
Каждая команда имеет раздел "Расширенные обозначения", который описывает рекомендуемые расширенные мнемонические обозначения и соответствующий им синтаксис ассемблера машины.
Примечание о программировании: Для всех команд, которые опционально устанавливают код состояния, производительность может быть снижена, если код состояния установлен.
Если флаг типа результата (RT) в поле М5 равен единице, и не обнаружены одинаковые байты или равные нулю, если установлен флаг поиска нуля, индекс, равный числу байт в векторе, сохраняется в байте семь первого операнда.
Поле М4 определяет директиву размера элемента (ES, element size,). Директива ES определяет размер элементов в операндах векторного регистра. Если определено зарезервированное значение, обнаруживается исключение определения.
0 - байт
1 - полуслово
2 - слово
3-15 - зарезервированы
Поле М5 имеет следующий формат:
Figure 00000002
Биты поля М5 определяются следующим образом:
- Тип результата (Result Type, RT): Если нуль, каждый результирующий элемент является маской сравнений всех диапазонов по этому элементу. Если один, индекс 15 байта сохраняется в байте семь первого операнда, а во всех других элементах сохраняются нули.
- Поиск нуля (Zero Search, ZS): Если один, каждый элемент второго операнда сравнивается также с нулем.
- Установка кода состояния (Condition Code, CC): Если нуль, код состояния не 20 устанавливается и остается неизменным. Если один, код состояния устанавливается, как определено в следующем разделе.
Особые состояния
Обнаруживается исключение определения и не предпринимаются другие действия, если происходит что-либо из следующего:
1. Поле М4 содержит значение 3-15.
2. Бит 0 поля М5 не нуль.
Результирующий код состояния:
Если флаг СС нуль, код остается неизменным.
Если флаг СС один, код устанавливается следующим образом:
0 Если бит ZS установлен, не было совпадений в элементе с низшим индексом, чем нуль во втором операнде.
1 Некоторые элементы второго операнда совпадают по меньшей мере с одним элементом в третьем операнде.
2 Все элементы второго операнда совпали по меньшей мере с одним элементом в третьем операнде.
3 Ни один из элементов во втором операнде не совпадает с какими-либо элементами в третьем операнде.
Программные исключения:
- Данные с DXC FE, векторный регистр
- Операция, если средство векторного расширения не установлено
- Определение (зарезервированное значение ES)
- Ограничение транзакции
Расширенные обозначения
VFAEB V1, V2, V3, M5 VFAE V1, V2, V3, 0, M5
VFAEH V1, V2, V3, M5 VFAE V1, V2, V3, 1, M5
VFAEF V1, V2, V3, M5 VFAE V1, V2, V3, 0, (M5|X'1')
VFAEHS V1, V2, V3, M5 VFAE V1, V2, V3, 1, (M5|X'1')
VFAEFS V1, V2, V3, M5 VFAE V1, V2, V3, 2, (M5|X'1')
VFAEZB V1, V2, V3, M5 VFAE V1, V2, V3, 0, (M5|X'2')
VFAEZH V1, V2, V3, M5 VFAE V1, V2, V3, 1, (M5|X'2')
VFAEZF V1, V2, V3, M5 VFAE V1, V2, V3, 2, (M5|X'2')
VFAEZBS V1, V2, V3, M5 VFAE V1, V2, V3, 0, (M5|X'3')
VFAEZHS V1, V2, V3, M5 VFAE V1, V2, V3, 1, (M5|X'3')
VFAEZFS V1, V2, V3, M5 VFAE V1, V2, V3, 2, (M5|X'3')
VECTOR FIND ELEMENT EQUAL (найти одинаковый соответствующий элемент вектора)
Figure 00000003
При продвижении слева направо, беззнаковые целые двоичные элементы второго операнда сравнивается с соответствующими беззнаковыми целыми двоичными элементами третьего операнда. Если два элемента равны, индекс байта первого байта самого левого равного элемента помещается в байт семь первого операнда. В оставшихся байтах первого операнда сохраняются нули. Если не обнаружены одинаковые байты или равные нулю, если установлен флаг сравнения с нулем, индекс, равный числу байт в векторе, сохраняется в байте семь первого операнда. В оставшихся байтах сохраняются нули.
Если бит поиска нуля (ZS) установлен в поле М5, то каждый элемент во втором операнде сравнивается также на равенство с нулем. Если нулевой элемент найден во втором операнде до того, как будут найдены любые другие равные элементы второго и третьего операндов, индекс байта первого байта элемента, найденного равным нулю, сохраняется в байте семь первого операнда, а во всех других байтовых ячейках сохраняются нули. Если флаг установки кода состояния (СС) равен одному, то код состояния устанавливается в нуль.
Поле М4 определяет директиву размера элемента (ES). Директива ES определяет размер элементов в операндах векторного регистра. Если определено зарезервированное значение, обнаруживается исключение определения.
0 - байт
1 - полуслово
2 - слово
3-15 - зарезервированы
Поле М5 имеет следующий формат:
Figure 00000004
Биты поля М5 определяются следующим образом:
- Зарезервировано: Биты 0-1 зарезервированы и должны быть равны нулю. Иначе, обнаруживается исключение определения.
- Поиск нуля (Zero Search, ZS): Если один, каждый элемент второго операнда сравнивается также с нулем.
- Установка кода состояния (Condition Code, CC): Если нуль, код состояния остается неизменным. Если один, код состояния устанавливается, как определено в следующем разделе.
Особые состояния
Обнаруживается исключение определения и не предпринимаются другие действия, если происходит что-либо из следующего:
1. Поле М4 содержит значение 3-15.
2. Биты 0-1 поля М5 не нулевые.
Результирующий код состояния:
Если бит 3 поля М5 установлен в единицу, код устанавливается следующим образом:
0 Если бит сравнения с нулем установлен, сравнение обнаружило нулевой элемент во втором операнде в элементе с меньшим индексом, чем какие-либо сравнения на равенство.
1 Сравнение обнаружило совпадение между вторым и третьим операндами в некотором элементе. Если установлен бит сравнения с нулем, совпадение произошло в элементе с индексом, меньшим или равным элементу сравнения с нулем.
2 --
3 Равные элементы не обнаружены.
Если бит 3 поля М5 нуль, код остается неизменным.
Программные исключения:
- Данные с DXC FE, векторный регистр
- Операция, если средство векторного расширения не установлено
- Определение (зарезервированное значение ES)
- Ограничение транзакции
Расширенные обозначения:
VFEE V1, V2, V3, M5 VFEE V1, V2, V3, 0, M5
VFEEH V1, V2, V3, M5 VFEE V1, V2, V3, 1, M5
VFEEF V1, V2, V3, M5 VFEE V1, V2, V3, 0, (M5|X'1')
VFEEHS V1, V2, V3, M5 VFEE V1, V2, V3, 1, (M5|X'1')
VFEEFS V1, V2, V3, M5 VFEE V1, V2, V3, 2, (M5|X'1')
VFEEZB V1, V2, V3, M5 VFEE V1, V2, V3, 0, (M5|X'2')
VFEEZH V1, V2, V3, M5 VFEE V1, V2, V3, 1, (M5|X'2')
VFEEZF V1, V2, V3, M5 VFEE V1, V2, V3, 2, (M5|X'2')
VFEEZBS V1, V2, V3, M5 VFEE V1, V2, V3, 0, (M5|X'3')
VFEEZHS V1, V2, V3, M5 VFEE V1, V2, V3, 1, (М5|X'3')
VFEEZFS V1, V2, V3, M5 VFEE V1, V2, V3, 2, (M5|X'3')
Примечания о программировании:
1. Индекс байта всегда сохраняется в первом операнде для любого размера элемента. Например, если размер элемента установлен равным полуслову, и полуслово со 2 индексом оказалось равным, то будет сохраняться индекс байта 4.
2. Третий операнд не должен содержать элементов с нулевым значением. Если третий операнд не содержит нуля, и он совпадает с нулевым элементом во втором операнде перед любыми другими сравнениями на равенство, код состояния устанавливается в единицу безотносительно к установке бита сравнения с нулем.
VECTOR FIND ELEMENT NOT EQUAL (найти неодинаковый соответствующий элемент вектора)
Figure 00000005
При продвижении слева направо, беззнаковые целые двоичные элементы второго операнда сравнивается с соответствующими беззнаковыми целыми двоичными элементами третьего операнда. Если два элемента не равны, индекс байта крайнего левого неравного элемента помещается в байт семь первого операнда, а во все другие байты сохраняются нули. Если бит установки кода состояния (СС) в поле М5 установлен в единицу, код состояния устанавливается так, чтобы обозначать, который операнд был больше. Если все элементы были равны, то индекс байта, равный размеру вектора, помещается в байт семь первого операнда, а во все другие байтовые ячейки помещаются нули. Если бит СС равен единице, устанавливается код состояния три.
Если бит поиска нуля (ZS) установлен в поле М5, каждый элемент во втором операнде сравнивается также на равенство с нулем. Если нулевой элемент найден во втором операнде до того, как будут найдены любые другие неравные элементы второго операнда, индекс байта первого байта элемента, найденного равным нулю, сохраняется в байте семь первого операнда. Во всех других байтах сохраняются нули, и устанавливается код состояния 0.
Поле М4 определяет директиву размера элемента (ES). Директива ES определяет размер элементов в операндах векторного регистра. Если определено зарезервированное значение, обнаруживается исключение определения.
0 - байт
1 - полуслово
2 - слово
3-15 - зарезервированы
Поле М5 имеет следующий формат:
Figure 00000006
Биты поля М5 определяются следующим образом:
- Поиск нуля (Zero Search, ZS): Если один, каждый элемент второго операнда сравнивается также с нулем.
- Установка кода состояния (Condition Code, CC): Если нуль, код состояния не устанавливается и остается неизменным. Если один, код состояния устанавливается, как определено в следующем разделе.
Особые состояния
Обнаруживается исключение определения и не предпринимаются другие действия, если происходит что-либо из следующего:
1. Поле М4 содержит значение 3-15.
2. Биты 0-1 поля М5 не нулевые. Результирующий код состояния:
Если бит 3 поля М5 установлен в единицу, код устанавливается следующим образом:
0 Если бит сравнения с нулем установлен, сравнение обнаружило нулевой элемент в обоих операндах в элементе с меньшим индексом, чем какие-либо сравнения на неравенство.
1 Было обнаружено несовпадение элементов, и элемент в VR2 меньше, чем элемент в VR3
2 Было обнаружено несовпадение элементов, и элемент в VR2 больше, чем элемент в VR3
3 Все элементы оказались равны, и, если бит сравнения с нулем установлен, не были обнаружены нулевые элементы во втором операнде.
Если бит 3 поля М5 нуль, код остается неизменным.
Программные исключения:
- Данные с DXC FE, векторный регистр
- Операция, если средство векторного расширения не установлено
- Определение (зарезервированное значение ES)
- Ограничение транзакции
Расширенные обозначения:
VFENEB V1, V2, V3, M5 VFENE V1, V2, V3, 0, M5
VFENEH V1, V2, V3, M5 VFENE V1, V2, V3, 1, M5
VFENEF V1, V2, V3, M5 VFENE V1, V2, V3, 2, M5
VFENEBS V1, V2, V3, M5 VFENE V1, V2, V3, 0, (M5|X'1')
VFENEHS V1, V2, V3, M5 VFENE V1, V2, V3, 1, (M5|X'1')
VFENEFS V1, V2, V3, M5 VFENE V1, V2, V3, 2, (M5|X'1')
VFENEZB V1, V2, V3, M5 VFENE V1, V2, V3, 0, (M5|X'2')
VFENEZH V1, V2, V3, M5 VFENE V1, V2, V3, 1, (M5|X'2')
VFENEZF V1, V2, V3, M5 VFENE V1, V2, V3, 2, (M5|X'2')
VFENEZBS V1, V2, V3, M5 VFENE V1, V2, V3, 0, (M5|X'3')
VFENEZHS V1, V2, V3, M5 VFENE V1, V2, V3, 1, (M5|X'3')
VFENEZFS V1, V2, V3, M5 VFENE V1, V2, V3, 2, (M5|X'3')
VECTOR STRING RANGE COMPARE (сравнить векторы в диапазоне строк)
Figure 00000007
При продвижении слева направо, беззнаковые целые двоичные элементы второго операнда сравнивается с диапазонами значений, определенных четно-нечетными парами элементов в третьем и четвертом операндах. Комбинированные с контрольными значениями из четвертого операнда определяют диапазон сравнений для выполнения. Если элемент совпадает с любым из диапазонов, определенных третьим и четвертым операндами, это считается совпадением.
Если флаг типа результата (RT) в поле М6 равен нулю, двоичные разряды элемента в первом операнде, соответствующие элементу, с которым он сравнивается, во втором операнде, устанавливаются в единицу, если элемент совпадает с любым из диапазонов, иначе же они устанавливаются в нуль.
Если флаг типа результата (RT) в поле М6 установлен в единицу, индекс байта первого элемента во втором операнде, который совпадает с любым из диапазонов определенных вторым и третьим операндами, или сравнением с нулем, если флаг ZS установлен в единицу, помещается в байт семь первого операнда, а в оставшиеся байты сохраняются нули. Если нет совпадений элементов, то индекс, равный числу байт в векторе, помещается в байт семь первого операнда, а в оставшиеся байты сохраняются нули.
Флаг поиска нуля (ZS) в поле М6, будучи установлен в единицу, добавит сравнение с нулем элементов второго операнда по диапазонам, заданным третьим и четвертым операндами. Если сравнение с нулем в элементе с низшим индексом, чем любое другое истинное сравнение, то код состояния устанавливается в нуль.
Операнды содержат элементы размера, заданного директивой размера элемента (Element Size, ES) в поле M5.
Элементы четвертого операнда имеют следующий формат:
Если ES равно 0:
Figure 00000008
Если ES равно 1:
Figure 00000009
Если ES равно 2:
Figure 00000010
Биты в элементах четвертого операнда определяются следующим образом:
- Равно (Equal, EQ): Если единица, выполняется сравнение на равенство.
- Больше чем (Greater Than, GT): Если единица, выполняется сравнение по соотношению больше.
- Меньше чем (Less Than, LT): Если единица, выполняется сравнение по соотношению меньше.
- Все другие биты зарезервированы и должны быть равны нулю для обеспечения совместимости в будущем.
Директивные биты могут использоваться в любом сочетании. Если ни один бит не установлен, сравнение всегда будет выдавать ложный результат. Если все биты установлены, сравнение всегда будет выдавать истинный результат.
Поле М5 определяет директиву размера элемента (ES). Директива ES определяет размер элементов в операндах векторного регистра. Если определено зарезервированное значение, обнаруживается исключение определения.
0 - байт
1 - полуслово
2 - слово
3-15 - зарезервированы
Поле М6 имеет следующий формат:
Figure 00000011
Биты поля М6 определяются следующим образом:
- Инвертировать результат (Invert Result, IN): Если нуль, сравнение происходит с парами значений в управляющем векторе. Если один, результат пар сравнений в 15 диапазонах инвертируется.
- Тип результата (Result Type, RT): Если нуль, каждый результирующий элемент является маской сравнений всех диапазонов по этому элементу. Если один, индекс сохраняется в байте семь первого операнда. В оставшихся байтах сохраняются нули.
- Поиск нуля (Zero Search, ZS): Если один, каждый элемент второго операнда 20 сравнивается также с нулем.
- Установка кода состояния (Condition Code, CC): Если нуль, код состояния не устанавливается и остается неизменным. Если один, код состояния устанавливается, как определено в следующем разделе.
Особые состояния
Обнаруживается исключение определения и не предпринимаются другие действия, если происходит что-либо из следующего:
1. Поле М4 содержит значение 3-15.
Результирующий код состояния:
0 Если ZS=1 и найден нуль в элементе с низшим индексом, чем какое-либо сравнение
1 Найдено сравнение
2 --
3 Не найдено сравнение
Программные исключения:
- Данные с DXC FE, векторный регистр
- Операция, если средство векторного расширения не установлено
- Определение (зарезервированное значение ES)
- Ограничение транзакции
Расширенные обозначения:
VSTRCB V1, V2, V3, V4, M6 VSTRC V1, V2, V3, V4, 0 M6
VSTRCH V1, V2, V3, V4, M6 VSTRC V1, V2, V3, V4, 1, M6
VSTRCF V1, V2, V3, V4, M6 VSTRC V1, V2, V3, V4, 2, М6
VSTRCBS V1, V2, V3, V4, M6 VSTRC V1, V2, V3, V4, 0, (М6|X'1')
VSTRCHS V1, V2, V3, V4, M6 VSTRC V1, V2, V3 V4, 1, (М6|X'1')
VSTRCFS V1, V2, V3, V4, M6 VSTRC V1, V2, V3, V4, 2, (М6|X'1')
VSTRCZB V1, V2, V3, V4, M6 VSTRC V1, V2, V3, V4, 0, (M6|X'2')
VSTRCZH V1, V2, V3, V4, M6 VSTRC V1, V2, V3, V4, 1 (М6|X'2')
VSTRCZF V1, V2, V3, V4, M6 VSTRC V1, V2, V3, V4, 2, (M6|X'2')
VSTRCZBS V1, V2, V3, V4, M6 VSTRC V1, V2, V3, V4, 0, (M6|X'3')
VSTRCZHS V1, V2, V3, V4, M6 VSTRC V1, V2, V3, V4, 1, (M6|X'3')
VSTRCZFS V1, V2, V3, V4, M6 VSTRC V1, V2, V3, V4, 2, (M6|X'3')
Figure 00000012
LOAD COUNT TO BLOCK BOUNDARY (загрузить расстояние (счет) до границы блока)
Figure 00000013
32-битное двоичное беззнаковое целое, содержащее число бит, которое возможно загрузить от местонахождения второго операнда без пересечения заданной границы блока, ограниченное шестнадцатью, помещается в первый операнд.
Смещение рассматривается как 12-битное беззнаковое целое. Адрес второго операнда не используется для адресации данных.
Поле М3 определяет код, который используется для сообщения ЦПУ о размере границы блока для вычисления количества возможных загружаемых байт. Если определено зарезервированное значение, то обнаруживается исключение определения.
Код Граница
0 64 байта
1 128 байт
2 256 байт
3 512 байт
4 1 кбайт
5 2 кбайта
6 4 кбайт
7-15 зарезервированы
Результирующий код состояния:
0 Операнд один равен шестнадцати
1 --
2 --
3 Операнд один меньше шестнадцати
Результирующий код состояния:
Программные исключения:
- Операция, если средство векторного расширения не установлено
- Определение
Примечание о программировании: Ожидается, что LOAD COUNT TO BLOCK BOUNDARY будет использоваться совместно с VECTOR LOAD TO BLOCK BOUNDARY для определения количества байт, которые были загружены.
VECTOR LOAD GR FROM VR ELEMENT (загрузить вектор в регистр общего назначения из элемента векторного регистра)
Figure 00000014
Элемент третьего операнда 20 размера, заданного значением ES в поле М4, и обозначенного адресом второго операнда, помещается в ячейку первого операнда. Третий операнд является векторным регистром. Первый операнд является регистром общего назначения. Если индекс заданный адресом второго операнда, больше, чем элемент с наивысшим номером в третьем операнде, заданного размера элемента, данные в первом операнде
непредсказуемы.
Если элемент векторного регистра меньше, чем двойное слово, элемент выравнивается вправо в 64-битном регистре общего назначения, а оставшиеся биты заполняют нули.
Адрес второго операнда не используется для адресации данных; вместо этого крайние правые 12 бит адреса используются для задания индекса элемента внутри второго операнда.
Поле М4 определяет директиву размера элемента (ES). Директива ES определяет размер элементов в операндах векторного регистра. Если определено зарезервированное значение, обнаруживается исключение определения.
0 - байт
1 - полуслово
2 - слово
3 - двойное слово
4-15 - зарезервированы неизменными.
Результирующий код состояния: Код не изменяется.
Программные исключения:
- Данные с DXC FE, векторный регистр
- Операция, если средство векторного расширения не установлено
- Определение (зарезервированное значение ES)
- Ограничение транзакции
Расширенные обозначения:
VLGVB R1, V3, D2(B2) VLGV R1, V3, D2(B2), 0
VLGVH R1, V3, D2(B2) VLGV R1, V3, D2(B2), 1
VLGVF R1, V3, D2(B2) VLGV R1, V3, D2(B2), 2
VLGVG R1, V3, D2(B2) VLGV R1, V3, D2(B2), 3
VECTOR LOAD TO BLOCK BOUNDARY (загрузить вектор до границы блока)
Figure 00000015
Первый операнд загружается, начиная с элемента байта с нулевым номером, байтами из второго операнда. Если встречается граничное условие, остаток первого операнда непредсказуем. Исключения доступа не обнаруживаются на байтах, которые не загружены.
Смещение для VLBB рассматривается как 12-битное беззнаковое целое.
Поле М3 определяет код, который используется для сообщения ЦПУ о границе блока, до которой следует загрузиться. Если определено зарезервированное значение, обнаруживается исключение определения.
Код Граница
0 64 байта
1 128 байт
2 256 байт
3 512 байт
4 1 кбайт
5 2 кбайт
6 4 кбайт
7 15 зарезервированы
Результирующий код состояния: Код остается неизменным.
Программные исключения:
- Доступ (считывание, операнд 2)
- Данные с DXC FE, векторный регистр
- Операция, если средство векторного расширения не установлено
- Определение (зарезервированный код границы блока)
- Ограничение транзакции
Примечания о программировании:
1. В определенных обстоятельствах данные могут загружаться после границы блока. Однако, это будет происходить только если нет исключений доступа на этих данных.
VECTOR STORE (сохранить вектор)
Figure 00000016
128-битное значение в первом операнде сохраняется в ячейке памяти, определенной вторым операндом. Смещение для VST рассматривается как 12-битное беззнаковое целое.
Результирующий код состояния: Код остается неизменным.
Программные исключения:
- Доступ (запись, операнд 2)
- Данные с DXC FE, векторный регистр
- Операция, если средство векторного расширения не установлено
- Ограничение транзакции
VECTOR STORE WITH LENGTH (сохранить вектор с длиной)
Figure 00000017
При продвижении слева направо, байты из первого операнда сохраняются в ячейке второго операнда. Определенный регистром общего назначения, третий операнд содержит 32-битное беззнаковое целое, содержащее значение, которое представляет байт с наивысшим индексом для сохранения. Если третий операнд содержит значение, большее или равное байту с наивысшим индексом вектора, все байты первого операнда сохраняются.
Исключения доступа обнаруживаются только на байтах, которые сохраняются.
Смещение для VECTOR STORE WITH LENGTH рассматривается как 12-битное беззнаковое целое.
Результирующий код состояния: Код состояния остается неизменным.
Программные исключения:
- Доступ (запись, операнд 2)
- Данные с DXC FE, векторный регистр
- Операция, если средство векторного расширения не установлено
- Ограничение транзакции Описание RXB
Все векторные команды имеют поле в битах 36-40 команды, обозначенное как RXB. Это поле содержит самые старшие биты для всех операндов, обозначенных векторным регистром. Биты для обозначений регистров, не заданных командой, зарезервированы и должны быть установлены в нуль; иначе, программа не сможет совместимо работать в будущем. Самый старший бит приписывается слева к четырехбитному обозначению регистра для создания пятибитного обозначения векторного регистра.
Биты определяются следующим образом:
0. Самый старший бит для обозначения векторного регистра в битах 8-11 команды.
1. Самый старший бит для обозначения векторного регистра в битах 12-15 команды.
2. Самый старший бит для обозначения векторного регистра в битах 16-19 команды.
3. Самый старший бит для обозначения векторного регистра в битах 32-35 команды.
Директива задействования вектора
Векторные регистры и команды могут использоваться, только если директива задействования вектора (бит 46) и директива регистра AFP (бит 45) в управляющем регистре нуль установлены в единицу. Если векторное средство установлено, а векторная команда выполняется без задействования этого набора бит, обнаруживается исключение данных с DXC FE шестнадцатеричным. Если векторное средство не установлено, обнаруживается исключение операции.

Claims (20)

1. Машиночитаемый носитель данных, в котором хранятся команды, считываемые и выполняемые обрабатывающим устройством в центральном процессорном устройстве для выполнения способа, включающего:
получение процессором машинной команды для выполнения, причем машинная команда определена для выполнения компьютером согласно архитектуре компьютера и включает:
по меньшей мере одно поле кода операции для предоставления кода операции, идентифицирующего операцию Load Count to Block Boundary, предназначенную для расчета расстояния от положения в основной памяти до границы блока основной памяти;
поле регистра, используемое для обозначения регистра, причем регистр включает первый операнд; и
по меньшей мере одно поле для указания положения второго операнда, причем второй операнд включает по меньшей мере часть указанного блока основной памяти; и
выполнение машинной команды для выполнения указанной операции Load Count to Block Boundary, включающее:
определение расстояния от положения второго операнда до границы блока основной памяти, включающее подсчет процессором количества байт от положения второго операнда до границы блока основной памяти; и
размещение значения, представляющего указанное расстояние и являющееся результатом выполнения операции Load Count to Block Boundary, в первом операнде.
2. Машиночитаемый носитель данных по п. 1, в котором машинная команда дополнительно включает поле маски, причем поле маски задает границу.
3. Машиночитаемый носитель данных по п. 2, в котором граница блока представляет собой одну границу из множества границ, задаваемых полем маски.
4. Машиночитаемый носитель данных по п. 1, в котором выполнение дополнительно включает динамическое выявление границы, причем динамическое выявление использует заданный тип границы и одну или более характеристик процессора.
5. Машиночитаемый носитель данных по п. 1, в котором положение второго операнда представляет собой начальный адрес в памяти, от которого данные должны быть посчитаны.
6. Машиночитаемый носитель данных по п. 5, в котором выявление расстояния включает выявление конечного адреса, на котором счет должен быть остановлен.
7. Машиночитаемый носитель данных по п. 6, в котором выявление конечного адреса включает вычисление конечного адреса следующим образом:
конечный адрес = минимуму из (начальный адрес + (размер границы - (начальный адрес И НЕ маска границы)), начальный адрес + размер регистра), причем размер границы представляет собой границу, маска границы равна 0 - размер границы, и размер регистра представляет собой длину выбранного регистра.
8. Машиночитаемый носитель данных по п. 6, в котором выявление расстояния включает вычисление значения вычитанием начального адреса от конечного адреса.
9. Машиночитаемый носитель данных по п. 1, в котором выявление расстояния включает вычисление значения следующим образом:
значение = минимуму из (размер регистра, размер границы - (положение второго операнда И НЕ маска границы)), причем размер регистра представляет собой длину выбранного регистра, размер границы представляет собой границу, и маска границы равна 0 - размер границы.
10. Машиночитаемый носитель данных по п. 1, в котором по меньшей мере одно поле включает поле смещения, базовое поле и индексное поле, причем базовое поле и индексное поле для обнаружения регистров общего назначения имеют содержимое для добавления к содержимому поля смещения для формирования адреса второго операнда, где адрес второго операнда обеспечивает положение второго операнда.
11. Компьютерная система для выполнения машинной команды в центральном процессорном устройстве, содержащая:
память; и
процессор, сообщающийся с памятью, причем компьютерная система настроена для осуществления способа, включающего:
получение процессором машинной команды для выполнения, причем машинная команда определена для выполнения компьютером согласно архитектуре компьютера и включает:
по меньшей мере одно поле кода операции для предоставления кода операции, идентифицирующего операцию Load Count to Block Boundary, предназначенную для расчета расстояния от положения в основной памяти до границы блока основной памяти;
поле регистра, используемое для обозначения регистра, причем регистр включает первый операнд; и
по меньшей мере одно поле для указания положения второго операнда, причем второй операнд включает по меньшей мере часть указанного блока основной памяти; и
выполнение машинной команды для выполнения указанной операции Load Count to Block Boundary, включающее:
определение расстояния от положения второго операнда до границы блока основной памяти, включающее подсчет процессором количества байт от положения второго операнда до границы блока основной памяти; и
размещение значения, представляющего указанное расстояние и являющееся результатом выполнения операции Load Count to Block Boundary, в первом операнде.
12. Компьютерная система по п. 11, в которой машинная команда дополнительно включает поле маски, причем поле маски задает границу.
13. Компьютерная система по п. 11, в которой выполнение дополнительно включает динамическое выявление границы, причем динамическое выявление использует заданный тип границы и одну или более характеристик процессора.
14. Компьютерная система по п. 11, в которой положение второго операнда представляет собой начальный адрес в памяти, от которого данные должны быть посчитаны, и в которой выявление расстояния включает выявление конечного адреса, на котором счет должен быть остановлен.
15. Компьютерная система по п. 14, в которой выявление конечного адреса включает вычисление конечного адреса следующим образом:
конечный адрес = минимуму из (начальный адрес + (размер границы - (начальный адрес И НЕ маска границы)), начальный адрес + размер регистра), причем размер границы представляет собой границу, маска границы равна 0 - размер границы, и размер регистра представляет собой длину выбранного регистра.
16. Компьютерная система по п. 14, в которой выявление расстояния включает вычисление значения вычитанием начального адреса от конечного адреса.
17. Компьютерная система по п. 11, в которой выявление расстояния включает вычисление значения следующим образом:
значение = минимуму из (размер регистра, размер границы - (положение второго операнда И НЕ маска границы)), причем размер регистра представляет собой длину выбранного регистра, размер границы представляет собой границу, и маска границы равна 0 - размер границы.
18. Способ выполнения машинной команды в центральном процессорном устройстве, включающий:
получение процессором машинной команды для выполнения, причем машинная команда определена для выполнения компьютером согласно архитектуре компьютера и включает:
по меньшей мере одно поле кода операции для предоставления кода операции, идентифицирующего операцию Load Count to Block Boundary, предназначенную для расчета расстояния от положения в основной памяти до границы блока основной памяти;
поле регистра, используемое для обозначения регистра, причем регистр включает первый операнд; и
по меньшей мере одно поле для указания положения второго операнда, причем второй операнд включает по меньшей мере часть указанного блока основной памяти; и
выполнение машинной команды для выполнения указанной операции Load Count to Block Boundary, включающее:
определение расстояния от положения второго операнда до границы блока основной памяти, включающее подсчет процессором количества байт от положения второго операнда до границы блока основной памяти; и
размещение значения, представляющего указанное расстояние и являющееся результатом выполнения операции Load Count to Block Boundary, в первом операнде.
19. Способ по п. 18, в котором положение второго операнда представляет собой начальный адрес в памяти, от которого данные должны быть посчитаны, и в котором выявление расстояния включает:
выявление конечного адреса, на котором счет должен быть остановлен; и
вычисление значения вычитанием начального адреса от конечного адреса.
20. Способ по п. 18, в котором выявление расстояния включает вычисление значения следующим образом:
значение = минимуму из (размер регистра, размер границы - (положение второго операнда И НЕ маска границы)), причем размер регистра представляет собой длину выбранного регистра, размер границы представляет собой границу, и маска границы равна 0 - размер границы.
RU2012148584/08A 2012-03-15 2012-11-15 Способ выполнения машинной команды, компьютерная система и машиночитаемый носитель, обеспечивающие расчет расстояния от положения в основной памяти до границы блока основной памяти RU2568920C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/421,451 US9710266B2 (en) 2012-03-15 2012-03-15 Instruction to compute the distance to a specified memory boundary
US13/421,451 2012-03-15

Publications (2)

Publication Number Publication Date
RU2012148584A RU2012148584A (ru) 2014-05-20
RU2568920C2 true RU2568920C2 (ru) 2015-11-20

Family

ID=49158812

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2012148584/08A RU2568920C2 (ru) 2012-03-15 2012-11-15 Способ выполнения машинной команды, компьютерная система и машиночитаемый носитель, обеспечивающие расчет расстояния от положения в основной памяти до границы блока основной памяти

Country Status (23)

Country Link
US (2) US9710266B2 (ru)
EP (1) EP2769382B1 (ru)
JP (1) JP6138175B2 (ru)
KR (1) KR101938927B1 (ru)
CN (1) CN104185872B (ru)
BR (1) BR112014022726B1 (ru)
CA (1) CA2867116C (ru)
DK (1) DK2769382T3 (ru)
ES (1) ES2675512T3 (ru)
HK (1) HK1201372A1 (ru)
HR (1) HRP20180982T1 (ru)
HU (1) HUE038236T2 (ru)
IL (1) IL232816A (ru)
LT (1) LT2769382T (ru)
MX (1) MX346496B (ru)
PL (1) PL2769382T3 (ru)
PT (1) PT2769382T (ru)
RU (1) RU2568920C2 (ru)
SG (1) SG11201404822XA (ru)
SI (1) SI2769382T1 (ru)
TW (1) TWI617975B (ru)
WO (1) WO2013136145A1 (ru)
ZA (1) ZA201406611B (ru)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2723228C1 (ru) * 2017-01-19 2020-06-09 Интернэшнл Бизнес Машинз Корпорейшн Условный переход к заданному непрямым образом местоположению

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9478274B1 (en) 2014-05-28 2016-10-25 Emc Corporation Methods and apparatus for multiple memory maps and multiple page caches in tiered memory
US9569127B2 (en) 2014-12-29 2017-02-14 International Business Machines Corporation Computer instructions for limiting access violation reporting when accessing strings and similar data structures
US9703721B2 (en) 2014-12-29 2017-07-11 International Business Machines Corporation Processing page fault exceptions in supervisory software when accessing strings and similar data structures using normal load instructions
US20180054374A1 (en) * 2016-08-19 2018-02-22 Andes Technology Corporation Trace information encoding apparatus, encoding method thereof, and readable computer medium
US20180173631A1 (en) * 2016-12-21 2018-06-21 Qualcomm Incorporated Prefetch mechanisms with non-equal magnitude stride
KR102571629B1 (ko) * 2018-05-23 2023-08-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11347506B1 (en) * 2021-01-15 2022-05-31 Arm Limited Memory copy size determining instruction and data transfer instruction
CN114153753A (zh) * 2021-12-06 2022-03-08 海光信息技术股份有限公司 存储资源分配方法、装置及非暂时性存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6094695A (en) * 1998-03-11 2000-07-25 Texas Instruments Incorporated Storage buffer that dynamically adjusts boundary between two storage areas when one area is full and the other has an empty data register
US6662288B1 (en) * 1998-11-27 2003-12-09 Matsushita Electric Industrial Co., Ltd. Address generating apparatus and motion vector detector
RU2287178C2 (ru) * 2001-05-31 2006-11-10 Арм Лимитед Обработка необработанной операции в системах с множеством наборов команд

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62276668A (ja) 1985-07-31 1987-12-01 Nec Corp ベクトルマスク演算制御ユニツト
US5073864A (en) 1987-02-10 1991-12-17 Davin Computer Corporation Parallel string processor and method for a minicomputer
US5222225A (en) 1988-10-07 1993-06-22 International Business Machines Corporation Apparatus for processing character string moves in a data processing system
JPH0831032B2 (ja) 1990-08-29 1996-03-27 三菱電機株式会社 データ処理装置
US5465374A (en) 1993-01-12 1995-11-07 International Business Machines Corporation Processor for processing data string by byte-by-byte
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
CA2162115A1 (en) 1993-06-14 1994-12-22 David V. James Method and apparatus for finding a termination character within a variable-length character string on a processor
JPH0721034A (ja) 1993-06-28 1995-01-24 Fujitsu Ltd 文字列複写処理方法
US5509129A (en) 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US6185629B1 (en) 1994-03-08 2001-02-06 Texas Instruments Incorporated Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
KR100206669B1 (ko) 1994-09-27 1999-07-01 야마오카 요지로 아연계 도금강판 및 그 제조방법
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5812147A (en) 1996-09-20 1998-09-22 Silicon Graphics, Inc. Instruction methods for performing data formatting while moving data between memory and a vector register file
US5931940A (en) 1997-01-23 1999-08-03 Unisys Corporation Testing and string instructions for data stored on memory byte boundaries in a word oriented machine
DE69804495T2 (de) 1997-11-24 2002-10-31 British Telecomm Informationsmanagement und wiedergewinnung von schlüsselbegriffen
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6334176B1 (en) 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US7100026B2 (en) 2001-05-30 2006-08-29 The Massachusetts Institute Of Technology System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6192466B1 (en) 1999-01-21 2001-02-20 International Business Machines Corporation Pipeline control for high-frequency pipelined designs
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6189088B1 (en) 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
US6499116B1 (en) 1999-03-31 2002-12-24 International Business Machines Corp. Performance of data stream touch events
US6802056B1 (en) 1999-06-30 2004-10-05 Microsoft Corporation Translation and transformation of heterogeneous programs
US6381691B1 (en) 1999-08-13 2002-04-30 International Business Machines Corporation Method and apparatus for reordering memory operations along multiple execution paths in a processor
US6513109B1 (en) 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6449706B1 (en) 1999-12-22 2002-09-10 Intel Corporation Method and apparatus for accessing unaligned data
JP2001236249A (ja) 2000-02-24 2001-08-31 Nec Corp メモリ管理装置およびメモリ管理方法
US6625724B1 (en) 2000-03-28 2003-09-23 Intel Corporation Method and apparatus to support an expanded register set
US6349361B1 (en) 2000-03-31 2002-02-19 International Business Machines Corporation Methods and apparatus for reordering and renaming memory references in a multiprocessor computer system
US6701424B1 (en) 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
US6408383B1 (en) 2000-05-04 2002-06-18 Sun Microsystems, Inc. Array access boundary check by executing BNDCHK instruction with comparison specifiers
DE60132633T2 (de) 2000-10-18 2009-01-15 Koninklijke Philips Electronics N.V. Digitale signalprozessorvorrichtung
US7487330B2 (en) 2001-05-02 2009-02-03 International Business Machines Corporations Method and apparatus for transferring control in a computer system with dynamic compilation capability
JP3900863B2 (ja) 2001-06-28 2007-04-04 シャープ株式会社 データ転送制御装置、半導体記憶装置および情報機器
US6839828B2 (en) 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US6907443B2 (en) 2001-09-19 2005-06-14 Broadcom Corporation Magnitude comparator
US6570511B1 (en) 2001-10-15 2003-05-27 Unisys Corporation Data compression method and apparatus implemented with limited length character tables and compact string code utilization
US20100274988A1 (en) 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
US7089371B2 (en) 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory
US7441104B2 (en) 2002-03-30 2008-10-21 Hewlett-Packard Development Company, L.P. Parallel subword instructions with distributed results
US7373483B2 (en) 2002-04-02 2008-05-13 Ip-First, Llc Mechanism for extending the number of registers in a microprocessor
US7376812B1 (en) 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US6918010B1 (en) 2002-10-16 2005-07-12 Silicon Graphics, Inc. Method and system for prefetching data
US7103754B2 (en) 2003-03-28 2006-09-05 International Business Machines Corporation Computer instructions for having extended signed displacement fields for finding instruction operands
US20040215924A1 (en) 2003-04-28 2004-10-28 Collard Jean-Francois C. Analyzing stored data
US7035986B2 (en) 2003-05-12 2006-04-25 International Business Machines Corporation System and method for simultaneous access of the same line in cache storage
US20040250027A1 (en) 2003-06-04 2004-12-09 Heflinger Kenneth A. Method and system for comparing multiple bytes of data to stored string segments
US7539714B2 (en) 2003-06-30 2009-05-26 Intel Corporation Method, apparatus, and instruction for performing a sign operation that multiplies
US7610466B2 (en) 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7904905B2 (en) 2003-11-14 2011-03-08 Stmicroelectronics, Inc. System and method for efficiently executing single program multiple data (SPMD) programs
GB2411973B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
US20060095713A1 (en) 2004-11-03 2006-05-04 Stexar Corporation Clip-and-pack instruction for processor
JP4837305B2 (ja) 2005-05-10 2011-12-14 ルネサスエレクトロニクス株式会社 マイクロプロセッサ及びマイクロプロセッサの制御方法
US7421566B2 (en) 2005-08-12 2008-09-02 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
US20070106883A1 (en) * 2005-11-07 2007-05-10 Choquette Jack H Efficient Streaming of Un-Aligned Load/Store Instructions that Save Unused Non-Aligned Data in a Scratch Register for the Next Instruction
US9436468B2 (en) 2005-11-22 2016-09-06 Intel Corporation Technique for setting a vector mask
US8010953B2 (en) 2006-04-04 2011-08-30 International Business Machines Corporation Method for compiling scalar code for a single instruction multiple data (SIMD) execution engine
US7565514B2 (en) 2006-04-28 2009-07-21 Freescale Semiconductor, Inc. Parallel condition code generation for SIMD operations
CN101097488B (zh) 2006-06-30 2011-05-04 2012244安大略公司 从接收的文本中学习字符片段的方法及相关手持电子设备
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
JP2008077590A (ja) 2006-09-25 2008-04-03 Toshiba Corp データ転送装置
US7536532B2 (en) 2006-09-27 2009-05-19 International Business Machines Corporation Merge operations of data arrays based on SIMD instructions
US7991987B2 (en) 2007-05-10 2011-08-02 Intel Corporation Comparing text strings
EP2160692A1 (en) 2007-05-21 2010-03-10 Incredimail Ltd Interactive message editing system and method
US20090063410A1 (en) 2007-08-29 2009-03-05 Nils Haustein Method for Performing Parallel Data Indexing Within a Data Storage System
US7895419B2 (en) 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US7870339B2 (en) 2008-01-11 2011-01-11 International Business Machines Corporation Extract cache attribute facility and instruction therefore
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US7877582B2 (en) 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
EP2245529A1 (en) 2008-02-18 2010-11-03 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
DK176835B1 (da) 2008-03-07 2009-11-23 Jala Aps Fremgangsmåde til skanning, medium indeholdende et program til udövelse af fremgangsmåden samt system til udövelse af fremgangsmåden
US8386547B2 (en) 2008-10-31 2013-02-26 Intel Corporation Instruction and logic for performing range detection
JP5500652B2 (ja) 2009-02-02 2014-05-21 日本電気株式会社 並列比較選択演算装置、プロセッサ及び並列比較選択演算方法
JP5471082B2 (ja) 2009-06-30 2014-04-16 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8595471B2 (en) 2010-01-22 2013-11-26 Via Technologies, Inc. Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register
JP2011212043A (ja) 2010-03-31 2011-10-27 Fujifilm Corp 医用画像再生装置および方法並びにプログラム
US20110314263A1 (en) 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand
US8972698B2 (en) 2010-12-22 2015-03-03 Intel Corporation Vector conflict instructions
US9009447B2 (en) 2011-07-18 2015-04-14 Oracle International Corporation Acceleration of string comparisons using vector instructions
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6094695A (en) * 1998-03-11 2000-07-25 Texas Instruments Incorporated Storage buffer that dynamically adjusts boundary between two storage areas when one area is full and the other has an empty data register
US6662288B1 (en) * 1998-11-27 2003-12-09 Matsushita Electric Industrial Co., Ltd. Address generating apparatus and motion vector detector
RU2287178C2 (ru) * 2001-05-31 2006-11-10 Арм Лимитед Обработка необработанной операции в системах с множеством наборов команд

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2723228C1 (ru) * 2017-01-19 2020-06-09 Интернэшнл Бизнес Машинз Корпорейшн Условный переход к заданному непрямым образом местоположению

Also Published As

Publication number Publication date
HRP20180982T1 (hr) 2018-08-10
ES2675512T3 (es) 2018-07-11
SG11201404822XA (en) 2014-09-26
CN104185872B (zh) 2017-10-03
WO2013136145A1 (en) 2013-09-19
TWI617975B (zh) 2018-03-11
JP6138175B2 (ja) 2017-05-31
LT2769382T (lt) 2018-07-10
EP2769382B1 (en) 2018-05-30
US20130246767A1 (en) 2013-09-19
BR112014022726B1 (pt) 2022-02-15
DK2769382T3 (en) 2018-07-16
ZA201406611B (en) 2016-05-25
TW201403462A (zh) 2014-01-16
US9710266B2 (en) 2017-07-18
EP2769382A4 (en) 2014-12-10
PL2769382T3 (pl) 2018-09-28
IL232816A0 (en) 2014-07-31
RU2012148584A (ru) 2014-05-20
IL232816A (en) 2017-07-31
KR101938927B1 (ko) 2019-01-15
MX2014010947A (es) 2014-10-13
KR20140117446A (ko) 2014-10-07
US9710267B2 (en) 2017-07-18
CA2867116C (en) 2020-02-18
AU2012373736A1 (en) 2014-09-11
US20130246763A1 (en) 2013-09-19
PT2769382T (pt) 2018-07-05
CA2867116A1 (en) 2013-09-19
CN104185872A (zh) 2014-12-03
HK1201372A1 (en) 2015-08-28
HUE038236T2 (hu) 2018-10-29
BR112014022726A2 (pt) 2021-07-27
SI2769382T1 (en) 2018-08-31
MX346496B (es) 2017-03-22
JP2015514243A (ja) 2015-05-18
EP2769382A1 (en) 2014-08-27

Similar Documents

Publication Publication Date Title
RU2568920C2 (ru) Способ выполнения машинной команды, компьютерная система и машиночитаемый носитель, обеспечивающие расчет расстояния от положения в основной памяти до границы блока основной памяти
RU2565496C2 (ru) Команда для загрузки данных до заданной границы памяти, указанной командой
RU2568241C2 (ru) Трансформация прерывистых спецификаторов команд в непрерывные спецификаторы команд
RU2585975C2 (ru) Команда векторного типа для поиска равнозначного элемента
RU2598814C2 (ru) Команда векторного типа для поиска неравнозначного элемента
US9959118B2 (en) Instruction to load data up to a dynamically determined memory boundary
RU2621000C2 (ru) Определение длины группы символьных данных, содержащей символ окончания
US11809870B2 (en) Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
JP6184426B2 (ja) 終端文字を有する文字データのメモリ位置間でのコピーのための方法、システム、およびコンピュータ・プログラム(終端文字を有する文字データのメモリ位置間でのコピー)
GB2514062B (en) Comparing sets of character data having termination characters
RU2608663C1 (ru) Команда векторного типа контрольной суммы
AU2012373736B2 (en) Instruction to compute the distance to a specified memory boundary