BR112014022727B1 - Instrução para carregar dados até uma fronteira de memória específica indicada pela instrução - Google Patents
Instrução para carregar dados até uma fronteira de memória específica indicada pela instrução Download PDFInfo
- Publication number
- BR112014022727B1 BR112014022727B1 BR112014022727-6A BR112014022727A BR112014022727B1 BR 112014022727 B1 BR112014022727 B1 BR 112014022727B1 BR 112014022727 A BR112014022727 A BR 112014022727A BR 112014022727 B1 BR112014022727 B1 BR 112014022727B1
- Authority
- BR
- Brazil
- Prior art keywords
- field
- instruction
- operand
- address
- register
- Prior art date
Links
- 238000012545 processing Methods 0.000 claims description 37
- 238000000034 method Methods 0.000 claims description 24
- 238000004891 communication Methods 0.000 claims description 7
- 238000006073 displacement reaction Methods 0.000 claims description 3
- 239000013598 vector Substances 0.000 description 116
- 238000003860 storage Methods 0.000 description 76
- 230000006870 function Effects 0.000 description 28
- 238000013519 translation Methods 0.000 description 22
- 230000014616 translation Effects 0.000 description 22
- 238000004590 computer program Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 10
- 239000003550 marker Substances 0.000 description 8
- 238000009434 installation Methods 0.000 description 7
- 230000001343 mnemonic effect Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 230000007774 longterm Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012884 algebraic function Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 229920000638 styrene acrylonitrile Polymers 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
instrução para carregar dados até uma fronteira de memória específica indicada pela instrução. uma instrução de carga para bloquear limite é provida que carrega um número variável de bytes de dados para um registrador enquanto garantindo que um limite de memória especificado não é cruzado. o limite pode ser especificado de um número de modos, incluindo, mas não limitado a um valor variável no texto da instrução, um valor de texto de instrução fixada codificado no opcode, ou um limite com base no registrador.
Description
[0001] A invenção se refere, em geral, ao processamento de dados, e em particular, ao carregamento de dados para registros.
[0002] Processamento de dados inclui vários tipos de processamentos, incluindo o carregamento de dados para registros. O carregamento de dados para um registro inclui, mas não está limitado, ao carregamento de dados de caractere, tal como colunas de dados de caractere; dados de inteiro; ou quaisquer outros tipos de dados. Os dados que são carregados então são capazes de ser usados e/ou manipulados.
[0003] Instruções correntes para realizar vários tipos de processamentos, incluindo o carregamento dos dados para os registros, tende a ser ineficiente.
[0004] Desvantagens do estado da técnica são endereçadas e vantagens são providas através da provisão de um produto de programa de computador para executar uma instrução de máquina. O produto de programa de computador inclui um meio de armazenamento legível por computador legível por um circuito de processamento e instruções de armazenamento para a execução pelo circuito de processamento para realizar um método. O método inclui, por exemplo, obter, por um processador, uma instrução de máquina para a execução, a instrução de máquina que é definida para a execução por computador de acordo com uma arquitetura de computador, a instrução de máquina incluindo: pelo menos um campo de opcode para prover um opcode, o opcode que identifica uma carga para bloquear operação limite; um campo de registro a ser usado para designar um registro, o registro compreendendo um primeiro operando; pelo menos um campo para localizar um segundo operando na memória principal; e executar a instrução de máquina, a execução incluindo: apenas carregar bytes do primeiro operando com correspondentes bytes do segundo operando que estão dentro de um bloco especificado por instrução da memória principal.
[0005] Métodos e sistemas que se referem a um ou mais aspectos da presente invenção também são descritos e reivindicados aqui. Adicionalmente, serviços que se referem a um ou mais aspectos da presente invenção também são descritos e podem ser reivindicados aqui.
[0006] Funcionalidades e vantagens adicionais são realizadas através das técnicas da presente invenção. Outras concretizações e aspectos da invenção são descritos em detalhe aqui e são considerados uma parte da invenção reivindicada.
[0007] Concretizações da presente invenção agora serão descritas, por meio de exemplo apenas, com referência aos desenhos anexos em que: A figura 1 representa um exemplo de um ambiente de computação para incorporar e usar uma ou mais concretizações da presente invenção; A figura 2A representa outro exemplo de um ambiente de computação para incorporar e usar uma ou mais concretizações da presente invenção; A figura 2B representa detalhes adicionais da memória da figura 2A, de acordo com uma concretização da presente invenção; A figura 3 representa um formato de uma instrução de Carga de Vetor para Limite de Bloco, de acordo com uma concretização da presente invenção; A figura 4 representa lógica associada com a instrução de Carga de Vetor para Limite de Bloco, de acordo com uma concretização da presente invenção; A figura 5 representa dados a ser carregados para um registro de vetor, de acordo com uma concretização da presente invenção; A figura 6 representa um arquivo de registro, de acordo com uma concretização da presente invenção; A figura 7 representa uma concretização de um produto de programa de computador que incorpora uma ou mais concretizações da presente invenção; A figura 8 representa uma concretização de um sistema de computador host para incorporar e usar uma ou mais concretizações da presente invenção; A figura 9 representa um exemplo adicional de um sistema de computador para incorporar e usar uma ou mais concretizações da presente invenção; A figura 10 representa outro exemplo de um sistema de computador compreendendo uma rede de computador para incorporar e usar uma ou mais concretizações da presente invenção; A figura 11 representa vários elementos de um sistema de computador para incorporar e usar uma ou mais concretizações da presente invenção; A figura 12A representa a unidade de execução do sistema de computador da figura 11 para incorporar e usar uma ou mais concretizações da presente invenção; A figura 12B representa a unidade de ramificação do sistema de computador da figura 11 para incorporar e usar uma ou mais concretizações da presente invenção; A figura 12C representa a unidade de carga/armazenamento do sistema de computador da figura 11 para incorporar e usar um ou mais aspectos da presente invenção; e A figura 13 representa um sistema de computador host emulado para incorporar e usar uma ou mais concretizações da presente invenção.
[0008] De acordo com um aspecto da presente invenção, uma capacidade é provida para facilitar o carregamento de dados em um registro. Como exemplos, os dados incluem dados de caractere, dados de inteiro e/ou outros tipos de dados. Adicionalmente, o registro é um registro de vetor ou outro tipo de registro.
[0009] Dados de caractere, incluem, mas não estão limitados a caracteres alfabéticos, em qualquer linguagem; dígitos numéricos; pontuação; e/ou outros símbolos. Os dados de caractere podem ou não ser counas de dados. Associados com dados de caractere estão padrões, exemplos dos quais incluem, mas não estão limitados a ASCII (American Standard Code for Information Interchange); Unicode, incluindo, mas não limitado a UTF (Unicode Transformation Format) 8; UTF16; etc.
[0010] Um registro de vetor (também referido como um vetor) inclui um ou mais elementos, e cada elemento é de um, dois ou quatro bytes de comprimento, como exemplos. Adicionalmente, um operando de vetor, por exemplo, é um operando SIMD (Única Instrução, Múltiplos Dados) tendo uma pluralidade de elementos. Em outras concretizações, elementos podem ser de outros tamanhos; e um operando de vetor não precisa ser SIMD, e/ou pode incluir um elemento.
[0011] Em um exemplo, uma instrução de Carga de Vetor para Limite de Bloco é provida que carrega um número variável de bytes de dados a partir da memória para um registro de vetor enquanto garantindo que um limite especificado da memória a partir do qual os dados estão sendo carregados não seja cruzado. O limite pode ser especificado de maneira explícita pela instrução (por exemplo, um valor variável no texto da instrução, um valor de texto de instrução fixada codificado no opcode, um limite com base no registro especificado na instrução, etc.); ou o limite pode ser determinado de maneira dinâmica pela máquina. Por exemplo, a instrução especifica que dados devem ser carregados para uma página ou limite de cache, e a máquina determina a linha de cache ou tamanho de página (por exemplo, procura em, por exemplo, um armazenamento temporário de procura de tradução para determinar o tamanho de página), e carrega para aquele ponto.
[0012] Como um exemplo adicional, esta instrução também é usada para alinhar acessos de dados para um limite selecionado.
[0013] Em uma concretização, a instrução apenas carrega bytes do registro de vetor (um primeiro operando) com correspondentes bytes de um segundo operando que estão dentro de um bloco da memória principal especificado pela instrução. Como usado aqui, um bloco da memória principal (também conhecido como, armazenamento principal) é qualquer bloco de memória de um tamanho especificado. O tamanho especificado também é referido como o limite do bloco, o limite sendo o fim do bloco.
[0014] Em uma concretização adicional, outros tipos de registros são carregados. Ou seja, o registro que é carregado não é um registro de vetor mas outro tipo de registro. Neste contexto, a instrução é referida como uma instrução de Carga para Bloquear Limite, que e usada para carregar dados para um registro.
[0015] Uma concretização de um ambiente de computação para incorporar e usar um ou mais aspectos da presente invenção é descrito com referência à figura 1. Um ambiente de computação 100 inclui, por exemplo, um processador 102 (por exemplo, uma unidade de processamento central), uma memória 104 (por exemplo, memória principal), e um ou mais dispositivos de entrada/saída (E/S) e/ou interfaces 106 acoplados entre si através de, por exemplo, um ou mais barramentos 108 e/ou outras conexões.
[0016] Em um exemplo, o processador 102 está baseado em z/Architecture oferecida por International Business Machines Corporation, e é parte de um servidor, tal como o servidor de System z, que também é oferecido por International Business Machines Corporation e implementa a z/Architecture. Uma concretização da z/Architecture é descrita em uma publicação da IBM® intitulada, "z/Architecture Principles of Operation,"Publicação IBM® No. SA22-7832-08, Nona Edição, agosto, 2010, que é incorporado aqui por referência em sua totalidade. Em um exemplo, o processador executa um sistema de operação, tal como z/OS, também oferecido por International Business Machines Corporation. IBM®, Z/ARCHITECTURE® e Z/OS® são margas registradas de International Business Machines Corporation, Armonk, Nova Iorque, EUA. Outros nomes usados aqui podem ser marcas registradas, marcas comerciais, ou nomes de produtos de International Business Machines Corporation ou outras companhias.
[0017] Em uma concretização adicional, o processador 102 está baseado na Power Architecture oferecida por International Business Machines Corporation. Uma concretização da Power Architecture é descrita em "Power ISA Version 2.06 Revision B," International Business Machines Corporation, July 23, 2010, que é incorporado aqui por referência em sua totalidade. POWER ARCHITECTURE® é uma marca registrada de International Business Machines Corporation.
[0018] Em mais uma concretização adicional, processador 102 está baseada em uma Arquitetura Intel oferecida por Intel Corporation. Uma concretização da arquitetura Intel é descrita em "Intel® 64 e IA-32 Architectures Developer's Manual: Vol. 2B, Instructions Set Reference, A-L,"Número de Ordem 253666-041US, dezembro de 2011, e "Intel® 64 e IA-32 Architectures Developer's Manual: Vol. 2B, Instructions Set Reference, M-Z,"Número de Ordem 253667-041US, dezembro de 2011, cada um dos quais é incorporado aqui por referência em sua totalidade. Intel® é uma marca registrada de Intel Corporation, Santa Clara, Califórnia.
[0019] Outra concretização de um ambiente de computação para incorporar e usar um ou mais aspectos da presente invenção é descrito com referência à figura 2A. Neste exemplo, um ambiente de computação 200 inclui, por exemplo, uma unidade de processamento central nativa 202, uma memória 204, e um ou mais dispositivos de entrada/saída e/ou interfaces 206 acoplados entre si através de, por exemplo, um ou mais barramentos 208 e/ou outras conexões. Como exemplos, o ambiente de computação 200 pode incluir um processador de PowerPC, um servidor de pSeries ou um servidor de xSeries oferecido por International Business Machines Corporation, Armonk, Nova Iorque; um HP Superdome com processadores Intel Itanium II oferecido por Hewlett Packard Co., Palo Alto, Califórnia; e/ou outras máquinas com base em arquiteturas oferecidas por International Business Machines Corporation, Hewlett Packard, Intel, Oracle, ou outros.
[0020] Unidade de processamento central nativa 202 inclui um ou mais registros nativos 210, tais como um ou mais registros de propósito geral e/ou um ou mais registros de aplicação específica usados durante o processamento dentro do ambiente. Estes registros incluem informação que representa o estado do ambiente em qualquer ponto particular no tempo.
[0021] Além disso, unidade de processamento central nativa 202 executa instruções e código que são usados na memória 204. Em um exemplo particular, a unidade de processamento central executa código de emulador 212 armazenado na memória 204. Este código permite que o ambiente de processamento configurado em uma arquitetura emule outra arquitetura. Por exemplo, código de emulador 212 permite que máquinas baseadas nas arquiteturas diferentes do que a z/Architecture, tal como processadores PowerPC, servidores pSeries, servidores xSeries, servidores HP Superdome ou outros, para emular a z/Architecture e para executar software e instruções desenvolvidas com base na z/Architecture.
[0022] Detalhes adicionais que se referem ao código de emulador 212 são descritos com referência à figura 2B. Instruções de host 250 compreendem instruções de software (por exemplo, instruções de máquina) que foram desenvolvidas para ser executadas em uma arquitetura diferente do que aquela da CPU nativa 202. Por exemplo, instruções de host 250 podem ter sido projetadas para executar em um processador de z/Architecture 102, mas em vez disso, estão sendo emuladas em CPU nativa 202, que pode ser, por exemplo, um processador Intel Itanium II. Em um exemplo, código de emulador 212 inclui uma unidade de busca de instrução 252 para obter uma ou mais instruções de host 250 a partir da memória 204, e para prover opcionalmente armazenamento temporário local para as instruções obtidas. Também inclui uma rotina de tradução de instrução 254 para determinar o tipo de instrução de convidado que foi obtido e para traduzir a instrução de convidado para uma ou mais correspondentes instruções nativas 256. Esta tradução inclui, por exemplo, identificar a função a ser realizada pela instrução de convidado e escolher as instruções nativas para realizar esta função.
[0023] Adicionalmente, o emulador 212 inclui uma rotina de controle de emulação 2 60 para fazer com que as instruções nativas sejam executadas. A rotina de controle de emulação 260 pode fazer com que a CPU nativa 202 execute uma rotina de instruções nativas que emulam uma ou mais das instruções de host obtidas anteriormente e, na conclusão de tal execução, retornar controle para a rotina de busca de instrução para emular a obtenção da próxima instrução de convidado ou um grupo de instruções de host. A execução das instruções nativas 256 pode incluir carregar dados para um registro a partir da memória 204; armazenar dados de volta para a memória a partir de um registro; ou realizar algum tipo de operações lógica ou aritmética, como determinado pela rotina de tradução.
[0024] Cada rotina é, por exemplo, implementada em software, que é armazenado na memória e executada pela unidade de processamento central nativa 202. Em outros exemplos, uma ou mais das rotinas ou operações implementadas em firmware, hardware, software ou alguma combinação das mesmas. Os registros do processador emulado podem ser emulados usando registros 210 da CPU nativa ou usando localizações na memória 204. Nas concretizações, instruções de host 250, instruções nativas 256 e código de emulador 212 podem residir na mesma memória ou podem ser espalhadas dentre diferentes dispositivos de memória.
[0025] Como usado aqui, firmware inclui, por exemplo, o microcode, millicode e/ou macrocode do processador. Ele inclui, por exemplo, as instruções de nível de hardware e/ou estruturas de dados usadas na implementação de código de máquina de alto nível. Em uma concretização, ela inclui, por exemplo, código proprietário que é distribuído tipicamente como microcode que inclui software confiável ou microcode específico do hardware subjacente e controla o acesso do sistema de operação para o hardware do sistema.
[0026] Em um exemplo, a instrução de convidado 250 que é obtida, traduzida e executada é a instrução descrita aqui. A instrução, que é de uma arquitetura (por exemplo, a z/Architecture) é buscada a partir da memória, traduzida e representada como uma sequência de instruções nativas 256 de outra arquitetura (por exemplo, PowerPC, pSeries, xSeries, Intel, etc.). Estas instruções nativas então são executadas.
[0027] Em uma concretização, a instrução descrita aqui é uma instrução de vetor, que é parte de uma instalação de vetor, provida de acordo com um aspecto da presente invenção. A instalação de vetor provê, por exemplo, vetores dimensionados fixados que variam a partir de um até dezesseis elementos. Cada vetor inclui dados os quais são operados pelas instruções de vetor definidas na instalação. Em uma concretização, se um vetor é composto de múltiplos elementos, então cada elemento é processado em paralelo com os outros elementos. Finalização da instrução não ocorre até o processamento de todos os elementos é completo.
[0028] Como descrito aqui, as instruções de vetor podem ser implementadas como parte de várias arquiteturas, incluindo, mas não limitado a z/Architecture, Power, Intel, etc. Apesar de uma concretização descrita aqui ser para a z/Architecture, as instruções de vetor e um ou mais aspectos da presente invenção podem ser baseados em muitas outras arquiteturas. A z/Architecture é apenas um exemplo.
[0029] Em uma concretização em que a instalação de vetor é implementada como parte da z/Architecture, para usar os registros de vetor e instruções, um controle de habilitação de vetor e um controle de registro em um registro de controle especificado (por exemplo, registro de controle 0) são definidos para, por exemplo, um. Se a instalação de vetor é instalada e uma instrução de vetor é executada sem os controles de habilitação definidos, uma exceção de dados é reconhecida. Se a instalação de vetor não é instalada e uma instrução de vetor é executada, uma exceção de operação é reconhecida.
[0030] Dados de vetor aparecem no armazenamento, por exemplo, na mesma sequência da esquerda para direita como outros formatos de dados. Bits de um formato de dados que são numerados de 0-7 constituem o byte na localização de byte mais a esquerda (de menor número) no armazenamento, bits 815 formam o byte na próxima localização sequencial, e assim por diante. Em um exemplo adicional, os dados de vetor podem parecer no armazenamento em outra sequência, tal como da direita para esquerda.
[0031] Muitas das instruções de vetor providas com a instalação de vetor possuem um campo de bits especificados. Este campo, referido como o bit de extensão de registro ou RXB, inclui o bit mais significativo para cada um dos operandos designados de registro de vetor. Bits para designações de registro não especificados pela instrução devem ser reservados e definidos para zero.
[0032] Em um exemplo, o campo RXB inclui quatro bits (por exemplo, bits 0-3), e os bits são definidos, como na sequência: 1 - Bit mais significativo para a primeira designação de registro de vetor da instrução. 2 - Bit mais significativo para a segunda designação de registro de vetor da instrução, se houver. 3 - Bit mais significativo para a terceira designação de registro de vetor da instrução, se houver. 4 - Bit mais significativo para a quarta designação de registro de vetor da instrução, se houver.
[0033] Cada bit é definido para zero ou um, por exemplo, pelo montador dependendo do número de registro. Por exemplo, para registros 0-15, o bit é definido para 0; para registros 16-31, o bit é definido para 1, etc.
[0034] Em uma concretização, cada bit de RXB é um bit de extensão para uma localização particular em uma instrução que inclui um ou mais registros de vetor. Por exemplo, em uma ou mais instruções de vetor, bit 0 de RXB é um bit de extensão para a localização 8-11, que é designado para, por exemplo, Vi; bit 1 de RXB é um bit de extensão para a localização 12-15, que é designado para, por exemplo, V2; e assim por diante.
[0035] Em uma concretização adicional, o campo RXB inclui bits adicionais, e mais do que um bit é usado como uma extensão para cada vetor ou localização.
[0036] Uma instrução, provida de acordo com um aspecto da presente invenção que inclui o campo RXB, é uma instrução de Carga de Vetor para Limite de Bloco, um exemplo do qual é representado na figura 3. Em um exemplo, a instrução de Carga de Vetor para Limite de Bloco 300 inclui campo de opcodes 302a (por exemplo, bits 0-7), 302b (por exemplo, bits 40-47) indicando um vetor Carga Para bloquear Operação limite; um campo de registro de vetor 304 (por exemplo, bits 8-11) usado para designar um registro de vetor (V1); um campo de índice (X2) 306 (por exemplo, bits 12-15); um campo de base (B2) 308 (por exemplo, bits 16-19); um campo de deslocamento (D2) 310 (por exemplo, bits 20-31); um campo de máscara (M3) 312 (por exemplo, bits 32-35); e um campo de RXB 316 (por exemplo, bits 36-39). Cada um dos campos 304-314, em um exemplo, é separado e independente dos campos de opcode. Adicionalmente, em uma concretização, eles são separados e independentes entre si; no entanto, em outras concretizações, mais do que um campo pode ser combinado. Informação adicional sobre o uso destes campos é descrita abaixo.
[0037] Em um exemplo, bits selecionados (por exemplo, os primeiros dois bits) do opcode designado pelo campo de opcode 302a especificam o comprimento e formato da instrução. Neste exemplo particular, o comprimento é de três metades de palavra, e o formato é uma operação de armazenamento de índice e registro de vetor com um campo de opcode estendido. O campo de vetor (V), junto com o seu correspondente bit de extensão especificado por RXB, designa um registro de vetor. Em particular, para registros de vetor, o registro contendo o operando é especificado usando, por exemplo, um campo de quatro bits do campo de registro com a adição do bit de extensão de registro (RXB) como o bit mais significativo. Por exemplo, se o campo de quatro bits é 0110 e o bit de extensão é 0, então o campo de cinco bits 00110 indica o número de registro 6.
[0038] O número de subscript associado com um campo da instrução denota o operando em que o campo se aplica. Por exemplo, o número de subscript 1 associado com Vi denota o primeiro operando, e assim por diante. O operando de registro é um registro no comprimento, que é, por exemplo, de 128 bits.
[0039] Em um exemplo, em uma instrução de operação de armazenamento de índice e registro de vetor, os conteúdos dos registros gerais designados pelos campos de X2 e B2 são adicionados para os conteúdos do campo D2 para formar o segundo endereço de operando. O deslocamento, D2, para a instrução de Carga de Vetor para Limite de Bloco é tratado como um inteiro não designado de 12 bit, em um exemplo.
[0040] O campo M3, em uma concretização, especifica um código que é usado para sinalizar a CPU como para o limite de bloco para carregar. Se um valor reservado é especificado, uma exceção de especificação é reconhecida. Exemplos de códigos e valores correspondentes são como na sequência: Código 0 64-Byte 1 128-Byte 2 256-Byte 3 512-Byte 4 1K-Byte 5 2K-Byte 6 4K-Byte
[0041] Na execução de uma concretização da instrução da Carga de Vetor para Limite de Bloco (VLBB), precedendo em uma concretização a partir da esquerda para direita, o primeiro operando (especificado no registro designado pelo campo V1 mais o bit de extensão) é carregado partindo no elemento de byte indexado por zero com bytes a partir do segundo operando. O segundo operando é uma localização de memória designada pelo segundo endereço de operando (também referido como um endereço de início). O carregamento começa a partir daquela localização de memória e continua até um endereço de término computado pela instrução (ou processador), como descrito abaixo. Se uma condição limite é encontrada, é dependente do modelo em como o descanso do primeiro operando é tratado. Exceções de acesso não são reconhecidas em bytes não carregados. Em um exemplo, bytes que não são carregados são imprevisíveis.
[0042] No exemplo de instrução acima, o endereço de início é determinado pelo valor de registro de índice (X2) + um valor de registro de base (B2) + um deslocamento (D2); no entanto, em outras concretizações, é provido por um valor de registro; um endereço de instrução + deslocamento especificado por texto de instrução; um valor de registro + deslocamento; ou um valor de registro + valor de registro de índice; como apenas alguns exemplos. Adicionalmente, em uma concretização, a instrução não inclui o campo RXB. Em vez disso, nenhuma extensão é usada ou a extensão é provida de outra maneira, tal como a partir de um controle fora da instrução, ou provido como parte de outro campo da instrução.
[0043] Detalhes adicionais de uma concretização de processamento da instrução de Carga de Vetor para Limite de Bloco são descritos com referência à figura 4. Em um exemplo, um processador do ambiente de computação está realizando esta lógica.
[0044] Em uma concretização, inicialmente uma máscara limite (BdyMask) é criada, que é usada para determinar a proximidade para o limite especificado, ETAPA 400. Para criar a máscara, em um exemplo, uma negação em complemento de 2 de um tamanho de limite (BdySize) 402 é tomada criando máscara limite 404 (por exemplo, BdyMask = 0-BdySize). O tamanho de limite é provido, em um exemplo, pela instrução (por exemplo, o campo M3); ou em outro exemplo, é determinado pela máquina, como descrito aqui.
[0045] A seguir, um endereço de início é computado, que indica uma localização na memória a partir da qual o carregamento deve começar, ETAPA 410. Como exemplos, o endereço de início 412 pode ser provido por um valor de registro; um endereço de instrução mais deslocamento especificado por texto de instrução; um valor de registro mais deslocamento; um valor de registro mais valor de registro de índice; ou um valor de registro mais valor de registro de índice mais deslocamento. Na instrução provida aqui, o endereço de início é provido pelo campo X2, campo B2 e campo D2. Ou seja, conteúdos dos registros designados por X2 e B2 são adicionados para o deslocamento indicado por D2 para prover o endereço de início. Os modos indicados acima para computar um endereço de início são apenas exemplos; outros exemplos também são possíveis.
[0046] A seguir um endereço final é computado indicando onde deve parar o carregamento a partir da ETAPA 420. A entrada para esta computação é, por exemplo, tamanho de limite 402, endereço de início 412, tamanho de vetor 414 (por exemplo, in bytes; por exemplo, 16), e máscara limite 404. Em um exemplo, endereço final 422 é computado como na sequência: EndAddress = min(StartAddress + (BdySize - (StartAddress & BdyMask)), StartAddress + vec_size).
[0047] A seguir, o primeiro operando (isto é, o registro de vetor designado) é carregado, iniciando no byte indexado 0, a partir da memória que começa no endereço de início e terminando no endereço de término, ETAPA 430. Isto permite que um número variável de bytes seja carregado a partir da memória para um vetor sem cruzar um limite de memória designado. Por exemplo, se o limite de memória está em 64 bytes, e o endereço de início está em 58 bytes, então bytes 58-64 são carregados no registro de vetor.
[0048] Um exemplo de dados a serem carregados para um registro de vetor, de acordo com um aspecto da presente invenção, é representado na figura 5. Como indicado, nenhum dado é carregado além do limite designado pela linha vertical pontilhada. As localizações além do limite não são acessíveis e nenhuma exceção é tomada. Em uma concretização particular, o vetor é carregado a partir da esquerda para direita. No entanto, em outra concretização, pode ser carregado a partir da direita para esquerda. Em uma concretização, a direção dos vetores, esquerda para direita ou direita para esquerda, é provido no tempo de execução. Por exemplo, a instrução acessa um registro, controle de estado ou outra entidade que indica que a direção de processamento é tanto da esquerda para direita ou da direita para esquerda, como exemplos. Em uma concretização, este controle de direção não é codificado como parte da instrução, mas provido para a instrução no tempo de execução.
[0049] Descrito acima está um exemplo de uma instrução de carga. Quando se carrega dados, tais como dados de coluna, geralmente não é conhecido se a coluna vai terminar antes de um limite de página. A capacidade para carregar até aquele limite sem cruzar tipicamente requer primeiramente verificar o fim da coluna. Algumas implementações também podem ter uma penalidade para cruzar limites e software deve desejar evitar estas. Assim, a capacidade para carregar até vários limites, é útil. Uma instrução é provida que carrega um número variável de bytes para um registro de vetor enquanto garantindo que dados a partir de um limite especificado não são carregados.
[0050] Em uma concretização, existem 32 registros de vetor e outros tipos de registros podem mapear para um quadrante dos registros de vetor. Por exemplo, como mostrado na figura 6, se existe um arquivo de registro 600 que inclui 32 registros de vetor 602 e cada registro tem 128 bits de comprimento, então 16 registros de ponto flutuante 604, que são de 64 bits de comprimento, podem sobrepor os registros de vetor. Assim, como um exemplo, quando o registro de ponto flutuante 2 é modificado, então o registro de vetor 2 também é modificado. Outros mapeamentos para outros tipos de registros também são possíveis.
[0051] Aqui, memória, memória principal, armazenamento e armazenamento principal são usados de maneira intercambiável, a menos que seja notado explicitamente de outra forma ou pelo contexto.
[0052] Detalhes adicionais que se referem à instalação de vetor, incluindo exemplos de outras instruções, são providos como parte desta Descrição Detalhada adicionalmente abaixo.
[0053] Como será percebido por um versado na técnica, um ou mais aspectos da presente invenção podem ser incorporados como um sistema, método ou produto de programa de computador. De maneira apropriada, um ou mais aspectos da presente invenção podem tomar a forma de uma concretização inteiramente de hardware, uma concretização inteiramente de software (incluindo firmware, software residente, microcódigo, etc.) ou uma concretização que combina aspectos de software e hardware que podem todos em geral ser referidos aqui como um "circuito,""módulo" ou "sistema". Adicionalmente, um ou mais aspectos da presente invenção podem tomar a forma de um produto de programa de computador incorporado em um ou mais meios legíveis por computador tendo código de programa legível por computador incorporado no mesmo.
[0054] Qualquer combinação de um ou mais meios legíveis por computador pode ser usada. O meio legível por computador pode ser um meio de armazenamento legível por computador. Um meio de armazenamento legível por computador pode ser, por exemplo, mas não limitado a um sistema, aparelho ou dispositivo eletrônico, magnético, óptico, eletromagnético, infravermelho ou semicondutor, ou qualquer combinação adequada dos anteriores. Exemplos mais específicos (uma lista não exaustiva) do meio de armazenamento legível por computador incluem os seguintes: uma conexão elétrica tendo um ou mais fios, um disquete de computador portátil, um disco rígido, uma memória de acesso aleatório (RAM), uma memória somente de leitura (ROM), uma memória somente de leitura apagável programável (EPROM ou memória Flash), uma fibra óptica, uma memória somente de leitura de disco compacto portátil (CD-ROM), um dispositivo de armazenamento óptico, um dispositivo de armazenamento magnético, ou qualquer combinação adequada dos anteriores. No contexto deste documento, um meio de armazenamento legível por computador pode ser qualquer meio tangível que pode conter ou armazenar um programa para o uso por ou em conexão com um sistema, aparelho ou dispositivo de execução de instrução.
[0055] Em referência agora à figura 7, em um exemplo, um produto de programa de computador 700 inclui, por exemplo, um ou mais meios de armazenamento legíveis por computador não transitórios 702 para armazenar meio de código de programa legível por computador ou lógica 704 no mesmo para prover e facilitar um ou mais aspectos da presente invenção.
[0056] Código de programa incorporado em um meio legível por computador pode ser transmitido usando um meio apropriado, incluindo, mas não limitado a um sem fio, cabeado, cabo de fibra óptica, RF, etc., ou qualquer combinação adequada dos anteriores.
[0057] Código de programa de computador para realizar operações para um ou mais aspectos da presente invenção pode ser escrito em qualquer combinação de uma ou mais linguagens de programação, incluindo uma linguagem de programação orientada a objetos, tal como Java, Smalltalk, C++ ou semelhantes, e linguagens de programação de procedimento convencional, tais como a linguagem de programação "C", montador ou similares linguagens de programação. O código de programa pode executar inteiramente no computador de usuário, parcialmente no computador de usuário, como um pacote de software remoto, parcialmente no computador de usuário e parcialmente em um computador remoto ou inteiramente no computador remoto ou servidor. No último cenário, o computador remoto pode ser conectado com o computador de usuário através de qualquer tipo de rede, incluindo uma rede de área local (LAN) ou uma rede de longa distância (WAN), ou a conexão pode ser feita com um computador externo (por exemplo, através da Internet usando um Provedor de Serviço de Internet).
[0058] Um ou mais aspectos da presente invenção são descritos aqui com referência às ilustrações de fluxograma e/ou diagramas de bloco de métodos, aparelho (sistemas) e produtos de programa de computador de acordo com concretizações da invenção. Será entendido que cada bloco das ilustrações de fluxograma e/ou diagramas de bloco, e combinações de blocos nas ilustrações de fluxograma e/ou diagramas de bloco, podem ser implementados pelas instruções de programa de computador. Estas instruções de programa de computador podem ser providas para um processador de um computador de propósito geral, um computador de aplicação específica, ou outro aparelho de processamento de dados programável para produzir uma máquina, tal que as instruções, que executam através do processador do computador ou outro aparelho de processamento de dados programável, criam meios para implementar as funções/atos especificados no fluxograma e/ou bloco ou blocos do diagrama de blocos.
[0059] Estas instruções de programa de computador também podem ser armazenadas em um meio legível por computador que pode direcionar um computador, outro aparelho de processamento de dados programável, ou outros dispositivos para funcionar de uma maneira particular, tal que as instruções armazenadas no meio legível por computador produzem um artigo de manufatura incluindo instruções que implementam a função/ato especificado no fluxograma e/ou bloco ou blocos do diagrama de blocos.
[0060] As instruções de programa de computador também podem ser carregadas para um computador, outro aparelho de processamento de dados programável, ou outros dispositivos para fazer com que uma série de etapas operacionais sejam realizadas no computador, outro aparelho programável ou outros dispositivos para produzir um processo implementado por computador tal que as instruções que executam no computador ou outro aparelho programável proveem processos para implementar as funções/atos especificados no fluxograma e/ou bloco ou blocos do diagrama de blocos.
[0061] O fluxograma e diagramas de bloco nas figuras ilustram a arquitetura, funcionalidade, e operação de possíveis implementações de sistemas, métodos e produtos de programa de computador de acordo com várias concretizações de um ou mais aspectos da presente invenção. Neste sentido, cada bloco no fluxograma ou diagramas de bloco podem representar um módulo, segmento, ou porção de código, que compreende uma ou mais instruções executáveis para implementar as funções lógicas especificadas. Também deve ser notado que, em algumas implementações alternativas, as funções notadas no bloco podem ocorrer fora da ordem notada nas figuras. Por exemplo, dois blocos mostrados em sucessão podem, de fato, ser executados substancialmente simultaneamente, ou os blocos algumas vezes podem ser executados na ordem inversa, dependendo da funcionalidade envolvida. Também será notado que cada bloco dos diagramas de bloco e/ou ilustração de fluxograma, e combinações de blocos nos diagramas de bloco e/ou ilustração de fluxograma, pode ser implementada por sistemas com base em hardware de aplicação específica que realizam as funções ou atos especificados, ou combinações de instruções de computador e hardware de aplicação específica.
[0062] Em adição ao dito acima, um ou mais aspectos da presente invenção podem ser providos, oferecidos, distribuídos, gerenciados, servidos, etc. por um provedor de serviço que oferece gerenciamento de ambientes de cliente. Por exemplo, o provedor de serviço pode criar, manter, suportar, etc. código de computador e/ou uma infraestrutura de computador que realiza um ou mais aspectos da presente invenção para um ou mais clientes. Em retorno, o provedor de serviço pode receber pagamento a partir do cliente sob uma assinatura e/ou acordo de taxa, como exemplos. Adicionalmente ou alternativamente, o provedor de serviço pode receber pagamento a partir da venda de conteúdo de propaganda para um ou mais terceiros.
[0063] Em um aspecto da presente invenção, um aplicativo pode ser distribuído para realizar um ou mais aspectos da presente invenção. Como um exemplo, a distribuição de um aplicativo compreende prover infraestrutura de computador operável para realizar um ou mais aspectos da presente invenção.
[0064] Como um aspecto adicional da presente invenção, uma infraestrutura de computação pode ser distribuída compreendendo integrar código legível por computador para um sistema de computação, em que o código em combinação com o sistema de computação é capaz de realizar um ou mais aspectos da presente invenção.
[0065] Como mais um aspecto adicional da presente invenção, um processo para integrar infraestrutura de computação compreendendo integrar código legível por computador com um sistema de computador pode ser provido. O sistema de computador compreende um meio legível por computador, em que o meio de computador compreende um ou mais aspectos da presente invenção. O código em combinação com o sistema de computador é capaz de realizar um ou mais aspectos da presente invenção.
[0066] Apesar de várias concretizações serem descritas acima, estas são apenas exemplos. Por exemplo, ambientes de computação de outras arquiteturas podem incorporar e usar um ou mais aspectos da presente invenção. Adicionalmente, registros de outros tamanhos podem ser usados, e alterações para as instruções podem ser feitas sem se afastar do espírito da presente invenção.
[0067] Adicionalmente, outros tipos de ambientes de computação podem se beneficiar de um ou mais aspectos da presente invenção. Como um exemplo, um sistema de processamento de dados adequado para armazenar e/ou executar código de programa é útil que inclui pelo menos dois processadores acoplados diretamente ou indiretamente com elementos de memória através de um barramento de sistema. Os elementos de memória incluem, por exemplo, memória local empregada durante a execução atual do código de programa, armazenamento de volume, e memória de cache que proveem armazenamento temporário de pelo menos algum código de programa de maneira a reduzir o número de vezes que o código deve ser recuperado a partir do armazenamento de volume durante a execução.
[0068] Dispositivos de entrada/saída ou E/S (incluindo, mas não limitado a teclados, monitores, dispositivos ponteiros, DASD, fita, CDs, DVDs, pen drives e outros meios de memória, etc.) podem ser acoplados com o sistema tanto diretamente quanto através de controladores de E/S intervenientes. Adaptadores de rede também podem ser acoplados com o sistema para permitir que o sistema de processamento de dados seja acoplado com outros sistemas de processamento de dados ou impressoras remotas ou dispositivos de armazenamento através de redes públicas ou privadas intervenientes. Modems, modems a cabo, e placas de ethernet são apenas alguns dos tipos disponíveis de adaptadores de rede.
[0069] Em referência à figura 8, componentes representativos de um sistema de computador host 5000 para implementar um ou mais aspectos da presente invenção são retratados. O computador host representativo 5000 compreende uma ou mais CPUs 5001 em comunicação com a memória de computador (isto é, armazenamento central) 5002, bem como interfaces de E/S para armazenar dispositivos de mídia 5011 e redes 5010 para comunicar com outros computadores ou SANs e semelhantes. O CPU 5001 está em conformidade com uma arquitetura tendo um conjunto de instrução arquitetado e funcionalidade arquitetada. A CPU 5001 pode ter tradução dinâmica de endereço (DAT) 5003 para transformar endereços de programa (endereços virtuais) para endereços reais de memória. A DAT tipicamente inclui um translation lookasidebuffer (TLB) 5007 para traduções de cache de forma que acessos posteriores para o bloco de memória de computador 5002 não necessitam do atraso de traduções de endereço. Tipicamente, um cache 5009 é empregada entre a memória de computador 5002 e o processador 5001. O cache 5009 pode ser hierárquico tendo um grande cache disponível até mais do que um CPU e menor, mais rápido (menor nível) caches entre o grande cache e cada CPU. Em algumas implementações, os caches de menor nível são divididos para prover separados caches de nível inferior para busca de instrução e acessos de dados. Em uma concretização, uma instrução é buscada a partir de memória 5002 por uma unidade de busca de instrução 5004 através de um cache 5009. A instrução é decodificada em uma unidade de decodificação de instrução 5006 e despachada (com outras instruções em algumas concretizações) para a unidade ou unidades de execução de instrução 5008. Tipicamente várias unidades de execução 5008 são empregadas, por exemplo, uma unidade de execução aritmética, uma unidade de execução de ponto flutuante e uma unidade de execução de instrução de ramificação. A instrução é executada pela unidade de execução, acessando operandos a partir dos registros especificados por instrução ou memória como necessário. Se um operando deve ser acessado (carregado ou armazenado) a partir da memória 5002, uma unidade de carga/armazenamento 5005 tipicamente manipula o acesso sob controle da instrução sendo executada. Instruções podem ser executadas em circuitos de hardware ou em microcódigo interno (firmware) ou por uma combinação de ambos.
[0070] Como notado, um sistema de computador inclui informação no armazenamento local (ou principal), bem como endereçamento, proteção, e referência e alteração de gravação. Alguns aspectos do endereçamento incluem o formato de endereços, o conceito de espaços de endereço, os vários tipos de endereços, e a maneira em que um tipo de endereço é traduzido para outro tipo de endereço. Parte do armazenamento principal inclui localizações de armazenamento permanentemente designadas. Armazenamento principal provê o sistema com armazenamento de dados de acesso rápido diretamente endereçável. Ambos os dados e programas devem ser carregados para armazenamento principal (a partir de dispositivos de entrada) antes de eles poderem ser processados.
[0071] Armazenamento principal pode incluir um ou mais armazenamentos de buffer de acesso mais rápido menores, algumas vezes chamados de caches. Um cache é tipicamente fisicamente associado com uma CPU ou um processador de E/S. Os efeitos, exceto no desempenho, da construção física e o uso de meios de armazenamento distintos em geral não são observáveis pelo programa.
[0072] Caches separados podem ser mantidos para as instruções e para operandos de dados. Informação dentro de um cache é mantida em bytes contíguos em um limite integral chamado de um bloco de cache ou linha de cache (ou linha, para resumir). Um modelo pode prover uma Instrução de EXTRACT CACHE ATTRIBUTE que retorna o tamanho de uma linha de cache em bytes. Um modelo também pode prover instruções de PREFETCH DATA e PREFETCH DATA RELATIVE LONG que efetua a pré-busca de armazenamento para os dados ou instrução de cache ou a liberação de dados a partir do cache.
[0073] Armazenamento é observado como uma coluna horizontal longa de bits. Para a maioria das operações, acessos para armazenar procedem na sequência da esquerda para direita. A coluna de bits é subdividida em unidades de oito bits. Uma unidade de oito bits é chamada de um byte, que é o bloco de construção básico de todos os formatos de informação. Cada localização de byte no armazenamento é identificada por um inteiro não negativo único, que é o endereço daquela localização de byte ou, simplesmente, o endereço de byte. Localizações de byte adjacentes possuem endereços consecutivos, iniciando com 0 na esquerda e prosseguindo na sequência da esquerda para direita. Endereços também são inteiros binários não designados e são de 24, 31, ou 64 bits.
[0074] Informação é transmitida entre o armazenamento e uma CPU ou um subsistema de canal um byte, ou um grupo de bytes, de uma vez. A menos que seja especificado de outra forma, por exemplo, na z/Architecture, um grupo de bytes no armazenamento é endereçado pelo byte mais para esquerda do grupo. O número de bytes no grupo tanto é implicado quanto explicitamente especificado pela operação a ser realizada. Quando usado em uma operação de CPU, um grupo de bytes é chamado de um campo. Dentro de cada grupo de bytes, por exemplo, em z/Architecture, bits são numerados na sequência da esquerda para direita. Na z/Architecture, os bits mais a esquerda são algumas vezes referidos como os bits de “alta ordem” e os bits mais a direita como os bits de “low-order”. Números de bit não são endereços de armazenamento, no entanto. Apenas os bytes podem ser endereçados. Para operar em bits individuais de um byte no armazenamento, todo o byte é acessado. Os bits em um byte são numerados de 0 a 7, a partir da esquerda para direita (por exemplo, na z/Architecture) . Os bits em um endereço podem ser numerados de 8-31 ou 40-63 para endereços de 24 bits, ou 1-31 ou 33-63 para endereços de 31 bits; eles são numerados de 0-63 para endereços de 64 bits. Dentro de qualquer outro formato de comprimento fixado de múltiplos bytes, os bits que compõem o formato são numerados consecutivamente partindo de 0. Para os propósitos de detecção de erro, e preferivelmente para a correção, um ou mais bits de verificação podem ser transmitidos com cada byte ou com um grupo de bytes. Tais bits de verificação são gerados automaticamente pela máquina e não podem ser controlados diretamente pelo programa. Capacidades de armazenamento são expressas no número de bytes. Quando o comprimento de um campo de operando de armazenamento é implicado pelo código de operação de uma instrução, o campo é dito de ter um comprimento fixado, que pode ser de um, dois, quatro, oito, ou dezesseis bytes. Maiores campos podem ser implicados para algumas instruções. Quando o comprimento de um campo de operando de armazenamento não é implicado, mas é iniciado de maneira explícita, o campo é dito de ter um comprimento variável. Operandos de comprimento variável podem variar em comprimento pelos incrementos de um byte (ou com algumas instruções, em múltiplos de dois bytes ou outros múltiplos). Quando informação é colocada no armazenamento, os conteúdos de apenas estas localizações de byte são substituídas os quais são incluídos no campo designado, mesmo que a largura do campo físico para armazenar possa ser maior do que o comprimento do campo sendo armazenado.
[0075] Certas unidades de informação devem estar em um limite integral no armazenamento. Um limite é chamado de integral para uma unidade de informação quando o seu endereço de armazenamento é um múltiplo do comprimento da unidade em bytes. Nomes especiais são dados para os campos de 2, 4, 8, e 16 bytes em um limite integral. Uma metade de palavra é um grupo de dois bytes consecutivos em um limite de dois bytes e é o bloco de construção básico das instruções. Uma palavra é um grupo de quatro bytes consecutivos em um limite de quatro bytes. Uma palavra dupla é um grupo de oito bytes consecutivos em um limite de oito bytes. Uma palavra quádrupla é um grupo de 16 bytes consecutivos em um limite de 16 bytes. Quando endereços de armazenamento designam metades de palavra, palavras, palavras duplas, e palavras quádruplas, a representação binária do endereço contém um, dois, três, ou quatro bits zero mais a direita, respectivamente. instruções devem estar em limites integrais de dois bytes. Os operandos de armazenamento da maioria das instruções não possuem requisitos de alinhamento de limite.
[0076] Nos dispositivos que implementam caches separados para as instruções e operandos de dados, um atraso significativo pode ser esperado se o programa armazena para uma linha de cache a partir da qual as instruções são subsequentemente buscadas, independentemente de se o armazenamento altera as instruções que são buscadas subsequentemente.
[0077] Em uma concretização, a invenção pode ser praticada por software (algumas vezes referidas como código interno licenciado, firmware, microcódigo, mili-código, pico- código e semelhantes, qualquer uma da qual pode ser consistente com um ou mais aspectos a presente invenção). Em referência à figura 8, código de programa de software que incorpora um ou mais aspectos da presente invenção podem ser acessados pelo processador 5001 do sistema de host 5000 a partir de dispositivos de mídia de armazenamento de longo prazo 5011, tal como um drive de CD-ROM, drive de fita ou disco rígido. O código de programa de software pode ser incorporado em qualquer de uma variedade de meios conhecidos para o uso com um sistema de processamento de dados, tal como um disquete, disco rígido, ou CD-ROM. O código pode ser distribuído em tal mídia, ou pode ser distribuído para usuários a partir da memória de computador 5002 ou armazenamento de um sistema de computador sobre uma rede 5010 para outros sistemas de computador para o uso pelos usuários de tais outros sistemas.
[0078] O código de programa de software inclui um sistema de operação que controla a função e interação dos vários componentes de computador e um ou mais programas de aplicativo. Código de programa normalmente é paginado a partir do dispositivo de mídia de armazenamento 5011 para o armazenamento de computador relativamente de maior velocidade 5002 onde está disponível para o processamento pelo processador 5001. As técnicas e métodos para incorporar código de programa de software na memória, na mídia física, e/ou código de software de distribuição através das redes são bem conhecidos e não serão adicionalmente discutidos aqui. Código de programa, quando criado e armazenado em um meio tangível (incluindo, mas não limitado a módulos de memória eletrônica (RAM), memória flash, Discos Compactos (CDs), DVDs, Fita Magnética e semelhantes geralmente é referido como um "produto de programa de computador". O produto de programa de meio de computador tipicamente é legível por um circuito de processamento preferivelmente em um sistema de computador para a execução pelo circuito de processamento.
[0079] A figura 9 ilustra uma estação de trabalho representativa ou sistema de hardware de servidor em que um ou mais aspectos da presente invenção podem ser praticados. O sistema 5020 da figura 9 compreende um sistema de computador de base representativo 5021, tal como um computador pessoal, uma estação de trabalho ou um servidor, incluindo dispositivos periféricos opcionais. O sistema de computador de base 5021 inclui um ou mais processadores 5026 e um barramento empregado para conectar e permitir a comunicação entre os processadores 5026 e os outros componentes do sistema 5021 de acordo com técnicas conhecidas. O barramento conecta o processador 502 6 com a memória 5025 e armazenamento de longo prazo 5027 que pode incluir um disco rígido (incluindo qualquer um de mídia magnética, CD, DVD e Memória de flash, por exemplo) ou um drive de fita por exemplo. O sistema 5021 também deve incluir um adaptador de interface de usuário, que conecta o microprocessador 5026 através do barramento com um ou mais dispositivos de interface, tais como um teclado 5024, um mouse 5023, uma impressora/escâner 5030 e/ou outros dispositivos de interface, que podem ser de qualquer dispositivo de interface de usuário, tal como uma tela sensível ao toque, bloco de entrada digitalizado, etc. O barramento também conecta um dispositivo de exibição 5022, tal como uma tela de LCD ou monitor, com o microprocessador 5026 através de um adaptador de exibição.
[0080] O sistema 5021 pode se comunicar com outros computadores ou redes de computadores por meio de um adaptador de rede capaz de comunicar 5028 com uma rede 5029. Exemplos de adaptadores de rede são canais de comunicações, anel de token, ethernet ou modems. Alternativamente, o sistema 5021 pode se comunicar usando uma interface sem fios, tal como uma placa de CDPD (dados de pacote digital de celular). O sistema 5021 pode ser associado com tais outros computadores em uma rede de área local (LAN) ou uma rede de longa distância (WAN), ou o sistema 5021 pode ser um cliente em um arranjo de cliente/servidor com outro computador, etc. Todas estas configurações, bem como as comunicações apropriadas de hardware e software, são conhecidas na técnica.
[0081] A figura 10 ilustra uma rede de processamento de dados 5040 em que um ou mais aspectos da presente invenção podem ser praticados. A rede de processamento de dados 5040 pode incluir uma pluralidade de individual redes, tal como uma rede sem fio e uma rede com fio, cada uma das quais pode incluir uma pluralidade de estações de trabalho individuais 5041, 5042, 5043, 5044. Adicionalmente, como os peritos na técnica vão perceber, uma ou mais LANs podem estar incluídas, onde uma LAN pode compreender uma pluralidade de estações de trabalho inteligentes acopladas com um processador de host.
[0082] Ainda em referência à figura 10, as redes também podem incluir computadores de mainframe ou servidores, tais como um computador de gateway (servidor de cliente 5046) ou servidor de aplicativo (servidor remoto 5048 que pode acessar um repositório de dados e também pode ser acessado diretamente a partir de uma estação de trabalho 5045) . Um computador de gateway 5046 serve como um ponto de entrada para cada rede individual. Um gateway é necessário quando se conecta um protocolo de rede com outro. O gateway 5046 pode ser preferivelmente acoplado com outra rede (a Internet 5047, por exemplo) por meio de uma ligação de comunicações. O gateway 5046 também pode ser diretamente acoplado com uma ou mais estações de trabalho 5041, 5042, 5043, 5044 usando uma ligação de comunicações. O computador de gateway pode ser implementado usando um servidor de System z de IBM eServer™ disponível a partir de International Business Machines Corporation.
[0083] Em referência simultaneamente à figura 9 e à figura 10, código de programação de software que pode incorporar um ou mais aspectos da presente invenção pode ser acessado pelo processador 5026 do sistema 5020 a partir de mídia de armazenamento de longo prazo 5027, tal como um drive de CD-ROM ou disco rígido. O código de programação de software pode ser incorporado com qualquer de uma variedade de meios conhecidos para o uso com a sistema de processamento de dados, tal como um disquete, disco rígido, ou CD-ROM. O código pode ser distribuído em tal mídia, ou pode ser distribuído para os usuários 5050, 5051 a partir da memória ou armazenamento de um sistema de computador por uma rede para outros sistemas de computador para o uso pelos usuários de tais outros sistemas.
[0084] Alternativamente, o código de programação pode ser incorporado na memória 5025, e acessado pelo processador 5026 usando o barramento de processador. Tal código de programação inclui um sistema de operação que controla a função e a interação de vários componentes de computador e um ou mais programas de aplicativo 5032. Código de programa normalmente é paginado a partir do meio de armazenamento 5027 para memória de alta velocidade 5025 onde está disponível para o processamento pelo processador 5026. As técnicas e métodos para incorporar código de programação de software na memória, na mídia física, e/ou código de software de distribuição via redes são bem conhecidos e não serão adicionalmente discutidos aqui. Código de programa, quando criado e armazenado em um meio tangível (incluindo, mas não limitado aos módulos de memória eletrônica (RAM), memória de flash, Discos Compactos (CDs), DVDs, Fita Magnética e semelhantes geralmente é referido como um "produto de programa de computador". O produto de programa de meio de computador tipicamente é legível por um circuito de processamento preferivelmente em um sistema de computador para a execução pelo circuito de processamento.
[0085] O cache que está mais prontamente disponível para o processador (normalmente mais rápido e menor do que outros caches do processador) é o menor (L1 ou nível um) cache e armazenamento principal (memória principal) é o cache de maior nível (L3 se existem 3 níveis). O cache de menor nível geralmente é dividido para um cache de instrução (I-Cache) que retém instruções de máquina a ser executadas e um cache de dados (D-Cache) que retém operandos de dados.
[0086] Em referência à figura 11, um exemplo de processador concretização é representado para o processador 5026. Tipicamente um ou mais níveis de cache 5053 são empregados para blocos de memória de buffer de maneira a aprimorar o desempenho do processador. O cache 5053 é um buffer de alta velocidade que retém linhas de cache dos dados de memória que são prováveis de ser usados. Linhas de cache típicas são de 64, 128 ou 256 bytes de dados de memória. Caches separados geralmente são empregados para instruções de cache do que para dados de cache. Coerência de cache (sincronização de cópias de linhas na memória e os caches) geralmente é provido por vários algoritmos "snoop"bem conhecidos na técnica. Armazenamento de memória principal 5025 de um sistema de processador geralmente é referido como um cache. Em um sistema de processador tendo 4 níveis de cache 5053, armazenamento principal 5025 algumas vezes é referido como o cache de nível 5 (L5) já que é tipicamente mais rápido e apenas retém uma porção do armazenamento não volátil (DASD, fita, etc) que está disponível para um sistema de computador. Armazenamento principal 5025 "faz o armazenamento temporário" de páginas de dados paginadas para dentro e fora do armazenamento principal 5025 pelo sistema de operação.
[0087] Um contador de programa (contador de instrução) 5061 mantém o registro do endereço da instrução corrente a ser executada. Um contador de programa em um processador de z/Architecture é de 64 bits e pode ser truncado para 31 ou 24 bits para suportar antes do endereçamento de limites. Um contador de programa tipicamente é incorporado em um PSW (palavra de estado de programa) de um computador tal que ele persiste durante a comutação do contexto. Assim, um programa em progresso, tendo um valor de contador de programa, pode ser interrompido, por exemplo, pelo sistema de operação (comutação de contexto a partir do ambiente de programa para o ambiente de sistema de operação) . O PSW do programa mantém o valor de contador de programa enquanto o programa não está ativo, e o contador de programa (no PSW) do sistema de operação é usado enquanto o sistema de operação está em execução. Tipicamente, o contador de programa é incrementado por uma quantidade igual ao número de bytes da instrução corrente. Instruções de RISC (Computador com conjunto reduzido de instruções) tipicamente são de comprimento fixado enquanto instruções de CISC (Computador com conjunto complexo de instruções) tipicamente são de comprimento variável. Instruções da z/Architecture de IBM são instruções de CISC tendo um comprimento de 2, 4 ou 6 bytes. O contador de programa 5061 é modificado tanto por uma operação de comutação de contexto ou uma operação tomada por ramificação de uma instrução de ramificação por exemplo. Em uma operação de comutação de contexto, o valor de contador de programa corrente é economizado na palavra de estado de programa junto com outra informação de estado sobre o programa sendo executado (tal como códigos de condição) , e um novo valor de contador de programa é carregado apontando para uma instrução de um novo módulo de programa a ser executado. Uma operação tomada por ramificação é realizada de maneira a permitir que o programa tome decisões ou faça ciclo dentro do programa através do carregamento do resultado da instrução de ramificação para o contador de programa 5061.
[0088] Tipicamente uma unidade de busca de instrução 5055 é empregada para buscar instruções em nome do processador 5026. A unidade de busca tanto busca "próximas instruções sequenciais", instruções alvo de instruções tomadas por ramificação, ou primeiras instruções de um programa seguindo uma comutação de contexto. Unidade de busca de instruções modernas geralmente empregam técnicas de pré-busca para pré- buscar de maneira especulativa instruções com base na propensão de que as instruções pré-buscadas devem ser usadas. Por exemplo, uma unidade de busca pode buscar 16 bytes de instrução que incluem a próxima instrução sequencial e bytes adicionais de instruções sequenciais adicionais.
[0089] As instruções buscadas então são executadas pelo processador 5026. Em uma concretização, as instruções buscadas são passadas para uma unidade de envio 5056 da unidade de busca. A unidade de envio decodifica as instruções e direciona informação sobre as instruções decodificadas para as unidades apropriadas 5057, 5058, 5060. Uma unidade de execução 5057 tipicamente vai receber informação sobre instruções aritméticas decodificadas a partir de uma unidade de busca de instrução 5055 e vai realizar operações aritméticas nos operandos de acordo com o opcode da instrução. Operandos são providos para a unidade de execução 5057 preferivelmente tanto a partir da memória 5025, registros arquitetados 5059 ou a partir de um campo imediato da instrução sendo executada. Resultados da execução, quando armazenada, são armazenados tanto na memória 5025, registros 5059 quanto em outro hardware de máquina (tal como registros de controle, registros de PSW e semelhantes).
[0090] Um processador 5026 tipicamente possui uma ou mais unidades 5057, 5058, 5060 para executar a função da instrução. Em referência à figura 12A, uma unidade de execução 5057 pode se comunicar com registros gerais arquitetados 5059, uma unidade de envio/decodificação 5056, uma unidade de armazenamento de carga 5060, e outras 5065 unidades de processador por meio de lógica de interface 5071. Uma unidade de execução 5057 pode empregar vários circuitos de registro 5067, 5068, 5069 para reter informação que a unidade de lógica e aritmética (ALU) 5066 vai operar. A ALU realiza operações aritméticas tais como adição, subtração, multiplicação e divisão bem como função lógica tal como AND, OR e Exclusive-OR (XOR), rotação e deslocamento. Preferivelmente a ALU suporta operações especializadas que são dependentes do projeto. Outros circuitos podem prover outras instalações arquitetadas 5072 incluindo códigos de condição e lógica de suporte de recuperação, por exemplo. Tipicamente o resultado de uma operação de ALU é mantido em um circuito de registro de saída 5070 que pode direcionar o resultado para uma variedade de outras funções de processamento. Existem muitos arranjos de unidades de processador, a presente descrição está intencionada apenas para prover um entendimento representativo de uma concretização.
[0091] Uma instrução de ADD, por exemplo, pode ser executada em uma unidade de execução 5057 tendo funcionalidade aritmética e lógica enquanto uma instrução de ponto flutuante, por exemplo, pode ser executada em uma execução de ponto flutuante tendo capacidade de ponto flutuante especializada. Preferivelmente, uma unidade de execução opera nos operandos identificados por uma instrução realizando uma função definida por opcode nos operandos. Por exemplo, uma instrução de ADD pode ser executada em uma unidade de execução 5057 nos operandos encontrados nos dois registros 5059 identificados pelos campos de registro da instrução.
[0092] A unidade de execução 5057 realiza a adição aritmética nos dois operandos e armazena o resultado em um terceiro operando onde o terceiro operando pode ser um terceiro registro ou um dos dois registros fonte. A unidade de execução preferivelmente usa uma Unidade de Lógica e Aritmética (ALU) 5066 que é capaz de realizar uma variedade de funções lógicas tais como Deslocamento, Rotação, AND, OR e XOR bem como uma variedade de funções algébricas incluindo qualquer um de adição, subtração, multiplicação, divisão. Algumas ALUs 5066 são projetadas para operações escalares e algum para ponto flutuante. Dados podem ser Big Endian (onde o byte menos significativo está no endereço de byte mais alto) ou Little Endian (onde o byte menos significativo está no endereço de byte mais baixo) dependendo da arquitetura. A z/Architecture de IBM é Big Endian. Campos assinados podem ser sinal e magnitude, complemento de 1 ou complemento de 2 dependendo da arquitetura. Um número em complemento de 2 é vantajoso em que a ALU não precisa projetar uma capacidade de subtração já que tanto um valor negativo quanto um valor positivo no complemento 2 requer apenas uma adição dentro de ALU. Números são comumente descritos de maneira resumida, onde um campo de 12 bit define um endereço de um bloco de 4.096 byte e é comumente como um bloco de 4 Kbyte (Kilobyte), por exemplo.
[0093] Em referência à figura 12B, informação de instrução de ramificação para executar uma instrução de ramificação tipicamente é enviada para uma unidade de ramificação 5058 que geralmente emprega um algoritmo de previsão de ramificação tal como uma tabela de histórico de ramificação 5082 para prever o resultado da ramificação antes de outras operações condicionais estarem completas. O alvo da corrente instrução de ramificação será buscado e executado de maneira especulativa antes das operações condicionais estarem completas. Quando as operações condicionais são completadas as instruções de ramificação executadas de maneira especulativa são tanto completadas ou descartadas com base nas condições da operação condicional e o resultado especulado. Uma instrução de ramificação típica pode testar códigos de condição e ramificação para um endereço alvo se os códigos de condição satisfazem o requisito de ramificação da instrução de ramificação, um endereço alvo pode ser calculado com base em vários números incluindo aqueles encontrados nos campos de registro ou um campo imediato da instrução por exemplo. A unidade de ramificação 5058 pode empregar uma ALU 5074 tendo uma pluralidade de circuitos de registro de entrada 5075, 5076, 5077 e um circuito de registro de saída 5080. A unidade de ramificação 5058 pode se comunicar com registros gerais 5059, unidade de envio de decodificação 5056 ou outros circuitos 5073, por exemplo.
[0094] A execução de um grupo de instruções pode ser interrompida por uma variedade de razões incluindo uma comutação de contexto iniciada por um sistema de operação, uma exceção de programa ou erro que causa uma comutação de contexto, um sinal de interrupção de E/S causando uma comutação de contexto ou atividade de multi-threading de uma pluralidade de programas (em um ambiente de multithreading), por exemplo.
[0095] Preferivelmente uma ação de comutação de contexto economiza informação de estado sobre um programa atualmente em execução e então carrega informação de estado sobre outro programa sendo invocado. Informação de estado pode ser economizada em registros de hardware ou em memória, por exemplo. Informação de estado preferivelmente compreende um valor de contador de programa apontando para uma próxima instrução a ser executada, códigos de condição, informação de tradução de memória e conteúdo de registro arquitetado. Uma atividade de comutação de contexto pode ser exercitada por circuitos de hardware, programas de aplicativo, programas de sistema de operação ou código de firmware (microcódigo, pico-código ou código interno licenciado (LIC)) sozinhos ou em combinação.
[0096] Um processador acessa operandos de acordo com métodos definidos por instrução. A instrução pode prover um operando imediato que usa o valor de uma porção da instrução, pode prover um ou mais campos de registro de maneira explícita apontando tanto para registros de propósito geral quanto para registros de aplicação específica (registros de ponto flutuante por exemplo). A instrução pode usar registros implicados identificados por um campo de opcode como os operandos. A instrução pode usar localizações de memória para os operandos. Uma localização de memória de um operando pode ser provida por um registro, um campo imediato, ou uma combinação de registros e campo imediato como exemplificado pela instalação de deslocamento longo de z/Architecture em que a instrução define um registro de base, um registro de índice e um campo imediato (campo de deslocamento) que são adicionados juntos para prover o endereço do operando na memória, por exemplo. Localização aqui tipicamente implica uma localização na memória principal (armazenamento principal) a menos que seja indicado de outra forma.
[0097] Em referência à figura 12C, um processador acessa o armazenamento usando uma unidade de carga/ armazenamento 5060. A unidade de carga/ armazenamento 5060 pode realizar uma operação de carga através da obtenção do endereço do operando alvo na memória 5053 e carregamento do operando em um registro 5059 ou outra localização de memória 5053, ou pode realizar uma operação de armazenamento através da obtenção do endereço do operando alvo na memória 5053 e armazenar dados obtidos a partir de um registro 5059 ou outra localização de memória 5053 na localização de operando alvo na memória 5053. A unidade de carga/ armazenamento 5060 pode ser especulativa e pode acessar a memória em uma sequência que está fora de ordem com relação à sequência de instrução, no entanto a unidade de carga/ armazenamento 5060 é para manter a aparência para os programas que as instruções foram executadas em ordem. Uma unidade de carga /armazenamento 5060 pode se comunicar com registros gerais 5059, unidade de envio/decodificação 5056, interface de cache/memória 5053 ou outros elementos 5083 e compreende vários circuitos de registro, ALUs 5085 e lógica de controle 5090 para calcular endereços de armazenamento e para prover sequenciamento em linha para manter as operações em ordem. Algumas operações podem ser feitas fora de ordem, mas a unidade de carga/ armazenamento provê funcionalidade para fazer as operações fora de ordem aparecerem para o programa como tendo sido realizadas em ordem, como é bem conhecido na técnica.
[0098] Preferivelmente endereços que um programa de aplicativo "vê" geralmente são referidos como endereços virtuais. Endereços virtuais algumas vezes são referidos como "endereços lógicos" e "endereços eficazes". Estes endereços virtuais são virtuais pelo fato de que eles são redirecionados para localização de memória física por um de uma variedade de tecnologias de tradução de endereço dinâmico (DAT) incluindo, mas não limitado a, simplesmente pré-fixando um endereço virtual com um valor de deslocamento, traduzindo o endereço virtual através das tabelas de tradução, as tabelas de tradução preferivelmente compreendendo pelo menos uma tabela de segmento e uma tabela de página sozinha ou em combinação, preferivelmente, a tabela de segmento tendo uma entrada apontando para a tabela de página. Nesta z/Architecture, uma hierarquia de tradução é provida incluindo uma primeira tabela de região, uma segunda tabela de região, uma terceira tabela de região, uma tabela de segmento e uma tabela de página opcional. O desempenho das traduções de endereço geralmente é aprimorado usando um translation lookaside buffer (TLB) que compreende entradas que mapeiam um endereço virtual para uma localização de memória física associada. As entradas são criadas quando o DAT traduz um endereço virtual usando as tabelas de tradução. Subsequente uso do endereço virtual então pode usar a entrada de TLB rápido em vez do que os acessos de tabela de tradução sequencial lenta. O conteúdo de TLB pode ser gerenciado por uma variedade de algoritmos de substituição incluindo LRU (Mais Recentemente usado).
[0099] No caso onde o processador é um processador de um sistema de múltiplos processadores, cada processador possui responsabilidade para manter recursos divididos, tal como E/S, caches, TLBs e memória, intertravados para a coerência. Tipicamente, tecnologias de "snoop"serão usadas na manutenção da coerência de cache. Em um ambiente de snoop, cada linha de cache pode ser marcada como estando em qualquer um de um estado dividido, um estado exclusivo, um estado alterado, um estado inválido e semelhantes de maneira a facilitar a divisão.
[0100] Unidades de E/S 5054 (figura 11) proveem o processador com meios para anexar aos dispositivos periféricos incluindo fita, disco, impressoras, exibidores, e redes por exemplo. Unidades de E/S geralmente são apresentadas para o programa de computador por drivers de software. Nos mainframes, tais como o sistema z® a partir de IBM®, adaptadores de canal e adaptadores de sistema aberto são unidades de E/S do mainframe que proveem as comunicações entre o sistema de operação e dispositivos periféricos.
[0101] Adicionalmente, outros tipos de ambientes de computação podem se beneficiar a partir de um ou mais aspectos da presente invenção. Como um exemplo, um ambiente pode incluir um emulador (por exemplo, software ou outros mecanismos de emulação), em que uma particular arquitetura (incluindo, por exemplo, execução de instrução, funções arquitetadas, tais como traduções de endereço, e registros arquitetados) ou um subconjunto das mesmas é emulado (por exemplo, em um sistema de computador nativo tendo um processador e memória). Em tal ambiente, uma ou mais funções de emulação do emulador podem implementar um ou mais aspectos da presente invenção, mesmo que um computador que executa o emulador possa ter uma diferente arquitetura do que as capacidades que são emuladas. Como um exemplo, no modo de emulação, a instrução específica ou operação sendo emulada é decodificada, e uma função de emulação apropriada é embutida para implementar a individual instrução ou operação.
[0102] Em um ambiente de emulação, um computador host inclui, por exemplo, uma memória para armazenar instruções e dados; uma unidade de busca de instrução para buscar instruções a partir da memória e para opcionalmente, prover armazenamento temporário local para a instrução buscada; uma unidade de decodificação de instrução para receber a instrução buscadas e para determinar o tipo de instruções que foram buscadas; e uma unidade de execução de instrução para executar as instruções. A execução pode incluir carregar dados para um registro a partir da memória; armazenar dados de volta para a memória a partir de um registro; ou realizar algum tipo de operação aritmética ou lógica, como determinado pela unidade de decodificação. Em um exemplo, cada unidade é implementada em software. Por exemplo, as operações sendo realizadas pelas unidades são implementadas como uma ou mais subrotinas dentro do software de emulador.
[0103] Mais particularmente, em um mainframe, instruções de máquina arquitetadas são usadas pelos programadores, comumente atualmente programadores "C", geralmente por meio de uma aplicação de compilador. Estas instruções armazenadas no meio de armazenamento podem ser executadas de maneira nativa em um Servidor de IBM® de z/Architecture, ou alternativamente nas máquinas que executam outras arquiteturas. Eles podem ser emulados nos servidores de IBM® existentes e futuros e em outras máquinas de IBM® (por exemplo, servidores de Power Systems e servidores System x®). Eles podem ser executados nas máquinas que rodam Linux em uma grande variedade de máquinas usando hardware fabricado por IBM®, Intel®, AMD™, e outros. Além da execução naquele hardware sob uma z/Architecture, Linux pode ser usado bem como máquinas que usam a emulação por Hercules, UMX ou FSI (Fundamental Software, Inc), onde em execução geral está em um modo de emulação. No modo de emulação, software de emulação é executado por um processador nativo para emular a arquitetura de um processador emulado.
[0104] O processador nativo tipicamente executa software de emulação compreendendo tanto firmware quanto um sistema de operação nativo para realizar a emulação do processador emulado. O software de emulação é responsável por buscar e executar instruções da arquitetura de processador emulado. O software de emulação mantém um contador de programa emulado para manter registro de limites de instrução. O software de emulação pode buscar uma ou mais instruções de máquina emuladas de uma vez e converter as uma ou mais instruções de máquina emuladas para um correspondente grupo de instruções de máquina nativas para a execução pelo processador nativo. Estas instruções convertidas podem ser armazenadas em cache tal que uma conversão mais rápida pode ser alcançada. Não obstante, o software de emulação é para manter as regras de arquitetura da arquitetura de processador emulada de forma a garantir que sistemas de operação e aplicativos escritos para o processador operem de maneira correta. Adicionalmente, o software de emulação é para prover recursos identificados pela arquitetura de processador emulada incluindo, mas não limitado a, registros de controle, registros de propósito geral, registros de ponto flutuante, função de tradução de endereço dinâmico incluindo tabelas de segmento e tabelas de página por exemplo, mecanismos de interrupção, mecanismos de comutação de contexto, relógios de Hora do Dia (TOD) e interfaces arquitetadas para subsistemas de E/S tais que um sistema de operação ou um programa de aplicativo designado para rodar no processador emulado, podem ser rodados no processador nativo tendo o software de emulação.
[0105] Uma instrução específica que é emulada é decodificada, e uma subrotina é chamada para realizar a função da instrução individual. Uma função de software de emulação que emula uma função de um processador emulado é implementada, por exemplo, em uma subrotina de "C" ou driver, ou algum outro método de provisão de um driver para o hardware específico como vai estar dentro da perícia dos peritos na técnica após o entendimento da descrição da concretização preferida. Várias patentes de emulação de software e hardware incluindo, mas não limitado a Patente de Cartas dos EUA No. 5.551.013, intitulada "Multiprocessor for Hardware Emulation", de Beausoleil et al; e Patente Carta dos EUA No. 6.009.261, intitulada "Preprocessing of Stored Target Routines to emulate Incompatible Instructions on a Target Processor", de Scalzi et al; e Patente Carta dos EUA No. 5.574.873, intitulada "Decoding Instruction of guest to Directly Access emulation routine emulating the Instructions of host", de Davidian et al; e Patente Carta dos EUA No. 6.308.255, intitulado "Symmetrical Multiprocessing Bus and Chipset Used for Coprocessador Support Allowing Non-Native Code to Run in a System", de Gorishek et al; e Patente Carta dos EUA No. 6.463.582, intitulado "Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method", de Lethin et al; e Patente Carta dos EUA No. 5.790.825, intitulado "Method to emulate Instructions of host on a host computer Through Dynamic Recompilation of Host Instructions", de Eric Traut, cada um dos quais é incorporado aqui por referência em sua totalidade; e muitos outros, ilustram uma variedade de vários modos para alcançar a emulação de um formato de instrução arquitetado para uma diferente máquina para uma máquina alvo disponível para os peritos na técnica.
[0106] Na figura 13, um exemplo de um sistema de computador host emulado 5092 é provido que emula um sistema de computador host 5000' de uma arquitetura de host. No sistema de computador host emulado 5092, o processador de host (CPU) 5091 é um processador de host emulado (ou virtual host processador) e compreende um processador de emulação 5093 tendo uma diferente arquitetura definida de instrução nativa do que aquela do processador 5091 do computador host 5000'. O sistema de computador host emulado 5092 possui a memória 5094 acessível para o processador de emulação 5093. Na concretização de exemplo, a memória 5094 é dividida em uma porção de memória de computador host 5096 e uma porção de rotina de emulação 5097. A memória de computador host 5096 está disponível para os programas do computador host emulado 5092 de acordo com host arquitetura de computador. O processador de emulação 5093 executa instruções nativas de um conjunto de instrução arquitetado de uma arquitetura diferente do que aquele do processador emulado 5091, as instruções nativas obtidas a partir da rotina de emulação memória 5097, e pode acessar uma instrução de host para a execução a partir de um programa na memória de computador host 5096 empregando uma ou mais instruções obtidas em uma sequência & rotina de acesso/decodificação que pode decodificar as instruções de host acessadas para determinar uma rotina de execução de instrução nativa para emular a função da instrução de host acessada. Outras instalações que são definidas para a arquitetura de sistema de computador host 5000' podem ser emuladas pelas rotinas de instalações arquitetadas, incluindo tais instalações como registros de propósito geral, registros de controle, tradução de endereço dinâmico e suporte de subsistema de E/S e cache de processador, por exemplo. A rotina de emulação também pode tomar vantagem de funções disponíveis no processador de emulação 5093 (tal como general registros e tradução dinâmica de endereços virtuais) para aprimorar o desempenho de rotina de emulação. Hardware especial e motores de descarga também podem ser providos para auxiliar o processador 5093 na emulação da função do computador host 5000'.
[0107] A terminologia usada aqui é para o propósito de descrever particulares concretizações apenas e não está intencionada a ser limitante da invenção. Como usado aqui, as formas no singular "um", "uma", "a" e "o" também estão intencionadas a incluir as formas no plural, a menos que o contexto indique claramente de outra forma. Será entendido adicionalmente que os termos "compreende" e/ou "compreendendo", quando usados nesta especificação, especificam a presença de funcionalidades, integrantes, etapas, operações, elementos, e/ou componentes declarados, mas não impedem a presença ou a adição de uma ou mais outras funcionalidades, integrantes, etapas, operações, elementos, componentes e/ou grupos dos mesmos.
[0108] As correspondentes estruturas, materiais, atos, e equivalentes de todos os meios ou etapa mais elementos de função nas reivindicações abaixo, se existe qualquer um, estão intencionados a incluir qualquer estrutura, material, ou ato para realizar a função em combinação com outros elementos reivindicados como especificamente reivindicado. A descrição de um ou mais aspectos da presente invenção foi apresentada para os propósitos de ilustração e descrição, mas não está intencionada de ser exaustiva ou limitada para a invenção na forma divulgada. Muitas modificações e variações serão aparentes para os peritos na técnica na técnica sem se afastar do escopo e espírito da invenção. A concretização foi escolhida e descrita de maneira a explicar melhor os princípios da invenção e a aplicação prática, e para permitir que outros peritos na técnica entendam a invenção para várias concretizações com várias modificações como são adequadas para o uso particular contemplado. Capítulo 23. Instruções de Coluna de Vetor Instalação de Coluna de Vetor Instruções
[0109] A menos que seja especificado de outra forma todos os operandos são operandos de registro de vetor. Um "V" na sintaxe de montador designa um operando de vetor. VETOR ENCONTRA QUALQUER IGUAL
[0110] Prosseguindo da esquerda para direita, cada elemento inteiro binário não designado do segundo operando é comparado para a igualdade com cada elemento inteiro binário não designado do terceiro operando e opcionalmente zero se a bandeira de Busca Zero é definida no campo M5.
[0111] Se o sinalizador de Tipo de Resultado (RT) no campo M5 é zero, então para cada elemento no segundo operando que corresponde qualquer elemento no terceiro operando, ou opcionalmente zero, as posições de bit do correspondente elemento no primeiro operando são definidos para uns, de outra forma eles são definidos para zero.
[0112] Se o sinalizador de Tipo de Resultado (RT) no campo M5 é um, então o índice de byte do elemento mais a esquerda no segundo operando que corresponde um elemento no terceiro operando ou zero é armazenado no byte sete do primeiro operando.
[0113] Cada instrução possui uma seção Mnemônica Estendida que descreve mnemônicas estendidas recomendadas e a sua correspondente sintaxe de montador de máquina.
[0114] Nota de programação: Para todas as instruções que opcionalmente definem o código de condição, o desempenho pode ser degradado se o código de condição é definido.
[0115] Se o marcador de Tipo de resultado (RT) no campo M5 é um e nenhum byte é descoberto de ser igual, ou zero se o marcador de busca zero é definido, um índice igual ao número de bytes no vetor é armazenado no byte sete do primeiro operando.
[0116] O campo M4 especifica o controle de tamanho de elemento (ES) . O controle de ES especifica o tamanho dos elementos no registro de operando de vetores. Se um valor reservado é especificado, uma exceção de especificação é reconhecido. 0 - Byte 1 - Meia palavra 2 - Palavra 3-15 - Reservado
[0118] Os bits do campo M5 são definidos como na sequência: • Tipo de Resultado (RT): se zero, cada elemento resultante é uma máscara de todas as comparações de faixa naquele elemento. Se um, um índice de byte é armazenado para byte sete do primeiro operando e zeros são armazenados em todos outros elementos. • Busca Zero (ZS): se um, cada elemento do segundo operando também é comparado com zero. • Conjunto de Código de Condição (CC): se zero, o código de condição não é definido e permanece inalterado. Se um, o código de condição é definido como especificado na seguinte seção.
[0119] Uma exceção de especificação é reconhecida e nenhuma outra ação é tomada se qualquer um dos seguintes ocorre: 1. O campo M4 contém um valor de 3-15. 2. Bit 0 do campo M5 não são zero.
[0120] Código de Condição Resultante:
[0121] Se o marcador de CC é zero, o código permanece inalterado.
[0122] Se o marcador de CC é um, o código é definido como na sequência:
[0123] 0 se o bit ZS é definido, não houveram correspondências em um elemento indexado inferior do que zero no segundo operando. 1 Alguns elementos do segundo operando correspondem pelo menos um elemento no terceiro operando 2 Todos os elementos do segundo operando correspondem pelo menos um elemento no terceiro operando 3 Nenhum elemento no segundo operando corresponde qualquer elemento no terceiro operando
[0124] Exceções de Programa: 4 Dado com DXC FE, Registro de vetor • Operação se a instalação de extensão de vetor não está instalada • Especificação (Valor de ES reservado) • Restrição de transação Mnemônicas estendidas: VFAEB V1.V2.V3.M5 VFAE VJ.VJ.VI.O.M, VFAEH V1.V2.V3.M5 VFAEF V1.V2.V3.M5 VFAEBS V1.V2.V3.M5 VFAE VJ,V2,V3,1,M5 VFAE VJ,V2,V3,2.M5 VFAE V|,V2,V3,0,(M51 XT) VFAEHS V|.V2,V,,MS VFAE VJ,V2,V3,1,(MSI XT) VFAEFS V1.V2.V3.M5 VFAE VJ,V2,V3.2.(M51 XT) VFAEZB V|,V2,V3,MS VFAE V|,V2,V3,0,(M51 X'2') VFAEZH V1.V2.V3.M5 VFAE V|,V2,V3,1,(M51 X'2*) VFAEZF V|,V2,VJ,M5 VFAE Vj.V2.V3,2,(Ms 1 X'2’) VFAEZBS Vj.V2.V3.M5 VFAE VI,V2,V3,0,(M5I X'3') VFAEZHS Vj.V2.V3.M5 VFAE Vj,V2,V3,l,(Ms | X’3') VFAEZFS Vj.V2.V3.M5 VFAE VJ.V2,V3,2.(M$ I X’3') VETOR ENCONTRA ELEMENTO IGUAL
[0125] Prosseguindo a partir da esquerda para direita, os elementos inteiros binários não designados do segundo operando são comparados com os correspondentes elementos inteiros binários não designados do terceiro operando. Se dois elementos são iguais, o índice de byte do primeiro byte do elemento igual mais a esquerda é posicionado no byte sete do primeiro operando. Zeros são armazenados nos bytes remanescentes do primeiro operando. Se nenhum byte é encontrado como sendo igual, ou zero se a comparação de zero é definida, então um índice igual ao número de bytes no vetor é armazenado no byte sete do primeiro operando. Zeros são armazenados nos bytes remanescentes.
[0126] Se o bit de Busca Zero (ZS) é definido no campo M5, então cada elemento no segundo operando também é comparado para a igualdade com zero. Se um elemento zero é encontrado no segundo operando antes de qualquer outro elemento do segundo e do terceiro operando ser descoberto como sendo igual, o índice de byte do primeiro byte do elemento descoberto de ser zero é armazenado no byte sete do primeiro operando e zeros são armazenados em todas as outras localizações de byte. Se o marcador de Conjunto de código de condição (CC) é um, então o código de condição é definido para zero.
[0127] O campo M4 especifica o controle de tamanho de elemento (ES) . O controle de ES especifica o tamanho dos elementos nos registros de operando de vetor. Se um valor reservado é especificado, uma exceção de especificação é reconhecida. 0 - Byte 1 - Meia palavra 2 - Palavra 3-15 - Reservado
[0129] Os bits do campo M5 são definidos como na sequência: • Reservado: Bits 0-1 são reservados e devem ser zero. De outra forma, uma exceção de especificação é reconhecida. • Busca de Zero (ZS): se for um, cada elemento do segundo operando também é comparado com zero. • Conjunto de Código de Condição (CC): se zero, o código de condição permanece inalterado. Se for um, o código de condição é definido como especificado na seguinte seção.
[0130] Uma exceção de especificação é reconhecida e nenhuma outra ação é tomada se qualquer uma das seguintes ocorre: 1. O campo M4 contém um valor de 3-15. 2. Bits 0-1 do campo M5 não são zero.
[0131] Código de Condição Resultante:
[0132] Se o bit 3 do campo M5 é definido para um, o código é definido como na sequência: 0 se o bit de comparação de zero é definido, comparação detecta um elemento zero no segundo operando em um elemento com um menor índice do que quaisquer comparações. 1 Comparação detecta uma correspondência entre o segundo e o terceiro operandos em algum elemento. Se o bit de comparação de zero é definido, esta correspondência ocorre em um elemento com um índice menor do que ou igual ao elemento de comparação zero. 2 - 3 Nenhum elemento comparado igual.
[0133] Se o bit 3 do campo M5 é zero, o código permanece inalterado.
[0134] Exceções de Programa: • Dados com DXC FE, Registro de vetor • Operação se a instalação de extensão de vetor não é instalada • Especificação (Valor de ES reservado) • Restrição de transação
[0135] Mnemónicas estendidas: VFEEB V1.V2.V3.M5 VFEE VI.VJ.VJ.O.MJ VFEEH V|,V2tV.,,M$ VFEE VI.VZ.VJ.I.MS VFEEF VHV2.VJ.M5 VFEEV|,V2,VJ,0,(M5|XT) VFEEHS vi.v2.v3.M5 VFEE VÍ,V2.VJ,1,(M5 |XT) VFEEFS VI.V2.VJ.M5 VFEEV|,V2,VJ,2,(M5|X'1') VFEEZB Vi.V2.V3,Ms VFEE V|,V2,V3,0,(M51 X'2') VFEEZH VÍ.VJ.VJ.MS VFEE Vi.Vj.Vj.l.íM, 1 X'2') VFEEZF Vi.V2.V3.M5 VFEE V|,V2,VJ,2,(M5 I X'2') VFEEZBS Vi.V2.Vj.M5 VFEE V|,V2,VJ,0.(M5 |X3') VFEEZHS Vi.V2.Vj.M5 VFEEVi.Vj.Vj.l.fMslXB') VFEEZFS V1.V2.V3.M5 VFEE V|,V2.V(.2.(M5 I X'3')
[0136] Notas de programação: 1. Um índice de byte sempre é armazenado para o primeiro operando para qualquer tamanho de elemento. Por exemplo, se o tamanho de elemento foi definido para meia palavra e a 2a meia palavra indexada comparada igual, então um índice de byte de 4 pode ser armazenado. 2. O terceiro operando não deve conter elementos com um valor de zero. Se o terceiro operando does contêm um zero e ele matches com um elemento de zero no segundo operando antes de qualquer outra comparação igual, código de condição um é definido independentemente do ajuste de bit de comparação de zero. VETOR ENCONTRA ELEMENTO NÃO IGUAL
[0137] Prosseguindo a partir da esquerda para direita, os elementos inteiros binários não designados do segundo operando são comparados com os correspondentes elementos inteiros binários não designados do terceiro operando. Se dois elementos não são iguais, o índice de byte do elemento não igual mais a esquerda é colocado no byte sete do primeiro operando e zeros são armazenados para todos os outros bytes. Se o bit de Conjunto de código de condição (CC) no campo M5 é definido para um, o código de condição é definido para indicar qual operando foi maior. Se todos os elementos foram iguais, então um índice de byte igual ao tamanho de vetor é posicionado no byte sete do primeiro operando e zeros são posicionados em todas as outras localizações de byte. Se o bit de CC é um, código de condição três é definido.
[0138] Se o bit de busca de zero (ZS) é definido no campo M5, cada elemento no segundo operando também é comparado para a igualdade com zero. Se um elemento de zero é encontrado no segundo operando antes de qualquer outro elemento do segundo operando são descobertos de ser desiguais, o índice de byte do primeiro byte do elemento descoberto de ser zero é armazenado no byte sete do primeiro operando. Zeros são armazenados em todos os outros bytes e o código de condição 0 é definido.
[0139] O campo M4 especifica o controle de tamanho de elemento (ES) . O controle de ES especifica o tamanho dos elementos no registro de operando de vetores. Se um valor reservado é especificado, uma exceção de especificação é reconhecida. 0 - Byte 1 - Meia palavra 2 - Palavra 3-15 - Reservado
[0141] Os bits do campo M5 são definidos como na sequência: • Busca Zero (ZS) : se for um, cada elemento do segundo operando também é comparado com zero.
[0142] • Código de condição Set (CC) : se zero, o código de condição não e definido e permanece inalterado. Se for um, o código de condição é definido como especificado na seguinte seção.
[0143] Uma exceção de especificação é reconhecida e nenhuma outra ação é tomada se qualquer um dos seguintes ocorre: 1. O campo M4 contém um valor de 3-15. 2. Bits 0-1 de o campo M5 não são zero. Código de condição resultante:
[0144] Se o bit 3 do campo M5 é definido para um, o código é definido como na sequência: 0 se o zero, bit de comparação é definido, comparação detecta um elemento de zero em ambos os operandos em um elemento indexado inferior do que qualquer comparação desigual 1 Uma não correspondência de elemento foi detectada e o elemento em VR2 é menor do que o elemento em VR3 2 Uma não correspondência de elemento foi detectada e o elemento em VR2 é maior do que o elemento em VR3 3 Todos os elementos comparados iguais, e se o bit de comparação de zero é definido, nenhum elemento de zero foi encontrado no segundo operando.
[0145] Se o bit 3 do campo M5 é zero, o código permanece inalterado.
[0146] Exceções de Programa: • Dados com DXC FE, Registro de vetor • Operação se a instalação de extensão de vetor não está instalada • Especificação (Valor de ES reservado) • Restrição de Transação
[0148] Prosseguindo da esquerda para direita, os elementos inteiros binários não designados no segundo operando são comparados com faixas de valores definidos por pares de número par - ímpar de elementos no terceiro e no quarto operandos. Os combinados com valores de controle a partir do quarto operando definem a faixa de comparações a ser realizadas. Se um elemento corresponde qualquer uma das faixas especificadas pelo terceiro e pelo quarto operandos, é considerado como sendo uma correspondência.
[0149] Se o marcador de Tipo de Resultado (RT) no campo M6 é zero, as posições de bit do elemento no primeiro operando correspondendo com o elemento sendo comparado no segundo operando são definidos para um se o elemento corresponde qualquer uma das faixas, de outra forma que eles são definidos para zero.
[0150] Se o marcador de Tipo de Resultado (RT) no campo M6 é definido para um, o índice de byte do primeiro elemento no segundo operando que corresponde qualquer uma das faixas especificadas pelo terceiro e quarto operandos ou uma comparação zero, se o marcador ZS é definido para um, é posicionado no byte sete do primeiro operando e zeros são armazenados nos bytes remanescentes. Se nenhum elemento corresponde, então um índice igual ao número de bytes em um vetor é posicionado no byte sete do primeiro operando e zeros são armazenados nos bytes remanescentes.
[0151] O marcador de busca de zero (ZS) no campo M6, se definido para um, vai adicionar uma comparação para zero dos elementos do segundo operando para as faixas providas pelo terceiro e quarto operandos. Se uma comparação de zero em um elemento indexado inferior do que qualquer outra comparação real, então o código de condição é definido para zero.
[0152] Os operandos contêm elementos do tamanho especificado pelo controle de tamanho de elemento no campo M5.
[0153] Os elementos do quarto operando possuem o seguinte formato:
[0157] Os bits nos elementos do quarto operando são definidos como na sequência: • Igual (EQ) : Quando é um uma comparação para a igualdade é feita. • Maior do que (GT) : Quando é um maior do que a comparação é realizada. • Menor do que (LT): Quando é um menor do que a comparação é realizada. • Todos os outros bits são reservados e devem ser zero para garantir a compatibilidade futura.
[0158] Os bits de controle podem ser usados em qualquer combinação. Se nenhum dos bits é definido, a comparação sempre vai produzir um resultado falso. Se todos os bits são definidos, a comparação sempre vai produzir um resultado real.
[0159] O campo M5 especifica o controle de tamanho de elemento (ES) . O controle de ES especifica o tamanho dos elementos nos registros de operando de vetor. Se um valor reservado é especificado, uma exceção de especificação é reconhecida. 0 - Byte 1 - Meia palavra 2 - Palavra 3-15 - Reservado
[0161] Os bits do campo M6 são definidos como na sequência: • Resultado de inversão (IN) : se zero, a comparação prossegue com o par de valores no vetor de controle. Se for um, o resultado dos pares das comparações nas faixas são invertidos. • Tipo de resultado (RT): se zero, cada elemento resultante é uma máscara de todas as comparações de faixa naquele elemento. Se for um, um índice é armazenado para o byte sete do primeiro operando. Zeros são armazenados nos bytes remanescentes. • Busca Zero (ZS) : se for um, cada elemento do segundo operando também é comparado com zero. • Conjunto de Código de condição (CC): se zero, o código de condição não é definido e permanece inalterado. Se for um, o código de condição é definido como especificado na seguinte seção.
[0162] Uma exceção de especificação é reconhecida e nenhuma outra ação é toada se qualquer um dos seguintes ocorre: 1. O campo M4 contém um valor de 3-15.
[0163] Código de condição resultante: 0 se ZS=1 e um zero é encontrado em um elemento indexado inferior do que qualquer comparação 1 Comparação encontrada 2 - 3 Nenhuma comparação encontrada
[0164] Exceções de Programa: • Dados com DXC FE, Registro de vetor • Operação se a instalação de extensão de vetor não é instalada • Especificação (Valore de ES reservado) • Restrição de transação
[0165] Mnemônicas estendidas: VSTRCB V|,V2,VJ,V4,M6 VSTRC V|,V2,V3,V4,0,M6 VSTRCH VI,V2,VJ,V4,MS VSTRCVI,V2,V3,V4,1,M6 VSTRCF V|,V1,V3,V4,M6 VSTRC V|,V2,V3,V4,2,M6 VSTRCBS Vl,V2,V3,V4,Mt VSTRC V1,V2,V3,V4,0,(M6I XT) VSTRCHS VI,V2,V3,V4,M< VSTRC VI,V2,V3,V4,1,(M6I XT) VSTRCFS Vi,V2,V3,V4,Mé VSTRC VI,V2,V3,V4,2,(M6 | XT) VSTRCZB V1,V2,VJ,V4,MÍ VSTRC VI,V2,V3,V4,0,(M6 | X'2') VSTRCZH V|,V2,V3,V4,M6 VSTRC VI,V2,V<,V4,1,(M6 I X’2’) VSTRCZF V1,V2,VJ,V4,M<, VSTRC V|,V2,V<,V4,2,(M6 | X’2') VSTRCZBS V|,V2,V.,V4,MÓ VSTRC Vl,V2,V3,V4,0,(M6 I X’3') VSTRCZHS VI,V2,V,,V4,M6 VSTRC V|,V2,V3,V4.1.(M6 | X’3') VSTRCZFS VI,V2,V3,V4,M6 VSTRC V1,V2,V3,V4,2,(M6 | X’3') CONTAGEM DE CARGA PARA BLOQUEAR LIMITE
[0166]Um inteiro binário não designado 32-bit contendo o número de bytes possível para carregar a partir bloco especificado, tampado em dezesseis é posicionado no primeiro operando.
[0167] O deslocamento é tratado como um inteiro não designado de 12-bit.
[0168] O segundo endereço de operando não é usado para endereçar dados.
[0169] O campo M3 especifica um código que é usado para sinalizar a CPU como para o tamanho de limite de bloco para computar o número de possíveis bytes carregados. Se um valor reservado é especificado então uma exceção de especificação é reconhecido. Limite de Código 0 64-Byte 1 128-Byte 2 256-Byte 3 512-Byte 4 1K-Byte 5 2K-Byte 6 4K-Byte 7-15 Reservado Código de condição resultante: 0 Operando um é dezesseis 1 - 2 - 3 Operando um menor do que dezesseis
[0170] Código de condição resultante:
[0171] Exceções de Programa: • Operação se a instalação de extensão de vetor não está instalada • Especificação
[0172] Nota de programação: É esperado que a CONTAGEM DE CARGA PARA BLOQUEAR LIMITE seja usada em conjunto com CARGA DE VETOR PARA LIMITE DE BLOCO para determinar o número de bytes que foram carregados.
[0173] O elemento do terceiro operando de tamanho especificado pelo valor de ES no campo M4 e indexado pelo segundo endereço de operando é posicionado na localização do primeiro operando. O terceiro operando é um registro de vetor. O primeiro operando é um registro geral. Se o índice especificado pelo segundo endereço de operando é maior do que o maior elemento numerado no terceiro operando, do tamanho de elemento especificado, os dados no primeiro operando são imprevisíveis.
[0174] Se o elemento de registro de vetor é menor do que uma palavra dupla, o elemento é bem alinhado no registro geral de 64-bit e zeros enchem os bits remanescentes.
[0175] O segundo endereço de operando não é usado para endereçar dados; em vez dos 12 bits mais a direita do endereço serem usados para especificar o índice de um elemento dentro do segundo operando.
[0176] O campo M4 especifica o controle de tamanho de elemento (ES) . O controle de ES especifica o tamanho dos elementos nos registros de operando de vetor. Se um valor reservado é especificado, uma exceção de especificação é reconhecida. 0 - Byte 1 - Meia palavra 2 - Palavra 3 - Palavra dupla 4-15 - Reservado inalterado.
[0177] Código de condição resultante: O código é inalterado.
[0178] Exceções de Programa: • Dados com DXC FE, Registro de vetor • Operação se a instalação de extensão de vetor não está instalada • Especificação (Valor de ES reservado) • Restrição de transação
[0179] Mnemônicas estendidas: VLGVB Ri ,V.bD2(B2) VLGV Rl,V3,D2(B2))0 VLGVH RI,V3,D2(B2) VLGV R l,V3,D2(B2). I VLGVF R1,V3,D2(B2) VLGV RI ,V3.D2(B2),2 VLGVG R1,V3,D2(B2) VLGV R1,V3,D2(B2),3 CARGA DE VETOR PARA LIMITE DE BLOCO
[0180] O primeiro operando é carregado iniciando em o elemento de byte indexado zero com bytes a partir do segundo operando. Se uma condição limite é encontrada, o descanso do primeiro operando é imprevisível. Exceções de acesso não são reconhecidos nos bytes não carregados.
[0181] O deslocamento para VLBB é tratado como um inteiro não designado de 12-bit.
[0182] O campo M3 especifica um código que é usado para sinalizar a CPU como para o tamanho de limite de bloco para carregar para. Se um valor reservado é especificado, uma exceção de especificação é reconhecida. Limite de Código 0 64-Byte 1 128-Byte 2 256-Byte 3 512-Byte 4 1K-Byte 5 2K-Byte 6 4K-Byte 7-15 Reservado
[0183] Código de condição resultante: O código permanece inalterado.
[0184] Exceções de Programa: • Acesso (busca, operando 2) • Dados com DXC FE, Registro de vetor • Operação se a instalação de extensão de vetor não está instalada • Especificação (Código de Limite de Bloco Reservado) • Restrição de transação
[0185] Notas de programação: 1. Em certas circunstância dados podem ser carregados além do limite de bloco. No entanto, isto vai ocorrer apenas se existem no exceções de acesso naqueles dados. ARMAZENAMENTO DE VETOR
[0186] O valor de 128-bit no primeiro operando é armazenado para a localização de armazenamento especificada pelo segundo operando. O deslocamento para VST é tratada como um inteiro não designado de 12-bit.
[0187] Código de condição resultante: O código permanece inalterado.
[0188] Exceções de Programa: • Acesso (armazenamento, operando 2) • Dados com DXC FE, Registro de vetor • Operação se a instalação de extensão de vetor não está instalada • Restrição de transação
[0189] Prosseguindo da esquerda para direita, bytes a partir do primeiro operando são armazenados na localização do segundo operando. O terceiro operando especificado de registro geral contém um inteiro não designado de 32-bit contendo um valor que representa o maior byte indexado para armazenar. Se o terceiro operando contém um valor maior do que ou igual ao maior índice de byte do vetor, todos os bytes do primeiro operando são armazenados.
[0190] Exceções de acesso são apenas reconhecidas em bytes armazenados.
[0191] O deslocamento para ARMAZENAMENTO DE VETOR com COMPRIMENTO é tratado como um inteiro não designado de 12- bit .
[0192] Código de condição resultante: O código de condição permanece inalterado.
[0193] Exceções de Programa: • Acesso (armazenamento, operando 2) • Dados com DXC FE, Registro de vetor • Operação se a instalação de extensão de vetor não está instalada • Restrição à transação
[0194] Descrição de RXB
[0195] Todas as instruções de vetor possuem um campo nos bits 36-40 de uma instrução marcada como RXB. Este campo contém os bits mais significativos para todos os operandos designados de registro de vetor. Bits para designações de registro não especificados pela instrução são reservados e devem ser definidos para zero; de outra forma, o programa não pode operar de maneira compatível no futuro. O bit mais significativo é concatenado para a esquerda da designação de registro de quatro bit para criar a designação de registro de vetor de cinco bit.
[0196] Os bits são definidos como na sequência: 0. Bit mais significativo para a designação de registro de vetor nos bits 8-11 da instrução. 1. Bit mais significativo para a designação de registro de vetor nos bits 12-15 da instrução. 2. Bit mais significativo para a designação de registro de vetor nos bits 16-19 da instrução. 3. Bit mais significativo para a designação de registro de vetor nos bits 32-35 da instrução. Controle de Habilitação de Vetor
[0197] Os registros de vetor e instruções podem ser usados apenas se tanto o controle de habilitação de vetor (bit 46) quanto o controle de registro de AFP (bit 45) no registro de controle zero são definidos para um. Se a instalação de vetor é instalada e uma instrução de vetor é executada sem os bits de habilitação definidos, uma exceção de dados com DXC FE hex é reconhecida. Se a instalação de vetor não está instalada, uma exceção de operação é reconhecida.
Claims (6)
1. Sistema de computador para a execução de uma instrução de máquina em uma unidade central de processamento que compreende: uma memória; e um processador em comunicação com a memória, em que o sistema de computador está configurado para executar um método, o referido método compreendendo: obter, por um processador, uma instrução de máquina para execução compreendendo: pelo menos um campo de código de operação (302) para proporcionar um código de operação, o código de operação identificando uma carga para bloquear o funcionamento de limite; um campo de registro (304) a ser usado para designar um registrador, o registrador compreendendo um primeiro operando; pelo menos um campo (306, 308, 310) para ser usado para indicar um endereço inicial na memória principal; e executar a instrução de máquina que compreende: computar (410) o endereço inicial (412) a partir de pelo menos um campo da instrução de máquina, o endereço inicial indicando uma localização na memória principal a partir da qual o carregamento no primeiro operante deve começar; computar (420) um endereço final (422) da memória principal na qual o carregamento no primeiro operante deve parar; carregar (430) uma quantidade variável de dados a partir da memória principal para o primeiro operando, o carregamento compreendendo carregar a memória principal começando no endereço de início na memória principal e terminando no endereço final na memória principal, em que a quantidade variável de dados é carregada da memória principal para o primeiro operando sem cruzar um limite de memória principal designado, caracterizado pelo fato de que: a instrução de máquina compreende ainda um indicador de tamanho de limite de bloco (312) para indicar um tamanho de limite de bloco de um bloco de memória principal; e em que a computação do endereço final inclui o uso da seguinte equação: endereço final = mínimo de (endereço inicial + (tamanho do limite - (endereço inicial AND NOT máscara de limite)), endereço inicial + tamanho do registro), em que o tamanho do limite é o tamanho do limite do bloco, a máscara de limite é igual a 0 - tamanho do limite e o tamanho do registro é um comprimento especificado do registro designado no campo de registro da instrução da máquina.
2. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que o pelo menos um campo compreende um campo de deslocamento, um campo de base e um campo de índice, o campo de base e o campo de índice para a localização de registradores gerais que têm conteúdos a serem adicionados ao conteúdo do campo de deslocamento para formar um endereço inicial, e em que a instrução de máquina compreende ainda um campo de máscara, o campo de máscara especificando o indicador de tamanho do limite do bloco.
3. Sistema de computador, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o carregamento compreende um dos seguintes: carregar o primeiro operando a partir da esquerda para a direita, ou carregar o primeiro operando a partir da direita para a esquerda.
4. Sistema de computador, de acordo com a reivindicação 3, caracterizado pelo fato de que uma direção do carregamento é proporcionada no tempo de execução.
5. Sistema de computador, de qualquer com a reivindicação 1, caracterizado pelo fato de que a instrução de máquina compreende ainda um campo de extensão para ser usado na designação de um ou mais registradores, e em que o campo de registrador é combinado com pelo menos uma porção do campo de extensão para designar o registrador.
6. Método de execução de uma instrução de máquina em uma unidade de processamento central que compreende: obter, por um processador, uma instrução de máquina para execução, a instrução de máquina compreendendo: pelo menos um campo de código de operação (302) para proporcionar um código de operação, o código de operação identificando uma carga para bloquear o funcionamento de limite; um campo de registro (304) a ser usado para designar um registrador, o registrador compreendendo um primeiro operando; pelo menos um campo (306, 308, 310) para ser usado para indicar um endereço inicial na memória principal; e executar a instrução de máquina que compreende: computar (410) o endereço inicial (412) a partir de pelo menos um campo da instrução de máquina, o endereço inicial indicando uma localização na memória principal a partir da qual o carregamento no primeiro operante deve começar; computar (420) um endereço final (422) da memória principal na qual o carregamento no primeiro operante deve parar; carregar (430) uma quantidade variável de dados para o primeiro operando, o carregamento compreendendo carregar a memória principal começando no endereço de início na memória principal e terminando no endereço final na memória principal, em que a quantidade variável de dados é carregada da memória principal para o primeiro operando sem cruzar um limite de memória principal designado, caracterizado pelo fato de que: a instrução de máquina compreende ainda um indicador de tamanho de limite de bloco (312) para indicar um tamanho de limite de bloco de um bloco de memória principal; e em que a computação do endereço final inclui o uso da seguinte equação: endereço final = mínimo de (endereço inicial + (tamanho do limite - (endereço inicial AND NOT máscara de limite)), endereço inicial + tamanho do registro), em que o tamanho do limite é o tamanho do limite do bloco, a máscara de limite é igual a 0 - tamanho do limite e o tamanho do registro é um comprimento especificado do registro designado no campo de registro da instrução da máquina.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/421,456 | 2012-03-15 | ||
US13/421,456 US9459867B2 (en) | 2012-03-15 | 2012-03-15 | Instruction to load data up to a specified memory boundary indicated by the instruction |
PCT/IB2012/056434 WO2013136143A1 (en) | 2012-03-15 | 2012-11-15 | Instruction to load data up to a specified memory boundary indicated by the instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112014022727A2 BR112014022727A2 (pt) | 2021-07-27 |
BR112014022727B1 true BR112014022727B1 (pt) | 2021-10-13 |
Family
ID=49158799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112014022727-6A BR112014022727B1 (pt) | 2012-03-15 | 2012-11-15 | Instrução para carregar dados até uma fronteira de memória específica indicada pela instrução |
Country Status (24)
Country | Link |
---|---|
US (4) | US9459867B2 (pt) |
EP (1) | EP2769305B1 (pt) |
JP (1) | JP6246140B2 (pt) |
KR (1) | KR101662420B1 (pt) |
CN (1) | CN104205067B (pt) |
AU (1) | AU2012373734B2 (pt) |
BR (1) | BR112014022727B1 (pt) |
CA (1) | CA2867088C (pt) |
DK (1) | DK2769305T3 (pt) |
ES (1) | ES2680147T3 (pt) |
HK (1) | HK1201352A1 (pt) |
HR (1) | HRP20181117T1 (pt) |
HU (1) | HUE038976T2 (pt) |
IL (1) | IL232815B (pt) |
LT (1) | LT2769305T (pt) |
MX (1) | MX343372B (pt) |
PL (1) | PL2769305T3 (pt) |
PT (1) | PT2769305T (pt) |
RU (1) | RU2565496C2 (pt) |
SG (1) | SG11201404823QA (pt) |
SI (1) | SI2769305T1 (pt) |
TW (1) | TWI533206B (pt) |
WO (1) | WO2013136143A1 (pt) |
ZA (1) | ZA201406610B (pt) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9280347B2 (en) | 2012-03-15 | 2016-03-08 | International Business Machines Corporation | Transforming non-contiguous instruction specifiers to contiguous instruction specifiers |
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 |
US9715383B2 (en) | 2012-03-15 | 2017-07-25 | International Business Machines Corporation | Vector find element equal instruction |
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 |
US9710266B2 (en) | 2012-03-15 | 2017-07-18 | International Business Machines Corporation | Instruction to compute the distance to a specified memory boundary |
US9459864B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Vector string range compare |
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 |
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 |
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 |
US9804840B2 (en) | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US9778932B2 (en) | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
US9513906B2 (en) | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
US9582413B2 (en) | 2014-12-04 | 2017-02-28 | International Business Machines Corporation | Alignment based block concurrency for accessing memory |
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 |
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 |
US9792098B2 (en) * | 2015-03-25 | 2017-10-17 | International Business Machines Corporation | Unaligned instruction relocation |
US9904614B2 (en) * | 2015-04-03 | 2018-02-27 | NodeSource, Inc. | Source code inspection and verification |
US20160335294A1 (en) * | 2015-05-15 | 2016-11-17 | Bjorn J. Gruenwald | System and Method for Organizing Data |
US10310854B2 (en) | 2015-06-30 | 2019-06-04 | International Business Machines Corporation | Non-faulting compute instructions |
US10061539B2 (en) | 2015-06-30 | 2018-08-28 | International Business Machines Corporation | Inaccessibility status indicator |
GB2541714B (en) * | 2015-08-27 | 2018-02-14 | Advanced Risc Mach Ltd | An apparatus and method for controlling instruction execution behaviour |
US10338920B2 (en) * | 2015-12-18 | 2019-07-02 | Intel Corporation | Instructions and logic for get-multiple-vector-elements operations |
US10095517B2 (en) * | 2015-12-22 | 2018-10-09 | Intel Corporation | Apparatus and method for retrieving elements from a linked structure |
US10282204B2 (en) * | 2016-07-02 | 2019-05-07 | Intel Corporation | Systems, apparatuses, and methods for strided load |
US20180054374A1 (en) * | 2016-08-19 | 2018-02-22 | Andes Technology Corporation | Trace information encoding apparatus, encoding method thereof, and readable computer medium |
US10713048B2 (en) * | 2017-01-19 | 2020-07-14 | International Business Machines Corporation | Conditional branch to an indirectly specified location |
US10564965B2 (en) * | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Compare string processing via inline decode-based micro-operations expansion |
US11347860B2 (en) | 2019-06-28 | 2022-05-31 | Seagate Technology Llc | Randomizing firmware loaded to a processor memory |
GB2602814B (en) * | 2021-01-15 | 2023-06-14 | Advanced Risc Mach Ltd | Load Chunk instruction and store chunk instruction |
US11347506B1 (en) | 2021-01-15 | 2022-05-31 | Arm Limited | Memory copy size determining instruction and data transfer instruction |
Family Cites Families (98)
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 |
AU7108994A (en) | 1993-06-14 | 1995-01-03 | Apple Computer, Inc. | Method and apparatus for finding a termination character within a variable length character string or 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 |
CA2309499C (en) | 1997-11-24 | 2007-06-19 | British Telecommunications Public Limited Company | Information management and retrieval |
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 |
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 |
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 |
CN1134734C (zh) * | 1998-11-27 | 2004-01-14 | 松下电器产业株式会社 | 地址生成装置以及运动矢量检测装置 |
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 |
US6513107B1 (en) * | 1999-08-17 | 2003-01-28 | Nec Electronics, Inc. | Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page |
US6513109B1 (en) | 1999-08-31 | 2003-01-28 | International Business Machines Corporation | Method and apparatus for implementing execution predicates in a computer processing system |
US6820195B1 (en) * | 1999-10-01 | 2004-11-16 | Hitachi, Ltd. | Aligning load/store data with big/little endian determined rotation distance control |
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 |
JP3801987B2 (ja) | 2000-10-18 | 2006-07-26 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | ディジタル信号処理装置 |
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 |
US7853778B2 (en) * | 2001-12-20 | 2010-12-14 | Intel Corporation | Load/move and duplicate instructions for a processor |
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 |
GB2409066B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
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 |
US7739434B2 (en) | 2008-01-11 | 2010-06-15 | International Business Machines Corporation | Performing a configuration virtual topology change and instruction therefore |
US7870339B2 (en) | 2008-01-11 | 2011-01-11 | International Business Machines Corporation | Extract cache attribute facility and instruction therefore |
US7895419B2 (en) | 2008-01-11 | 2011-02-22 | International Business Machines Corporation | Rotate then operate on selected bits facility and instructions therefore |
US7877582B2 (en) | 2008-01-31 | 2011-01-25 | International Business Machines Corporation | Multi-addressable register file |
US20100031007A1 (en) | 2008-02-18 | 2010-02-04 | 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 |
US20120023308A1 (en) | 2009-02-02 | 2012-01-26 | Renesas Electronics Corporation | Parallel comparison/selection operation apparatus, processor, and parallel comparison/selection operation method |
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 |
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 |
US9280347B2 (en) | 2012-03-15 | 2016-03-08 | International Business Machines Corporation | Transforming non-contiguous instruction specifiers to contiguous instruction specifiers |
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 |
US9710266B2 (en) | 2012-03-15 | 2017-07-18 | International Business Machines Corporation | Instruction to compute the distance to a specified memory boundary |
US9459868B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a dynamically determined memory boundary |
US9459864B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Vector string range compare |
US9588762B2 (en) | 2012-03-15 | 2017-03-07 | International Business Machines Corporation | Vector find element not equal instruction |
US9715383B2 (en) | 2012-03-15 | 2017-07-25 | International Business Machines Corporation | Vector find element equal 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 |
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 |
-
2012
- 2012-03-15 US US13/421,456 patent/US9459867B2/en active Active
- 2012-11-15 DK DK12871072.0T patent/DK2769305T3/en active
- 2012-11-15 BR BR112014022727-6A patent/BR112014022727B1/pt active IP Right Grant
- 2012-11-15 CN CN201280071426.5A patent/CN104205067B/zh active Active
- 2012-11-15 JP JP2014561526A patent/JP6246140B2/ja active Active
- 2012-11-15 RU RU2012148582/08A patent/RU2565496C2/ru active
- 2012-11-15 CA CA2867088A patent/CA2867088C/en active Active
- 2012-11-15 WO PCT/IB2012/056434 patent/WO2013136143A1/en active Application Filing
- 2012-11-15 SG SG11201404823QA patent/SG11201404823QA/en unknown
- 2012-11-15 PT PT128710720T patent/PT2769305T/pt unknown
- 2012-11-15 MX MX2014010946A patent/MX343372B/es active IP Right Grant
- 2012-11-15 EP EP12871072.0A patent/EP2769305B1/en active Active
- 2012-11-15 AU AU2012373734A patent/AU2012373734B2/en active Active
- 2012-11-15 LT LTEP12871072.0T patent/LT2769305T/lt unknown
- 2012-11-15 PL PL12871072T patent/PL2769305T3/pl unknown
- 2012-11-15 SI SI201231340T patent/SI2769305T1/sl unknown
- 2012-11-15 HU HUE12871072A patent/HUE038976T2/hu unknown
- 2012-11-15 KR KR1020147028777A patent/KR101662420B1/ko active IP Right Grant
- 2012-11-15 ES ES12871072.0T patent/ES2680147T3/es active Active
-
2013
- 2013-03-01 TW TW102107379A patent/TWI533206B/zh active
- 2013-03-03 US US13/783,337 patent/US9383996B2/en active Active
-
2014
- 2014-05-27 IL IL232815A patent/IL232815B/en active IP Right Grant
- 2014-09-09 ZA ZA2014/06610A patent/ZA201406610B/en unknown
-
2015
- 2015-02-18 HK HK15101816.3A patent/HK1201352A1/xx unknown
-
2016
- 2016-01-14 US US14/995,358 patent/US9959117B2/en active Active
- 2016-01-14 US US14/995,337 patent/US9946542B2/en active Active
-
2018
- 2018-07-18 HR HRP20181117TT patent/HRP20181117T1/hr unknown
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112014022727B1 (pt) | Instrução para carregar dados até uma fronteira de memória específica indicada pela instrução | |
US9952862B2 (en) | Instruction to load data up to a dynamically determined memory boundary | |
EP2825954B1 (en) | Vector string range compare | |
US9715383B2 (en) | Vector find element equal instruction | |
US9710267B2 (en) | Instruction to compute the distance to a specified memory boundary | |
BR112014022638B1 (pt) | Método, suporte físico e equipamento para transformar especificadores de instrução de um ambiente computacional | |
IL232813A (en) | Instruction for finding an unequal vector element | |
CA2867117A1 (en) | Finding the length of a set of character data having a termination character | |
AU2012373736B2 (en) | Instruction to compute the distance to a specified memory boundary |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B11A | Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing | ||
B04C | Request for examination: application reinstated [chapter 4.3 patent gazette] | ||
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 15/11/2012, OBSERVADAS AS CONDICOES LEGAIS. |