BR112014022638B1 - Método, suporte físico e equipamento para transformar especificadores de instrução de um ambiente computacional - Google Patents

Método, suporte físico e equipamento para transformar especificadores de instrução de um ambiente computacional Download PDF

Info

Publication number
BR112014022638B1
BR112014022638B1 BR112014022638-5A BR112014022638A BR112014022638B1 BR 112014022638 B1 BR112014022638 B1 BR 112014022638B1 BR 112014022638 A BR112014022638 A BR 112014022638A BR 112014022638 B1 BR112014022638 B1 BR 112014022638B1
Authority
BR
Brazil
Prior art keywords
instruction
field
bits
architecture
register
Prior art date
Application number
BR112014022638-5A
Other languages
English (en)
Other versions
BR112014022638A8 (pt
BR112014022638A2 (pt
Inventor
Michael Karl Gschwind
Original Assignee
International Business Machines Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corporation filed Critical International Business Machines Corporation
Publication of BR112014022638A2 publication Critical patent/BR112014022638A2/pt
Publication of BR112014022638A8 publication Critical patent/BR112014022638A8/pt
Publication of BR112014022638B1 publication Critical patent/BR112014022638B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime 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

equipamento, método e produto de programa de computador para transformar especificadores de instrução de um ambiente computacional. a emulação de instruções que incluem especificadores não contíguos torna-se mais fácil. o especificador não contíguo especifica um recurso de uma instrução, tal como um registro, utilizando campos múltiplos da instrução. por exemplo, campos múltiplos da instrução (e.g., dois campos) incluem bits que juntos designam um determinado registro a ser utilizado pela instrução. especificadores não contíguos de instruções definidas numa arquitetura de sistema ou equipamento computacional são transformados em especificadores contíguos utilizáveis por instruções definidas em outra arquitetura de sistema computacional. as instruções definidas na outra arquitetura de sistema computacional emulam as instruções definidas para a primeira arquitetura de sistema computacional.

Description

01. A invenção se relaciona, em geral, à emulação num ambiente computacional e, em particular, à emulação de especificadores dentro de instruções.
02. A emulação imita funções numa arquitetura de computador, designada como arquitetura meta. A arquitetura meta difere de uma arquitetura de computador designada arquitetura fonte, para a qual as funções foram definidas. Por exemplo, uma instrução escrita para a Arquitetura/z fornecida pela International Business Machines Corporation, Armonk, New York, pode ser traduzida e representada como uma ou mais instruções de uma arquitetura diferente, como a PowerPC, também oferecida pela International Business Machines Corporation, ou outra arquitetura oferecida pela International Business Machines Corporation ou por outra empresa. Essas instruções traduzidas realizam as mesmas funções ou funções similares àquelas que estão sendo traduzidas.
03. Há diferentes tipos de emulação, incluindo a interpretação e a tradução. Com a interpretação, os dados representando uma instrução são lidos e cada instrução é executada ao tempo em que é decodificada. Cada instrução é executada cada vez que é referenciada. Entretanto, com a tradução, também designada tradução binária ou recompilação, as sequências de instruções são traduzidas a partir do conjunto de instruções de uma arquitetura de computador para o conjunto de instruções de outra arquitetura de computador.
04. Existem múltiplos tipos de tradução, incluindo tradução estática e tradução dinâmica. Na tradução estática, o código de uma instrução de uma arquitetura é convertido para o código que é executado na outra arquitetura sem a execução prévia do código. Em contraste, na tradução dinâmica, pelo menos uma seção do código é executada e traduzida, e o resultado é colocado num cache para execução subsequente por um processador da arquitetura do computador meta.
SUMÁRIO DA INVENÇÃO
05. As falhas da técnica anterior são direcionadas e são obtidas vantagens por meio do fornecimento de um produto programa de computador para transformar especificadores de instrução de um ambiente computacional. O produto programa de computador inclui uma mídia de armazenamento de leitura por computador legível por um circuito processador e instruções de armazenamento para execução pelo circuito processador para executar um método que inclui: obtenção, por um processador, de uma primeira instrução definida para a primeira arquitetura de computador, um especificador não contíguo, especificador esse com uma primeira parte e segunda parte, em que a obtenção inclui a obtenção da primeira parte a partir de um primeiro campo da instrução e a segunda parte a partir de um segundo campo da instrução, o primeiro campo separado do segundo campo; geração de um especificador contíguo utilizando a primeira parte e a segunda parte, tal geração utilizando uma ou mais regras baseadas no código de operação da primeira instrução; e uso do especificador contíguo para indicar um recurso a ser utilizado na execução de uma segunda instrução, sendo esta segunda instrução definida para uma segunda arquitetura de computador diferente da primeira arquitetura de computador e emulando uma função da primeira instrução.
06. Os métodos e sistemas relativos a um ou mais aspectos da presente invenção estão também descritos e reivindicados neste documento. Além disso, os serviços relativos a um ou mais aspectos da presente invenção estão também descritos e podem ser reivindicados neste documento.
07. As características e vantagens adicionais são compreendidas através das técnicas da presente invenção. Outras concretizações e aspectos da invenção são aqui descritos em detalhe e são considerados parte da invenção reivindicada.
BREVE DESCRIÇÃO DOS DESENHOS
08. Serão descritas agora concretizações da presente invenção, por meio apenas de exemplo, com referência aos desenhos anexos nos quais:
09. A FIG. 1 retrata um exemplo de um ambiente computacional para incorporação e utilização de um ou mais aspectos da presente invenção;
010. A FIG. 2 retrata detalhes adicionais da memória da FIG. 1, de acordo com um aspecto da presente invenção;
011. A FIG. 3 retrata uma concretização de uma visão geral do processo de emulação que emprega uma ou mais interpretações e traduções;
012. A FIG. 4 retrata um exemplo de lógica associada ao bloco de interpretação referenciado na FIG. 3;
013. A FIG. 5 retrata um exemplo de lógica associada ao bloco de tradução referenciado na FIG. 3;
014. A FIG. 6 retrata outra concretização de uma visão geral de um processo de emulação que emprega uma ou mais interpretações e traduções modificado de acordo com um aspecto da presente invenção;
015. A FIG. 7A retrata um exemplo de lógica associada com o bloco de interpretação referenciado na FIG. 6, de acordo com um aspecto da presente invenção;
016. A FIG. 7B retrata uma concretização da lógica para transformar um especificador não contíguo num especificador contíguo, de acordo com um aspecto da presente invenção;
017. A FIG. 8 retrata um exemplo de lógica associada ao bloco de tradução referenciado na FIG. 6, de acordo com um aspecto da presente invenção;
018. A FIG. 9A retrata uma concretização da transformação de um especificador não contíguo numa instrução de Carga de Vetor de uma arquitetura de computador em um especificador contíguo numa instrução Indexada ao Vetor de Carga de outra arquitetura de computador, de acordo com um aspecto da presente invenção;
019. A FIG. 9B retrata outro exemplo da transformação da FIG. 9A, incluindo a alocação de um registro determinado para o especificador contíguo, de acordo com um aspecto da presente invenção;
020. A FIG. 10 retrata um exemplo de um arquivo de registro, de acordo com um aspecto da presente invenção;
021. A FIG. 11 retrata um exemplo de transformação de especificadores não contíguos em especificadores contíguos em alocação à memória durante a emulação, de acordo com um aspecto da presente invenção;
022. A FIG. 12 retrata uma concretização de um produto programa decomputador incorporando um ou mais aspectos da presente invenção;
023. A FIG. 13 retrata uma concretização de um sistema computacionalhospedeiro para incorporar e utilizar um ou mais aspectos da presente invenção;
024. A FIG. 14 retrata um exemplo adicional de um sistema computacional para incorporar e utilizar um ou mais aspectos da presente invenção;
025. A FIG. 15 retrata outro exemplo de um sistema computacional compreendendo uma rede de computadores para incorporar e utilizar um ou mais aspectos da presente invenção;
026. A FIG. 16 retrata uma concretização de vários elementos de um sistema computacional para incorporar e utilizar um ou mais aspectos da presente invenção;
027. A FIG. 17A retrata uma concretização da unidade de execução do sistema computacional da FIG. 16 para incorporar e utilizar um ou mais aspectos da presente invenção;
028. A FIG. 17B retrata uma concretização da unidade de desvio do sistema computacional da FIG. 16 para incorporar e utilizar um ou mais aspectos da presente invenção;
029. A FIG. 17C retrata uma concretização da unidade de carga/armazenamento do sistema computacional da FIG. 16 para incorporar e utilizar um ou mais aspectos da presente invenção; e
030. A FIG. 18 retrata uma concretização de um sistema computacional hospedeiro emulado para incorporar e utilizar um ou mais aspectos da presente invenção.
DESCRIÇÃO DETALHADA
031. De acordo com um aspecto da presente invenção, é fornecida uma técnica para facilitar a emulação de instruções que incluem especificadores não contíguos. O especificador não contíguo especifica um recurso de instrução, tal como um registro, utilizando campos múltiplos da instrução. Por exemplo, campos múltiplos da instrução (e.g., dois campos) incluem bits que juntos designam um determinado registro a ser utilizado pela instrução.
032. Num aspecto particular da invenção, é fornecida uma técnica para transformar especificadores de instruções não contíguos definidos em uma arquitetura de sistema computacional (e.g., Arquitetura/z fornecida pela International Business Machines Corporation) em especificadores contíguos utilizáveis por instruções definidas e outra arquitetura de sistema computacional (e.g., arquitetura PowerPC oferecida pela International Business Machines Corporation). As instruções definidas numa arquitetura de sistema computacional emulam as instruções definidas para a outra arquitetura de sistema computacional.
033. Uma concretização de um ambiente computacional fornecendo emulação é descrita com referência à FIG. 1. Num modelo, o ambiente computacional 100 inclui, por exemplo, uma unidade central de processamento nativa 102, memória 104, e um ou mais dispositivos de entrada/saída e/ou interfaces 106 acoplados uns aos outros, por exemplo, através de um ou mais barramentos 108 e/ou outras conexões. A título de exemplo, o ambiente computacional 100 pode incluir um processador PowerPC, um servidor pSeries ou um servidor xSeries, da International Business Machines Corporation, Armonk, New York; um Superdome HP com processadores Intel Itanium II da Hewlett Packard Co., Palo Alto, California; e/ou outras máquinas baseadas em arquiteturas oferecidas por International Business Machines Corporation, Hewlett Packard, Intel, Oracle, ou outros.
034. A unidade central de processamento nativa 102 inclui um ou mais registros nativos 110, tais como um ou mais registros de propósito geral e/ou um ou mais registros de propósito específico utilizados durante o processamento dentro do ambiente. Esses registros incluem informações que representam o estado do ambiente num determinado ponto no tempo.
035. Além disso, a unidade central de processamento nativa 102 executa instruções e códigos que estão armazenados na memória 104. No exemplo específico, a unidade central de processamento executa o código emulador 112 armazenado na memória 104. Este código ativa o ambiente de processamento configurado numa arquitetura para emular outra arquitetura. Por exemplo, o código emulador 112 permite que as máquinas baseadas em arquiteturas diferentes da Arquitetura/z, como processadores PowerPC, servidores pSeries, servidores xSeries, servidores Superdome HP e outros, emulem a Arquitetura/z e executem software e instruções desenvolvidas com base na Arquitetura/z.
036. Detalhes adicionais relativos ao código emulador 112 são descritos com referência à FIG. 2. As instruções convidadas 200 compreendem instruções de software (e.g., instruções da máquina) que foram desenvolvidas para serem executadas numa arquitetura diferente daquela da CPU nativa 102. Por exemplo, as instruções convidadas 200 podem ter sido designadas para execução num processador de Arquitetura/z, mas, em vez disso, estão sendo emuladas na CPU nativa 102, que pode ser, um processador PowerPC ou outro tipo de processador. Num exemplo, o código emulador 112 inclui uma unidade de busca de instrução 202 para obter uma ou mais instruções convidadas 200 da memória 104 e, opcionalmente, fornecer proteção local para as instruções obtidas. Isso inclui também uma rotina de tradução de instrução 204 para determinar o tipo de instrução convidada que foi obtida e para traduzir a instrução convidada para uma ou mais instruções nativas 206. Esta tradução inclui, por exemplo, a identificação da função a ser realizada pela instrução convidada (e.g., via opcode (código operacional)) e escolha da(s) instrução(ões) nativa(s) para executar essa função.
037. Além disso, o emulador 112 inclui uma rotina de controle de emulação 210 para fazer com que as instruções nativas sejam executadas. A rotina de controle de emulação 210 pode fazer com que a CPU nativa 102 execute uma rotina de instruções nativas que emulem uma ou mais instruções convidadas previamente obtidas e, ao final dessa execução, retorne o controle para a rotina de busca de instrução para emular a obtenção da próxima instrução convidada ou um grupo de instruções convidadas. A execução das instruções nativas 206 pode incluir a carga de dados num registro a partir da memória 104; armazenamento dos dados de volta à memória a partir do registro; ou a realização de algum tipo de operação aritmética ou lógica, conforme determinado pela rotina de tradução.
038. Cada rotina, por exemplo, é implementada em software, que é armazenado na memória e executada por uma unidade central de processamento nativa 102. Em outros modelos, uma ou mais rotinas ou operações são implementadas em firmware, hardware, software ou numa combinação deles. Os registros do processador emulado podem ser emulados utilizando os registros 110 da CPU nativa ou pela utilização de locações na memória 104. Em concretizações, as instruções convidadas 200, as instruções nativas 206 ou o código emulador 112 podem residir na mesma memória ou podem estar em diferentes dispositivos de memória.
039. Conforme utilizado neste documento, firmware inclui, e.g., o microcódigo,milicódigo e/ou o macrocódigo do processador. Inclui, por exemplo, as instruções em nível de hardware e/ou estruturas de dados utilizadas na implementação de códigos de máquina de nível mais alto. Numa concretização, inclui, por exemplo, o código proprietário que é entregue tipicamente como microcódigo que inclui software confiável ou microcódigo específico ao hardware subjacente e controla o acesso do sistema operacional ao sistema do hardware.
040. Num exemplo, uma instrução convidada 200 que é obtida, traduzida e executada é uma ou mais das instruções descritas neste documento. A instrução de uma arquitetura (e.g., Arquitetura/z) é buscada na memória, traduzida e representada como uma sequência de instruções nativas 206 de outra arquitetura (e.g., PowerPC, pSeries, xSeries, Intel, etc.). Essas instruções nativas são então executadas.
041. Detalhes adicionais relativos à emulação estão descritos com referência às FIGs. 3-5. A FIG. 3, em particular, retrata uma concretização de uma visão geral de um processo de emulação que emprega uma ou mais interpretações e traduções; a FIG. 4 retrata uma concretização da lógica associada com a interpretação referenciada na FIG. 3 (Técnica 2000); e a FIG. 5 retrata uma concretização da lógica associada à tradução binária referenciada na FIG. 3 (Técnica 3000). Neste exemplo particular, as instruções escritas para a Arquitetura/z estão sendo traduzidas para instruções PowerPC. Entretanto, as mesmas técnicas são aplicáveis para emulação da Arquitetura/z para outras arquiteturas meta; de outras arquiteturas fonte para a arquitetura PowerPC; e/ou de outras arquiteturas fonte para outras arquiteturas meta.
042. Com referência à FIG. 3, durante a emulação, uma instrução, designada como instrução X, é obtida e interpretada conforme descrito em mais detalhe na FIG. 4, PASSO 300. Várias estatísticas relacionadas à instrução interpretada são atualizadas, PASSO 302, e então o 304. Determina-se se a próxima instrução tem um ponto de entrada previamente traduzido, CONSULTA 306. Se não, determina-se adicionalmente se esta próxima nova instrução foi vista N (e.g., 15) vezes,CONSULTA 308. Quer dizer, se esta instrução foi vista com frequência suficiente para otimizar a execução, por exemplo, por meio da compilação do código just-in-time (JIT), que fornece um ponto de entrada para uso subsequente. Se esta instrução não for vista N vezes, como 15 vezes, então o processamento continua com o PASSO 300. De outra forma, o processamento continua com a formação de um grupo de instruções e a tradução do grupo de instruções de uma arquitetura para outra arquitetura, PASSO 310. Um exemplo de realização dessa tradução está descrito com referência à FIG. 5. Após a formação e tradução do grupo, o grupo é executado, PASSO 312, e o processamento continua para o PASSO 304.
043. Retornando à CONSULTA 306, se há um ponto de entrada existente traduzido para a instrução, o processamento continua com a execução do grupo no ponto de entrada, PASSO 312.
044. Mais detalhes relativos à interpretação de uma instrução (Técnica 2000) estão descritos com referência à FIG. 4. Inicialmente, uma instrução no próximo endereço do contador de programa (PC) é lida, PASSO 400. Esta instrução é analisada e são extraídos o opcode, o registro e os campos imediatos, PASSO 402. Então é realizado um desvio para o código que emula o comportamento correspondente ao opcode extraído, PASSO 404. O código emulado é, a seguir, executado, PASSO 406.
045. Mais detalhes relativos à tradução de instruções dentro de um grupo (Técnica 3000) estão descritos com referência à FIG. 5. Inicialmente, uma instrução num grupo pré-definido de instruções é lida, PASSO 500. Num exemplo, o grupo pode ser formado utilizando uma variedade de maneiras. De acordo com uma concretização, um grupo é formado para englobar um caminho único de execução por um caminho mais provável. Em outra concretização, forma-se um grupo para abranger um dos últimos caminhos de execução anteriores, ou o caminho de execução atual, com base no estado da arquitetura emulada. Em outra concretização, todos os desvios são considerados como não percorridos. Ainda em outra concretização, são incluídos múltiplos caminhos num grupo, tais caminhos iniciando do ponto inicial do grupo. Em outra concretização, todos as instruções até o primeiro desvio inclusive são adicionados a um grupo (i.e., um grupo corresponde a uma parte do código em linha reta também chamado geralmente de “bloco básico”). Em cada concretização, é preciso decidir quando e onde encerrar um grupo. Numa concretização, o grupo é terminado depois de um número fixo de instruções. Em outra concretização, o grupo termina depois que uma probabilidade cumulativa de alcançar uma instrução fique abaixo de um dado limiar. Em algumas concretizações, um grupo termina imediatamente quando é alcançada uma condição de parada. Em outro conjunto de concretizações, um grupo termina somente num ponto bem definido como “ponto de parada”, e.g., uma instrução definida, um alinhamento de início de grupo específico, ou outras condições.
046. Após isso, a instrução é analisada e o opcode, o registro e os campos imediatos são extraídos da instrução, PASSO 502. Em seguida, é fornecida uma representação interna da informação extraída, PASSO 504. Essa representação interna é um formato da informação extraída que é usado pelo processador (e.g., compilador ou tradutor) para otimizar a decodificação, a alocação do registro, e/ou outras tarefas associadas à tradução da instrução.
047. Além disso, se determina se há outra instrução no grupo a ser traduzida, CONSULTA 506. Nesse caso, o processamento continua com o PASSO 500. Se de outra forma, o processamento continua com a otimização da representação interna, PASSO 508, alocando um ou mais registros para o grupo de instruções, PASSO 510, e gerando um código que emula as instruções no grupo, PASSO 512.
048. Enquanto os procedimentos de interpretação e de tradução acima respondem pela emulação de uma instrução definida numa arquitetura para uma ou mais instruções definidas em outra arquitetura, podem ser feitos avanços na emulação de instruções que utilizam especificadores não contíguos. Por exemplo, de acordo com um aspecto da presente invenção, são fornecidos aperfeiçoamentos nas técnicas de emulação para tratar a situação na qual o operando de registro de uma instrução é designado por múltiplos campos da instrução.
049. Um tipo de instrução que utiliza especificadores não contíguos são as instruções vetoriais que são parte de um recurso vetorial, fornecidas de acordo com um aspecto da presente invenção. Em muitas instruções vetoriais, o campo de registro não inclui todos os bits necessários para designar um registro a ser utilizado pela instrução, mas, em vez disso, é utilizado outro campo junto com o campo de registro para designar um registro. Este outro campo será aqui designado campo RXB.
050. O campo RXB, também designado bit de extensão de registro, é, por exemplo, um campo de quatro bits (bits 0-3) que inclui o bit mais significativo para cada um dos operandos designados de registro vetorial de uma instrução vetorial. Os bits para designações de registro não especificados pela instrução devem ser reservados e definidos como zero.
051. Num exemplo, os bits RXB são definidos como segue:
052. 0 - Bit mais significativo para a primeira designação de registro vetorialda instrução.
053. 1 - Bit mais significativo para a segunda designação de registro vetorialda instrução, se houver.
054. 2 - Bit mais significativo para a terceira designação de registro vetorialda instrução, se houver.
055. 3 - Bit mais significativo para a quarta designação de registro vetorial dainstrução, se houver.
056. Cada bit é estabelecido como zero ou um pelo montador, por exemplo, dependendo do número de registro. Por exemplo, para registros 0-15, o bit é definido como zero, para os registros 16-31, o bit é definido como 1, etc.
057. Numa concretização, cada bit RXB é um bit de extensão para uma determinada localização numa instrução que inclui um ou mais registros vetoriais. Por exemplo, em uma ou mais instruções vetoriais, o bit 0 do RXB é um bit de extensão para a localização 8-11, que é atribuída a V1; o bit 1 do RXB é um bit de extensão para a locação 12-15, que é atribuído a, e.g., V2; e daí em diante.
058. Numa concretização adicional, o campo RBX inclui bits adicionais e um ou mais bits são utilizados como extensão para cada vetor ou localização.
059. De acordo com um aspecto da presente invenção, são oferecidas técnicas para transformar operandos de especificadores não contíguos em especificadores contíguos. Uma vez transformados, os especificadores contíguos são utilizados da mesma forma que os especificadores não contíguos.
060. Uma concretização da lógica para emular instruções que utilizam especificadores não contíguos está descrita com referência às FIGs. 6-8. A FIG. 6 em particular retrata uma visão geral de um processo de emulação incluindo uma ou mais interpretações e traduções de instruções que incluem especificadores não contíguos; a FIG. 7A retrata uma concretização de interpretação (Técnica 6000), incluindo interpretação de especificadores não contíguos; a FIG. 7B retrata uma concretização da transformação de um especificador não contíguo em um especificador contíguo; e a FIG. 8 retrata uma concretização de tradução (Técnica 7000), incluindo a tradução de especificadores não contíguos.
061. Com referência inicialmente à FIG. 6, é fornecida uma visão geral de um processo de emulação. Esta visão geral é similar à visão geral fornecida na FIG. 3, excetuando que o PASSO600 utiliza a Técnica 6000 descrita com referência à FIG. 7A, em vez da Técnica 2000 referenciada no PASSO 300; e o PASSO 610 utiliza a Técnica 7000 descrita com referência à FIG. 8, em vez da Técnica 3000 referenciada no PASSO 310. Tem em vista que a visão geral foi descrita acima com referência à FIG. 3, não será repetida aqui; em vez disso, a discussão prossegue para a lógica da FIG. 7A.
062. Com referência à FIG. 7A, os PASSOS 700, 702, 704 e 706 são similares, respectivamente, aos PASSOS 400, 402, 404 e 406 da FIG. 4 e, portanto, não serão descritos novamente; entretanto, os PASSOS 703 e 705 estão descritos. Com o PASSO 703, de acordo com um aspecto da presente invenção, é gerado um especificador contíguo (também chamado aqui de índice contíguo) a partir de um especificador não contíguo. Mais detalhes relativos à geração de um especificador contíguo a partir de um especificador não contíguo são descritos com referência à FIG. 7B.
063. Com referência à FIG. 7B, numa concretização, inicialmente é obtido o especificador não contíguo, PASSO 750. Isso inclui, por exemplo, a determinação a partir do opcode de que a instrução possui um especificador não contíguo e a determinação de quais campos da instrução são utilizados para designar o especificador não contíguo. Por exemplo, uma parte do opcode especifica um formato da instrução e este formato indica ao processador que a instrução possui pelo menos um especificador não contíguo e também especifica os campos utilizados para designar o especificador não contíguo. Esses campos são então lidos para se obter os dados (e.g., bits) deles. Por exemplo, em muitas instruções vetoriais, a localização 8-11 da instrução (e.g., V1) especifica uma pluralidade de bits (e.g., 4) utilizada para designar um registro vetorial, e um campo RXB da instrução inclui um ou mais bits adicionais utilizados para designar um registro vetorial específico. Esses bits são obtidos neste passo.
064. Em sequência à obtenção do especificador não contíguo (e.g., bits do campo de registro V1 e bit(s) do RXB), são usadas uma ou mais regras para combinar as partes do especificador não contíguo para criar o especificador contíguo, PASSO 752. Essa(s) regra(s) depende(m), por exemplo do formato da instrução conforme especificado pelo opcode da instrução. Num exemplo particular no qual o opcode indica um campo RXB, a(s) regra(s) engloba(m) a utilização do(s) bit(s) RXB associada ao operando de registro como o mais significativo bit(s) para os bits especificados no campo de registro. Por exemplo, o campo RXB possui, numa concretização, 4 bits e cada bit corresponde a um operando de registro. Por exemplo, o bit 0 corresponde ao primeiro operando de registro, o bit 1 corresponde ao segundo operando de registro, e assim por diante. Assim, o bit correspondente ao operando de registro é extraído e utilizado para formar o especificador contíguo. Por exemplo, se for especificado um binário 0010 no primeiro campo de registro de operando e um binário 1000 for especificado no campo RXB, o valor do bit associado ao primeiro operando, bit 0, neste exemplo, está concatenado a 0010. Portanto, o especificador contíguo é 10010 (registro 18), neste exemplo.
065. O especificador contíguo gerado é então utilizado como se fosse o especificador fornecido na instrução, PASSO 754.
066. Depois disso, retornando à FIG. 7A, é realizado um desvio para o código que emula o comportamento correspondente ao opcode, PASSO 704. Além disso, o índice contíguo é utilizado para gerenciar o recurso de arquitetura homogeneizado apesar do especificador não contíguo, PASSO 705. Assim, o especificador de registro contíguo é utilizado como se não existisse qualquer especificador não contíguo. Cada especificador contíguo indica um registro a ser utilizado pelo código de emulação. Depois disso, o código de emulação é realizado, PASSO 706.
067. Na FIG. 8 estão descritos mais detalhes relativos à tradução incluindo a transformação de especificadores não contíguos em especificadores contíguos (designada Técnica 7000). Numa concretização, os PASSOS 800, 802, 804, 806, 808, 810 e 812 são similares aos PASSOS 500, 502, 504, 506, 508, 210 e 512, respectivamente, da FIG. 5 e, portanto, não se encontram aqui descritos com referência à FIG. 8. Entretanto, de acordo com um aspecto da presente invenção, outros passos são realizados a fim de transformar um especificador não contíguo de uma instrução de uma arquitetura fonte num especificador contíguo de uma instrução de uma arquitetura meta. A instrução da arquitetura meta emula uma função da instrução da arquitetura fonte.
068. Por exemplo, no PASSO 803, é gerado um especificador contíguo a partir de um especificador não contíguo. Conforme descrito acima com referência à FIG. 7B, isto inclui a obtenção do especificador não contíguo a partir da instrução a ser emulada, e a utilização de uma ou mais regras para criar o especificador contíguo a partir do especificador não contíguo. Numa concretização, o opcode da instrução que possui o especificador não contíguo indica, pelo menos implicitamente pelo seu formato, que a instrução inclui um especificador não contíguo. Por exemplo, o formato da instrução é indicado por um ou mais bits do opcode (e.g., os dois primeiros bits), e com base no formato, o processador (e.g., compilador, tradutor, emulador do processador) entende que esta instrução inclui um especificador não contíguo, no qual parte do especificador de um recurso, tal como o registro, está incluída num campo da instrução e uma ou mais partes do especificador estão localizadas em um ou mais campos diferentes da instrução.
069. O opcode, como exemplo, também fornece uma indicação ao processador de uma ou mais regras utilizadas para gerar o especificador contíguo a partir do especificador não contíguo. Por exemplo, o opcode pode indicar que uma instrução particular seja uma instrução de registro vetorial, e assim, possui um campo RXB. Portanto, o processador acessa a informação (e.g., regras armazenadas na memória ou armazenamento externo) que indica uma instrução com campo RXB, o campo RXB fornece o bit mais significativo para o seu campo de registro correspondente. As regras especificam, por exemplo, que para gerar o campo contíguo, os bits do campo de registro são combinados a um ou mais bits do campo RXB associado ao operando de registro particular.
070. Após a geração do especificador contíguo, o especificador contíguo é utilizado sem considerar o especificador não contíguo. Por exemplo, no PASSO 808, o código é otimizado utilizando o especificador contíguo sem considerar o especificador não contíguo. Analogamente, um ou mais registros são alocados utilizando o especificador contíguo e sem considerar o especificador não contíguo, PASSO 810. Mais ainda, no PASSO 812, o código emulado é gerado sem considerar o especificador não contíguo e utilizando a alocação realizada no PASSO 810. Isso quer dizer que, nesses passos, não há indicação de que o especificador contíguo foi gerado a partir de um especificador não contíguo. O especificador não contíguo é ignorado.
071. Detalhes adicionais sobre a tradução de um especificador não contíguo para um especificador contíguo estão descritos com referência aos exemplos nas FIGS. 9A, 9B e 11. Com referência inicialmente à FIG. 9A, está retratada uma instrução de Vetor de Carga (VL) 900. Num exemplo, a instrução de Vetor de Carga inclui campos de opcode 902a (e.g., bits 0-7), 902b (e.g., bits 40-47) indicando uma operação de Vetor de Carga; um campo de registro vetorial 904 (e.g., bits 8-11) utilizado para designar um registro vetorial (V1); um campo de índice (X2) 906 (e.g., bits 12-15); um campo base (B2) 908 (e.g., bits 16-19); um campo de deslocamento (D2) 910 (e.g., bits 20-31); e um campo RXB 912 (e.g., bits 36-39). Ambos os campos 904-912 num exemplo são separados e independentes do(s) campo(s) de opcode. Além disso, numa concretização eles são separados e independentes um do outro; entretanto, em outras concretizações, podem ser combinados mais de um campo. Abaixo estão descritas mais informações sobre a utilização desses campos.
072. Num exemplo, bits selecionados (e.g., os primeiros dois bits do opcode designado pelo campo operacional 902a) especificam um tamanho e um formato da instrução. Neste exemplo particular, o tamanho é de 3 meio registros (half-words) e o formato é de operação de armazenamento de registro vetorial e índice com um campo estendido de campo de opcode. O campo de vetor (V1), junto com o seu bit de extensão correspondente especificado por RXB, designa um registro vetorial (i.e., um especificador não contíguo). Para registros vetoriais em particular, o registro que contém o operando é especificado utilizando, por exemplo, um campo de quatro bits do campo de registro com a adição do seu bit de extensão de registro (RXB) como o bit mais significativo. Por exemplo, se o campo de quatro bits em V1 é binário 0010 e o bit de extensão para este operando é binário 1, então o campo de cinco bits é binário 10010, indicando o número de registro 18 (em decimal).
073. O número subscrito associado ao campo da instrução denota o operando ao qual o campo se aplica. Por exemplo, o número subscrito 1 associado a V1 denota o primeiro operando, e assim por diante. Isso é usado para determinar qual bit do campo RXB está combinado ao campo de registro. O operando de registro é um registro em extensão, por exemplo, de 128 bytes. Num exemplo, numa instrução de operação de armazenamento de registro vetorial e índice, os conteúdos dos registros gerais designados pelos campos X2 e B2 são adicionados aos conteúdos do campo D2 para formar o segundo endereço de operando. Num exemplo, o deslocamento, D2, para a instrução de Vetor de Carga é tratado como um inteiro não inscrito de 12 bits.
074. Neste exemplo, uma vez que V1 é o primeiro operando, a localização mais à esquerda (e.g., bit 0) do RXB está associada a este operando. Portanto, o valor localizado mais à esquerda é combinado ao valor no campo de registro V1 para gerar o especificador contíguo, conforme aqui descrito.
075. De acordo com um aspecto da presente invenção, a instrução de Vetor de Carga 900, que é definida, por exemplo, na Arquitetura/z, é emulada numa instrução Indexada de Vetor de Carga 950 definida, por exemplo, na arquitetura PowerPC. Embora, neste caso, a Arquitetura/z seja a arquitetura fonte e a PowerPC seja a arquitetura meta, trata-se apenas de um exemplo. Muitas outras arquiteturas podem ser utilizadas como uma ou ambas as arquiteturas, fonte e meta.
076. Cada arquitetura possui associada a ela registros específicos que ela pode utilizar. Na Arquitetura/z, por exemplo, há 32 registros vetoriais e outros tipos de registros podem mapear um quadrante dos registros vetoriais. Como exemplo, conforme mostrado na FIG. 10, se existir um arquivo de registro 1000 que inclua 32 registros vetoriais 1002 e cada registro possuir 128 bits de extensão, então 16 registros de ponto flutuante 1004, com 64 bits de extensão, podem se sobrepor aos registros vetoriais. Assim, como exemplo, quando o registro de ponto flutuante 2 é modificado, então o registro vetorial 2 também é modificado. Outros mapeamentos para outros tipos de registro são também possíveis.
077. De forma análoga, a PowerPC ou outra arquitetura meta possui um conjunto de registros a ela atribuído. Este conjunto de registros pode ser diferente ou o mesmo que o conjunto de registros alocado à arquitetura fonte. O registro meta pode possuir mais ou menos registros disponíveis para um tipo particular de instrução. Por exemplo, no caso retratado na FIG. 9A, a instrução de Vetor de Carga e a instrução Indexada de Vetor de Carga possuem 32 registros vetoriais disponíveis. Outros exemplos são também possíveis.
078. Conforme indicado pelo opcode, a instrução de Vetor de Carga inclui um especificador não contíguo que, neste exemplo, é representado nos campos V1 e RXB. Esses campos não contíguos são combinados para criar um índice contíguo na instrução Indexada de Vetor de Carga 950. Este especificador contíguo está indicado no campo VRT 954 da instrução 950. Neste exemplo particular, conforme mostrado no código VL v18, 0(0, gr5), o registro vetorial que está sendo especificado é o registro 18. Este registro está especificado na instrução pelo especificador fornecido pelo campo V1 e pelo campo RXB. Neste exemplo, o campo V1 inclui um valor de 2 (binário 0010) e o campo RXB inclui um valor de 8 binário 1000). Com base em regras pré- definidas, uma vez que V1 é o primeiro operando, o bit mais à esquerda (1) de 1000 é concatenado aos bits no campo V1 (0010) para produzir um especificador contíguo de 10010, que é o valor 18 em decimal.
079. Conforme mostrado no numeral referência 956, é colocada uma representação de 18 no campo VRT da instrução Indexada de Vetor de Carga, que corresponde ao campo de registro (V1) da instrução de Vetor de Carga. Para a completude, os campos RA e RB da instrução 950 correspondem, respectivamente, aos X2 e B2 da instrução 900. O campo D2 da instrução 900 não possui campo correspondente na instrução 950; e os campos de opcode da instrução 900 correspondem aos campos de opcode da instrução 950.
080. Outro exemplo é retratado na FIG. 9B. Neste exemplo, como no exemplo retratado na FIG. 9A, o especificador não contíguo (V1, RXB) da instrução 900 está sendo transformado num especificador contíguo (VRT) da instrução 950. Entretanto, neste exemplo, o registro alocado para a instrução 950 não possui o mesmo número do especificador contíguo transformado; em vez disso, o especificador contíguo é mapeado para um registro diferente. Por exemplo, no caso da FIG. 9A, o especificador não contíguo faz referência ao registro 18, da mesma forma que o especificador contíguo. Isso quer dizer que existe um mapeamento um para um. Entretanto, na FIG. 9B, o especificador não contíguo de 18 é transformado num especificador contíguo de 18, mas então, o 18 do especificador contíguo é mapeado para um registro diferente, como o registro 7 (vide o número referência 890), ou seja, o registro 18 na arquitetura fonte mapeia para o registro 7 na arquitetura meta, neste exemplo particular. Tal mapeamento é pré-definido e acessível ao processador.
081. Ainda outro exemplo é retratado na FIG. 11. Neste exemplo, em vez da alocação a um registro durante a emulação, como nas FIGs. 9A e 9B, a alocação é à memória. Neste exemplo, uma instrução VLR é utilizada para mover os conteúdos de um registro vetorial, VR 18 para outro registro vetorial, VR 24. Entretanto, neste exemplo, suponhamos que o arquivo de registro não seja grande o suficiente para incluir esses registros vetoriais, então, é utilizada a memória. Há uma parte contígua da memória que armazena uma pluralidade de vetores como uma matriz. A matriz é iniciada num endereço, rvbase, no qual o primeiro registro, e.g., registro 0, é armazenado; e, em seguida, o próximo registro é armazenado num deslocamento, e.g., 16 bytes, da rvbase; e o terceiro registro é armazenado num deslocamento do segundo registro, e assim por diante. Assim, neste exemplo, o registro 18 está num deslocamento 288 da rvbase, e o registro 24 está num deslocamento 384 da rvbase.
082. Neste exemplo, há dois especificadores não contíguos (V1, RXB; e V2, RXB). Assim, são gerados dois especificadores contíguos. Por exemplo, uma vez que V1 é o primeiro operando, o primeiro especificador contíguo é gerado pela concatenação dos bits em V1 com o bit 0 de RXB. Já que V1 inclui 1000 em binário (8 decimais) e RXB inclui 1100 em binário (12 decimais), o primeiro especificador contíguo é formado pela concatenação de 1 (do bit 0 de RXB) com 1000 (de V1) fornecendo 11000 (24 em decimais). Analogamente, o segundo especificadorcontíguo é gerado pela concatenação de 0010 (2 em decimais para V2) e 1 (do bit 1 de RXB) fornecendo 10010 (18 em decimais). Uma vez que esses registros estão dentro da memória, o registro vetorial 24 está num deslocamento 384 da rvbase, e o registro vetorial 18 está num deslocamento 288 da rvbase. Esses valores são mostrados na FIG. 11 em 1102, 1104, respectivamente.
083. O pseudo código à direita na FIG. 11 e as instruções na esquerda descrevem a movimentação de um número contíguo de bytes que correspondem a um registro vetorial num deslocamento vetorial em 18 (que corresponde a um deslocamento de byte em 288) para um deslocamento vetorial em 24 (que corresponde a um deslocamento de byte em 384). Em particular, uma carga imediata (L1) carrega um valor de 288 em rtemp1, e em seguida uma carga de vetor é executada num endereço fornecido por rvbase mais o deslocamento em rtemp1, e o valor é armazenado num registro vetorial temporário, vtemp2. Em seguida, a próxima carga imediata carrega 384 em rtemp1, e é realizado um armazenamento de retorno à memória numa localização que corresponde ao endereço mais o deslocamento no registro vetorial 24 (e.g., deslocamento 288).
084. Embora sejam descritos vários exemplos acima, são possíveis muitos outros exemplos e variações. Informações adicionais relativas a instruções vetoriais e ao uso do campo RXB estão descritas numa solicitação de patente registrada em conjunto com esta, intitulada “Instruction to Load Data Up to A Specified Memory Boundary Indicated by the Instruction.” Serial N° ..., (Etiqueta IBN N° POU920120030US1), Jonathan D. Bradbury et al, que está sendo incorporado neste documento por referência, em sua totalidade.
085. Além disso, várias arquiteturas são aqui mencionadas. Uma concretização da Arquitetura/z está descrita na publicação IBM® intitulada “z/Architecture Principles of Operation”, Publicação da IBM® N° SA22-7832-08, Nona Edição, agosto, 2010, que está sendo incorporada neste documento por referência, em sua totalidade. IBM® e Z/ARCHITECTURE® são marcas registradas da International Business Machines Corporation, Armonk, New York, EUA. Outros nomes aqui utilizados podem ser marcas registradas, marcas, ou nomes de produtos da International Business Machines Corporation ou de outras empresas. Adicionalmente, uma concretização da Arquitetura Power está descrita em Power ISA™ Versão 2.06 Revisão B, International Business Machines Corporation, 23 de julho de 2010, que está sendo incorporada neste documento por referência, em sua totalidade. POWER ARCHITECTURE® é marca registrada da International Business Machines Corporation. Mais ainda, uma concretização da arquitetura Intel está descrita em Intel® 64 e Manual de Desenvolvedores de Arquitetura IA-32: Vol. 2B, Referência de Conjunto de Instruções, A-L, Número de Ordem 253666-041US, dezembro 2011, e Intel® 64 e Manual de Desenvolvedores de Arquitetura IA-32: Vol. 2B, Referência de Conjunto de Instruções, M-Z, Número de Ordem 253667-041US, dezembro 2011, cada um deles incorporado neste documento por referência, em sua totalidade. Intel® é marca registrada da Intel Corporation, Santa Clara, California.
086. Acha-se aqui descrita em detalhe uma técnica para transformar especificadores não contíguos de uma instrução definida para uma arquitetura de sistema para especificadores contíguos para uma instrução definida para outra arquitetura de sistema. Emulações anteriores de arquitetura não tiveram sucesso ao conduzir a emulação de sistemas com especificadores não contíguos e, particularmente, especificadores de registros não contíguos, quer em conjuntos de instruções com largura fixa ou variável. Entretanto, de acordo com um aspecto da presente invenção, é fornecida uma técnica para estender emuladores existentes para controlar especificadores não contíguos. A técnica inclui, por exemplo, a leitura de especificadores não contíguos, gerando um índice contíguo a partir de um especificador não contíguo, e utilizando o índice contíguo para acessar ou representar um recurso homogêneo.
087. Numa concretização adicional, de acordo com uma implementação JIT (just in time), um índice contíguo é utilizado para tomar decisões de alocação, representando opcionalmente um recurso acessado por um especificador não contíguo por um recurso não contíguo/não homogêneo, mas que não reflete a partição por limites de especificador não contíguo, mas por decisões de otimização. Significa que, numa concretização, uma instrução definida para uma arquitetura possui no mínimo um especificador não contíguo para pelo menos um recurso, e que pelo menos um especificador não contíguo é transformado em no mínimo um especificador contíguo. Esse especificador contíguo é usado para selecionar no mínimo um recurso para uma instrução de outra arquitetura para utilização. A instrução da outra arquitetura, entretanto, utiliza especificadores não contíguos. Assim, pelo menos um especificador contíguo para no mínimo um recursos selecionado é então transformado em um especificador não contíguo no mínimo para ser utilizado pela instrução da segunda arquitetura. Numa concretização, isso é realizado por um emulador.
088. Numa concretização, é fornecido um emulador para emular a execução de instrução de um conjunto de instruções de uma primeira arquitetura de computador num processador projetado para uma segunda arquitetura de computador. O emulador inclui, por exemplo, a busca de instruções de um aplicativo pelo programa de emulação; interpretação do opcode das instruções de modo a selecionar um módulo de emulação para emular as instruções; determinação, a partir do opcode, que as instruções empregam campos de registro não contíguos; combinação de campos de registro não contíguos da instrução para formar um campo de registro combinado; e utilização do campo de registro combinado pelas instruções do módulo de emulação, a fim de emular as instruções.
089. Além disso, numa concretização, o espaço de registro inclui uma subseção, e o conjunto de instruções da primeira arquitetura de computador inclui as primeiras instruções com campos de registro para acesso somente à subseção, e segundas instruções com campos de registro não contíguos para acesso a todo o espaço do registro.
090. Numa concretização, o campo RXB está na mesma localização para todas as instruções utilizando o campo RXB. Os bits RXB são bits significativos; o bit 36 do campo RXB é utilizado para estender os bits 8-11 da instrução; o bit 37 do RXB é utilizado para estender os bits 12-15; o bit 38 do RXB é utilizado para estender os bits 16-19; e o bit 39 do RXB é utilizado para estender os bits 32-35, como exemplos. Além disso, a decisão de utilizar um bit do RXB como bit de extensão depende do opcode (e.g., R1 vs V1). Ademais, especificadores não contíguos podem utilizar campos diferentes dos campos RXB.
091. Neste documento, memória, memória principal, armazenamento e armazenamento principal são usados de forma intercambiável, salvo se indicado explicitamente de outra forma ou pelo contexto.
092. Detalhes adicionais relativos ao recurso vetor, incluindo exemplos de instruções, estão contidos como parte desta Descrição Detalhada mais adiante abaixo.
093. Como os especialistas poderão entender, um ou mais aspectos da presente invenção podem ser concretizados como um sistema, método ou produto programa de computador. Como resultado, um ou mais aspectos da presente invenção podem estar na forma de uma concretização inteiramente hardware, inteiramente software (incluindo firmware, software residente, microcódigo, etc.) ou de uma concretização combinando aspectos de software e de hardware que podem ser designados neste documentos de forma geral como “circuito”, “módulo” ou “sistema”. Além disso, um ou mais aspectos da presente invenção podem ter a forma de um produto programa de computador incorporado em uma ou mais mídias de leitura por computador, possuindo um código de programa de leitura por computador nele embutido.
094. Qualquer combinação de uma ou mais mídias de leitura por computador pode ser utilizada. A mídia de leitura por computador pode ser uma mídia de armazenamento de leitura por computador. A mídia de armazenamento de leitura por computador pode ser, por exemplo, sem limitação a sistema, equipamento ou dispositivo eletrônico, magnético, ótico, eletromagnético, infravermelho ou semicondutor, ou qualquer combinação deles. Exemplos mais específicos (uma lista não exaustiva) de mídias de armazenamento de leitura por computador incluem os seguintes: conexão elétrica com um ou mais cabos, disco para PC, disco rígido, memória RAM, memória ROM, memória EPROM ou memória Flash, fibra ótica, CD- ROM, dispositivo de armazenamento ótico, dispositivo de armazenamento magnético, ou qualquer combinação deles. No contexto deste documento, a mídia de armazenamento de leitura por computador pode ser qualquer mídia tangível que possa conter ou armazenar um programa para uso por ou em conexão com um sistema, equipamento ou dispositivo de execução de instrução.
095. Com referência agora à FIG. 12, num exemplo, um produto programa de computador 1200 inclui, por exemplo, uma ou mais mídias não transitórias de leitura por computador 1202 para armazenar meios ou lógica de códigos de programa de leitura por computador 1204 para fornecer e facilitar um ou mais aspectos da presente invenção.
096. Um código de programa incorporado em mídia de leitura por computador pode ser transmitido utilizando mídia apropriada, incluindo, sem limitação a redes sem fio e com fio, cabo de fibra ótica, radiofrequência, etc., ou qualquer combinação delas.
097. Um 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 linguagem de programação orientada a objeto, como Java, Smalltalk, C++ ou similar, e linguagens de programação de procedimento convencional, como linguagem de programação C, assembler ou similares. O código de programa pode ser executado inteiramente no computador do usuário, parcialmente no computador do usuário, como um pacote de software autônomo, parcialmente no computador do usuário e parcialmente num computador remoto ou inteiramente num computador ou servidor remoto. No último cenário, o computador remoto pode ser conectado ao computador do usuário através de qualquer tipo de rede, inclusive rede local (LAN) ou rede ampla (WAN), ou a conexão pode ser feita a um computador externo (por exemplo, pela internet, utilizando um provedor).
098. Neste documento estão descritos um ou mais aspectos da presente invenção com referência às ilustrações de fluxograma e/ou diagramas de blocos de métodos, dispositivos (sistemas) e produtos programa de computador de acordo com concretizações da invenção. Fica entendido que cada bloco das ilustrações do fluxograma ou dos diagramas de bloco, e combinações de blocos nas ilustrações de fluxograma e/ou diagramas de blocos podem ser implementados por instruções de programa de computador. Essas instruções de programa de computador podem ser fornecidas para um processador de um computador de propósito geral, computador de propósito específico ou outro equipamento programável de processamento de dados para produzir uma máquina, de forma que as instruções que são executados pelo processador do computador ou por outro equipamento programável de processamento de dados, criem meios para implementar as funções/ações especificadas no fluxograma e/ou diagrama de blocos.
099. Essas instruções de programa de computador podem também ser armazenadas num computador, em outro equipamento programável de processamento de dados, ou outros dispositivos para dar causa a uma série de passos operacionais a serem realizados no computador, em outro equipamento programável de processamento de dados ou outros dispositivos para produzir um processo implementado em computador tal que as instruções que sejam executadas em um computador ou em outro equipamento programável de processamento de dados forneçam processos para implementação das funções/ações especificadas no fluxograma e/ou diagrama de blocos.
0100. Os fluxogramas e diagramas de bloco nas figuras ilustram a arquitetura, funcionalidade e operação de possíveis implementações dos sistemas, métodos e produtos programa de computador de acordo com várias concretizações de um ou mais aspectos da presente invenção. A este respeito, cada bloco nos fluxogramas ou nos diagramas de bloco pode representar um módulo, segmento ou parte de código, que compreende uma ou mais instruções executáveis para implementação da(s) função(es) lógica(s) especificada(s). Deve ser também observado que, em algumas implementações alternativas, as funções verificadas no bloco podem ocorrer fora da ordem mencionada nas figuras. Por exemplo, dois blocos mostrados em sucessão podem, na realidade, ser executados em grande parte simultaneamente, ou os blocos podem, às vezes, ser executados na ordem reversa, dependendo da funcionalidade envolvida. Pode ser ainda observado que cada bloco da ilustração de diagramas de blocos e/ou do fluxograma, e combinação de blocos na ilustração de diagramas de blocos e/ou do fluxograma pode ser implementado por sistemas baseados em hardware de propósito específico que realizam as funções ou atos determinados, ou combinações de hardware de propósito específico e instruções de computador.
0101. Em adição ao acima exposto, um ou mais aspectos da presente invenção podem ser fornecidos, oferecidos, usados, gerenciados, verificados, etc. por um provedor de serviços que ofereça gerenciamento dos ambientes dos clientes. Por exemplo, o provedor de serviços pode criar, manter, dar suporte a, etc. um código de computador e/ou infraestrutura computacional que realize um ou mais aspectos da presente invenção para um ou mais clientes. Em contrapartida, o provedor pode receber pagamento do cliente mediante assinatura e/ou contrato, como exemplos. Além disso ou alternativamente, o provedor pode receber pagamento da venda de conteúdo de propaganda para terceiros.
0102. Num aspecto da presente invenção, pode ser utilizado um aplicativo para realizar um ou mais aspectos da presente invenção. Como exemplo, a utilização de um aplicativo compreende o fornecimento de infraestrutura computacional operacional para realizar um ou mais aspectos da presente invenção.
0103. Como um aspecto adicional da presente invenção, pode ser utilizada uma infraestrutura computacional compreendendo a integração de um código de leitura por computador num sistema computacional, no qual o código em combinação com o sistema computacional seja capaz de realizar um ou mais aspectos da presente invenção.
0104. Em ainda outro aspecto da presente invenção, pode ser fornecido um processo de integração da infraestrutura computacional compreendendo a integração de um código de leitura por computador num sistema computacional. O sistema computacional compreende uma mídia de leitura por computador, no qual essa mídia englobe um ou mais aspectos da presente invenção. O código em combinação com o sistema computacional é capaz de realizar um ou mais aspectos da presente invenção.
0105. Embora estejam descritas acima várias concretizações, trata-se apenas de exemplos. Ambientes computacional de outras arquiteturas podem incorporar e utilizar um ou mais aspectos da presente invenção. Além disso, vetores de outros tamanhos ou outros registros podem ser utilizados, podem ser feitas alterações às instruções sem partir do espírito da presente invenção. Adicionalmente, outras instruções podem ser usadas no processamento. Ademais, um ou mais aspectos da invenção relativos à transformação de especificadores não contíguos em especificadores contíguos podem ser utilizados em outros contextos e, ainda, os especificadores podem ter outra finalidade além de registros. Outras alterações são também possíveis.
0106. Além disso, outros tipos de ambientes computacionais podem se beneficiar de um ou mais aspectos da presente invenção. Por exemplo, um sistema de processamento de dados adequado para armazenar e/ou executar código de programa que inclua pelo menos dois processadores direta ou indiretamente acoplados aos elementos de memória por meio de barramento de sistema. Os elementos de memória incluem, por exemplo, a memória local empregada durante a execução real do código de programa, armazenamento em massa e memória cache que fornecem armazenamento temporário de alguns códigos de programa a fim de reduzir a quantidade de vezes que o código deve ser recuperado do armazenamento em massa durante a execução.
0107. Dispositivos de Entrada/Saída ou E/S (incluindo, sem limitação a teclados, monitores, dispositivos apontadores, dispositivos de armazenamento de acesso direto (DASD), fita, CDs, DVDs, pendrives e outras mídias de memória, etc.) podem ser acoplados ao sistema ou diretamente ou por controladores E/S intervenientes. Adaptadores de rede podem também ser acoplados ao sistema para permitir que o sistema de processamento de dados fique acoplado a outros sistemas de processamento de dados ou impressoras remotas ou dispositivos de armazenamento por meio de redes privadas ou públicas intervenientes. Modems, modems de cabo, cartões Ethernet são apenas alguns dos tipos disponíveis de adaptadores de rede.
0108. Com referência à FIG. 13, são retratados componentes representativos de um sistema de Computador Hospedeiro 5000 para implementar um ou mais aspectos da presente invenção. O computador hospedeiro 5000 compreende uma ou mais CPUs 5001 em comunicação com a memória do computador (i.e., armazenamento central) 5002, bem como interfaces de E/S para armazenar dispositivos de mídia 5011 e redes 5010 para comunicação com outros computadores ou redes de área de armazenamento (SANs) e similares. A CPU 5001 é compatível com uma arquitetura com um conjunto de instruções e funcionalidade arquitetadas. A CPU 5001 pode ter tradução dinâmica de endereços (DAT) 5003 para transformar endereços de programa (endereços virtuais) em endereços reais de memória. Uma DAT típica inclui memória associativa (TLB) 5007 para capturar traduções de forma que os futuros acessos ao bloco da memória do computador 5002 não necessitem do tempo da tradução do endereço. Em geral, emprega-se um cache 5009 entre a memória do computador 5002 e o processador 5001. O cache 5009 pode ser hierarquizada, com um grande cache disponível para mais de uma CPU e caches menores e mais rápidos (nível mais baixo) entre o cache grande e cada CPU. Em algumas implementações, os caches de nível mais baixo são divididos para fornecer caches separados de nível mais baixo para busca de instruções e acessos de dados. Numa concretização, busca-se uma instrução da memória 5002 por uma unidade de busca de instrução 5001 via um cache 5009. A instrução é decodificada numa unidade de decodificação de instrução 5006 e enviada (com outras instruções em algumas concretizações) para a unidade(s) de execução de instrução 5008. São empregadas tipicamente várias unidades de execução 5008, por exemplo, unidade de execução aritmética, unidade de execução de ponto flutuante e unidade de execução de instrução de desvio. A instrução é executada pela unidade de execução, acessando operandos a partir de registros especificados de instrução ou memória, conforme necessário. Se um operando tiver que ser acessado (carregado ou armazenado) da memória 5002, a unidade de carga/armazenamento 5005 mantém o acesso sob controle da instrução sendo executada. As instruções podem ser executadas em circuitos de hardware ou em microcódigos internos (firmware) ou pela combinação dos dois.
0109. Conforme observado, um sistema computacional inclui informações em 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 dos endereços, o conceito dos espaços dos endereços, os vários tipos de endereços e a forma na qual um tipo de endereço é traduzido para outro tipo de endereço. Alguns armazenamentos principais incluem locações de armazenamento de atribuição permanente. O armazenamento principal fornece ao sistema armazenamento de dados diretamente endereçáveis e de acesso rápido. Tanto os dados como os programas devem ser carregados no armazenamento principal (a partir de dispositivos de entrada) antes que possam ser processados.
0110. O armazenamento principal pode incluir um ou mais buffers menores e de acesso rápido, às vezes chamados caches. Um cache em geral está fisicamente associado à CPU ou a um processador de E/S. Os efeitos, exceto na execução, da construção física e da utilização de mídia de armazenamento distinta não são geralmente observáveis pelo programa.
0111. Caches separados podem ser mantidos para instruções e operandos de dados. A informação no cache é mantida em bytes contíguos numa limitação integral chamada bloco de cache ou linha de cache (ou simplesmente linha). Um modelo pode fornecer uma instrução EXTRAIR ATRIBUTO DE CACHE que retorna o tamanho da linha de cache em bytes. Um modelo pode também fornecer instruções PRÉ-BUSCA DE DADOS e PRÉ-BUSCA DE DADOS RELATIVOS EXTENSOS que efetua a pré- busca de armazenamento no cache de dados ou instruções ou a liberação de dados do cache.
0112. O armazenamento é visualizado como uma cadeia de bits longa e horizontal. Para a maioria das operações, os acessos ao armazenamento se processam numa sequência da esquerda para a direita. A cadeia de bits é subdividida em unidades de oito bits. A unidade de oito bits é chamada byte, que é o bloco básico de construção de todos os formatos de informação. Cada localização de byte armazenado é identificada por um único número inteiro não negativo, que é o endereço daquela localização de byte ou, simplesmente, endereço de byte. Localizações adjacentes de bytes possuem endereços consecutivos, começando com 0 à esquerda e continuando em sequência da esquerda para a direita. Os endereços são números inteiros binários sem sinal e têm 24, 31, ou 64 bits.
0113. A informação é transmitida entre o armazenamento e a CPU ou um subsistema de canal de um byte, ou um grupo de bytes, simultaneamente. Salvo se especificado de outra forma, na Arquitetura/z, por exemplo, um grupo de bytes armazenados é endereçado pelo byte mais à esquerda do grupo. O número de bytes no grupo é especificado implícita ou explicitamente pela operação a ser executada. Quando utilizado numa operação CPU, o grupo de bytes é chamado campo. Dentro de cada grupo de bytes na Arquitetura/z, por exemplo, os bits são numerados numa sequência da esquerda para a direita. Na Arquitetura/z, os bits mais à esquerda são às vezes designados bits de ordem superior e os bits mais à direita, bits de ordem inferior. No entanto, os números dos bits não são endereços de armazenamento. Somente bytes podem ser endereçados. Para operar com bits individuais de um byte armazenado, o byte inteiro é acessado. Os bits num byte são numerados de 0 a 7, da esquerda para a direita (e.g., na Arquitetura/z). Os bits num endereço podem ser numerados 8-31 ou 40-63 para endereços 24-bits, ou 1-31 ou 33-63 para endereços 31-bits; eles são numerados de 0-63 para endereços 64-bits. Em qualquer outro formato de extensão fixa de múltiplos bytes, os bits que compõem o formato são numerados consecutivamente iniciando em 0. Com a finalidade de detecção de erros, e em preferência para correção, podem ser transmitidos um ou mais bits de verificação com cada byte ou grupo de bytes. Tais bits de verificação são gerados automaticamente pela máquina e não podem ser controlados diretamente pelo programa. As capacidades de armazenamento são expressas em número de bytes. Quando a extensão de um campo de operando de armazenamento é sugerida pelo código operacional de uma instrução, diz-se que o campo tem extensão fixa, que pode ser de um, dois, quatro, oito ou dezesseis bytes. Campos maiores podem ser sugeridos por algumas instruções. Quando a extensão de um campo de operando de armazenamento não é sugerida, mas explicitamente determinada, diz-se que o campo possui uma extensão variável. A extensão de operandos de extensão variável pode variar por incremento de um byte (ou com algumas instruções, em múltiplos de dois bytes ou outros múltiplos). Quando a informação é armazenada, somente os conteúdos daquelas localizações de bytes que estão incluídas no campo designado são substituídas, mesmo que a largura do caminho físico para o armazenamento possa ser maior do que a extensão do campo sendo armazenado.
0114. Determinadas unidades de informação devem estar num limite integral em armazenamento. Um limite é chamado integral para uma unidade de informação quando seu endereço de armazenamento é um múltiplo da extensão da unidade em bytes. São dados nomes especiais aos campos de 2, 4, 8 e 16 bytes num limite integral. Meia palavra é um grupo de dois bytes consecutivos num limite de dois bytes e o bloco de construção básico de instruções. Palavra é um grupo de quatro bytes consecutivos num limite de quatro bytes. Palavra dupla é um grupo de oito bytes consecutivos num limite de oito bytes. Palavra quádrupla é um grupo de 16 bytes consecutivos num limite de 16 bytes. Quando os endereços de armazenamento designam meias palavras, palavras, palavras duplas, e palavras quádruplas, a representação binária do endereço contém um, dois, três ou quatro zero bits mais à direita, respectivamente. As instruções devem ser em limite integral de dois bytes. Os operandos de armazenamento da maioria das instruções não possuem requisitos de alinhamento de limite.
0115. Em dispositivos que implementam caches separados para instruções e operandos de dados, pode ser experimentada uma demora significativa se o programa armazenar numa linha de cache da qual as instruções são buscadas subsequentemente, independentemente se o armazenamento altera as instruções que são buscadas subsequentemente.
0116. Numa concretização, a invenção pode ser colocada em prática por software (às vezes designado código interno licenciado, firmware, microcódigo, milicódigo, picocódigo e similares, qualquer dos quais seria consistente com um ou mais aspectos da presente invenção). Com referência à FIG. 13, o código de programa do software que incorpora um ou mais aspectos da presente invenção pode ser acessado pelo processador 5001 do sistema hospedeiro 5000 a partir de dispositivos de mídia de armazenamento de longo prazo, como unidade de CD-ROM, unidade de fita ou disco rígido. O código de programa de software pode ser incorporado em qualquer das variadas mídias conhecidas para utilização em sistema de processamento de dados, tais como disquete, disco rígido ou CD-ROM. O código pode ser distribuído em tais mídias ou pode ser distribuído aos usuários a partir da memória do computador 5002 ou armazenamento de um sistema computacional em rede 5010 para outros sistemas computacionais para utilização por usuários ou pelos outros sistemas.
0117. O código de programa de software inclui um sistema operacional que controla a função e a interação dos vários componentes de computador e um ou mais programas aplicativos. O código de programa é normalmente comunicado a partir do dispositivo de mídia de armazenamento 5011 para armazenamento em computador de maior velocidade relativa 5002 onde fica disponível para processamento pelo processador 5001. As técnicas e os métodos para incorporar código de programa de software na memória, em mídias físicas e/ou distribuir código de software via redes são bem conhecidas e não mais serão discutidas aqui. O código de programa, quando criado e armazenado em mídia tangível (incluindo, sem restrição a módulos de memória eletrônica (RAM), memória flash, CDs, DVDs, Fita Magnética e similares) é frequentemente designado “produto programa de computador”. A mídia do produto programa de computador é em geral legível por um circuito processador preferivelmente num sistema computacional para execução pelo circuito processador.
0118. A FIG. 14 ilustra a representação de uma estação de trabalho ou um sistema de hardware servidor no qual um ou mais aspectos da presente invenção podem ser colocados em prática. O sistema da FIG. 14 compreende a representação de um sistema computacional base 5021, tal como um computador pessoal, uma estação de trabalho ou um servidor, incluindo dispositivos periféricos opcionais. O sistema computacional base 5021 inclui um ou mais processadores 5026 e um barramento empregado para conectar ou permitir a comunicação entre o(s) processador(es) 5026 e os outros componentes do sistema 5021 de acordo com as técnicas conhecidas. O barramento conecta o processador 5026 à memória 5025 e ao armazenamento de longo prazo 5027 que pode incluir disco rígido (incluindo qualquer mídia magnética, CD, DVD e memória flash, por exemplo) ou um disco de fita, por exemplo. O sistema 5021 pode também incluir um adaptador de interface com o usuário, que conecta o microprocessador 5026 através do barramento com um ou mais dispositivos de interface, como o teclado 5024, mouse 5023, impressora/escâner 5030 e/ou outros dispositivos de interface, que podem ser qualquer dispositivo de interface com o usuário, como uma tela sensível ao toque, pad de entrada digital, etc. O barramento também conecta um dispositivo de vídeo 5022, como uma tela LCD ou monitor, ao microprocessador 5026 mediante um adaptador.
0119. O sistema 5021 pode se comunicar com outros computadores ou redes de computadores por meio de um adaptador de rede capaz de se comunicar 5028 com uma rede 5029. Canais de comunicação, rede token ring, Ethernet ou modems. Alternativamente, o sistema 5021 pode se comunicar utilizando uma interface sem fio, como cartão CDPD (pacote de dados digital e celular). O sistema 5021 pode ser associado com outros computadores em rede local (LAN) ou rede ampla (WAN), ou o sistema 5021 pode ser um cliente num arranjo cliente/servidor com outro computador, etc. Todas essas configurações, bem como as comunicações apropriadas hardware e software, são conhecidas na especialidade.
0120. A FIG. 15 ilustra uma rede de processamento de dados 5040 na qual um ou mais aspectos da presente invenção podem ser colocados em prática. A rede de processamento de dados 5040 pode incluir uma pluralidade de redes individuais, tais como rede sem fio ou com fio, cada uma podendo incluir uma pluralidade de estações de trabalho individuais 5041, 5042, 5043, 5044. Adicionalmente, como osespecialistas avaliarão, podem ser incluídas uma ou mais LANs, em que uma LAN pode incluir uma pluralidade de estações de trabalho inteligentes acopladas a um processador hospedeiro.
0121. Ainda com referência à FIG. 15, a rede pode também incluir computadores mainframe ou servidores, tais como computador gateway (intermediário) (servidor cliente 5046) ou servidor de aplicação (servidor remoto 5048, que pode acessar um repositório de dados e pode também ser acessado diretamente a partir de uma estação de trabalho 5045). O computador gateway 5046 serve como ponto de entrada em cada rede individual. É necessário um gateway ao conectar um protocolo de rede a outro. O gateway 5046 pode ser preferencialmente acoplado a outra rede (internet 5047, por exemplo) por meio de um link de comunicações. O gateway 5046 pode também ser diretamente acoplado a uma ou mais estações de trabalho 5041, 5042, 5043, 5044 utilizando um link de comunicações. O computador gateway pode ser implementado utilizando um servidor do Sistema z da IBM eServer™ da International Business Machines Corporation.
0122. Com referência simultaneamente às FIGs 14 e 15 o código de programação do software que pode incorporar um ou mais aspectos da presente invenção pode ser acessado pelo processador 5026 do sistema 5020 a partir de uma mídia de armazenamento de longo prazo 5027, tal como CD-ROM ou disco rígido. O código de programação do software pode ser incorporado em qualquer das várias mídias conhecidas para utilização com um sistema de processamento de dados, tais como disquete, disco rígido, ou CD-ROM. O código pode ser distribuído em tais mídias ou pode ser distribuído aos usuários 5050, 5051 a partir da memória do computador ou armazenamento de um sistema computacional em rede para outros sistemas computacionais para utilização por usuários ou pelos outros sistemas.
0123. Alternativamente, o código de programa pode ser incorporado na memória 5025 e acessado por um processador 5026 utilizando o barramento do processador. Tal código de programação inclui um sistema operacional que controla a função e a interação dos vários componentes de computador e um ou mais programas aplicativos 5032. O código de programa é normalmente comunicado a partir do dispositivo de mídia de armazenamento 5027 para memória de maior velocidade 5025 onde fica disponível para processamento pelo processador 5026. As técnicas e os métodos para incorporar código de programação de software na memória, em mídias físicas e/ou distribuir código de software via redes são bem conhecidas e não mais serão discutidas aqui. O código de programa, quando criado e armazenado em mídia tangível (incluindo, sem restrição a módulos de memória eletrônica (RAM), memória flash, CDs, DVDs, Fita Magnética e similares) é frequentemente designado “produto programa de computador”. A mídia do produto programa de computador é em geral legível por um circuito processador preferivelmente num sistema computacional para execução pelo circuito processador.
0124. O cache mais imediatamente disponível ao processador (normalmente mais rápido e menor do que os outros caches do processador) é o cache mais baixo (L1 ou nível 1) e o armazenamento principal (memória principal) é o cache de nível mais alto (L3, se houver 3 níveis). O cache de nível mais baixo é frequentemente dividido em cache de instrução (I-Cache) contendo as instruções da máquina a serem executadas e o cache de dados (D-Cache) contendo os operandos de dados.
0125. Com referência à FIG. 16, um modelo de concretização de processador é retratado para processador 5026. Tipicamente, um ou mais níveis de cache 5053 são empregados para fazer o buffer dos blocos de memória a fim de aperfeiçoar o desempenho do processador. O cache 5053 é um buffer de alta velocidade contendo linhas de cache de dados de memória com probabilidade de serem usados. As linhas de cache típicas são de 64, 128 ou 256 bytes de dados de memória. Frequentemente são empregados caches separados para capturar instruções em vez de capturar dados. A coerência de cache (sincronização de cópias de linhas na memória e os caches) é usualmente fornecida por vários algoritmos de vasculhamento (“snoop”) bem conhecidos dos especialistas. O armazenamento na memória principal 5025 de um sistema processador é geralmente designado como cache. Num sistema de processamento com 4 níveis de cache 5053, o armazenamento principal 5025 é às vezes designado cache de nível 5 (L5), uma vez que é tipicamente mais rápido e retém somente uma parte do armazenamento não volátil (DASD, fita, etc.) que está disponível num sistema computacional. O armazenamento principal 5025 salva páginas de dados dentro e fora do armazenamento principal 5025 enviadas pelo sistema operacional.
0126. Um contador de programa (contador de instrução) 5061 mantém o rastreamento do endereço da instrução atual a ser executada. No processador da Arquitetura/z o contador de programa tem 64 bits e podem ser cortados para 31 ou 24 bits para suportar limites de endereçamento anteriores. O programa de computador é tipicamente incorporado em PSW (palavra de status do programa) de um computador de forma tal que ele persiste durante a mudança de contexto. Assim, um programa em andamento, possuindo um valor do contador de programa, pode ser interrompido pelo sistema operacional, por exemplo (mudança de contexto do ambiente de programa para o ambiente do sistema operacional). A PSW do programa mantém o valor do contador do programa enquanto o programa não está ativo, e o contador do programa (na PSW) do sistema operacional é utilizado enquanto o sistema operacional está sendo executado. Tipicamente, o contador do programa é incrementado por um valor igual ao número de bytes da instrução atual. As instruções RISC (conjunto de instruções reduzidas do computador) possuem extensão fixa enquanto as instruções CISC (conjunto de instruções complexas do computador) têm extensão variável. As instruções da Arquitetura/z da IBM são instruções CISC com extensão de 2, 4, ou 6 bytes. O contador do programa 5061 é modificado ou por uma operação de mudança de contexto ou por uma operação de tomada de desvio de uma instrução de desvio, por exemplo. Numa operação de mudança de contexto, o valor atual do contador do programa é salvo na PSW junto com outras informações de estado do programa sendo executado (como códigos de condição), e um valor novo do contador de programa é carregado apontando para uma instrução de um novo módulo de programa a ser executado. É realizada uma operação de tomada de desvio a fim de permitir que o programa tome decisões ou faça um loop dentro do programa mediante o carregamento do resultado da instrução de desvio para o contador do programa 5061.
0127. A unidade de busca de instrução 5055 é tipicamente empregada para buscar instruções em nome do processador 5026. A unidade de busca ou busca as “novas instruções sequenciais”, as instruções meta das instruções de tomada de desvio, ou as primeiras instruções de um programa seguinte à mudança de contexto. As modernas unidades de busca de instrução empregam com frequência técnicas de pré-busca para fazer uma pré-busca especulativa de instruções com base na probabilidade de que as instruções pré-buscadas possam ser utilizadas. Por exemplo, uma unidade de busca pode buscar 16 bytes de instrução que inclua a instrução sequencial seguinte e bytes adicionais para instruções sequenciais adicionais.
0128. As instruções buscadas são então executadas pelo processador 506. Numa 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 encaminha as informações sobre as instruções decodificadas para as unidades apropriadas 5057, 5058, 5060. A unidade de execução 5057 receberá as informações sobre as instruções aritméticas decodificadas da unidade de busca de instrução 5055 e realizará operações aritméticas em operandos de acordo com o opcode da instrução. São fornecidos operandos para a unidade de execução 5057 de preferência da memória 5025, dos registros arquitetados 5059 ou de um campo imediato da instrução que está sendo executada. Os resultados da execução, quando armazenados, são armazenados ou na memória 5025, nos registros 5059 ou em outro hardware (como registros de controle, registros PSW e similares).
0129. Um processador típico 5026 possui uma ou mais unidades 5057, 5058, 5060 para executar a função da instrução. Com referência à FIG. 17A, uma unidade de execução 5057 pode se comunicar com registros gerais arquitetados 5059, com uma unidade de decodificação/envio 5056, com uma unidade de carga/armazenamento 5060, e outras unidades processadoras 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 a informação sobre a qual a unidade lógica e aritmética (ALU) 5066 irá operar. A ALU realiza operações aritméticas tais como adição, subtração, multiplicação e divisão, bem como funções lógicas como e, ou e ou-exclusivo (XOR), rotação e movimento. Preferentemente a ALU suporta operações especializadas que são dependentes de projeto. Outros circuitos podem fornecer outros recursos arquitetados 5072 inclusive códigos de condição e lógica de suporte de recuperação, por exemplo. O resultado típico de uma operação de ALU é mantido num circuito de registro de saída 5070 que pode encaminhar o resultado para uma variedade de outras funções de processamento. Há vários arranjos de unidades processadoras; a presente descrição pretende apenas fornecer a representação do entendimento de uma concretização.
0130. Uma instrução ADD, por exemplo, seria executada numa unidade de execução 5057 possuindo funcionalidade aritmética e lógica enquanto uma instrução de ponto flutuante seria executada em execução ponto flutuante possuindo capacidade especializada de ponto de flutuação. De preferência, uma unidade de execução opera em operandos identificados por uma instrução mediante a realização de uma função definida no opcode nos operandos. Por exemplo, uma instrução ADD pode ser executada por uma unidade de execução 5057 em operandos encontrados em dois registros 5059 identificados por campos de registro da instrução.
0131. A unidade de execução 5057 realiza a adição aritmética em dois operandos e armazena o resultado num terceiro operando em que o terceiro operando pode ser um terceiro registro ou um dos dois registros fonte. A unidade de execução utiliza preferencialmente uma Unidade Lógica e Aritmética (ALU) 5066 que é capaz de realizar uma variedade de funções lógicas, tais como Movimentação, Rotação, E, Ou e XOR, bem como uma variedade de funções algébricas incluindo adição, subtração, multiplicação, divisão. Algumas ALUs 5066 são projetadas para operações escalares e outras para ponto flutuante. Os dados podem ser Big Endian (em que o byte menos significativo fica no endereço de byte mais elevado) ou Little Endian (em que o byte menos significativo está no mais baixo endereço de byte) dependendo da arquitetura. A Arquitetura/z da IBM é Big Endian. Os campos assinalados podem ser sign e magnitude, complemento de 1 ou complemento de 2 dependendo da arquitetura. Um número complemento de 2 é vantajoso porque a ALU não precisa projetar uma capacidade de subtração, uma vez que tanto um valor negativo quando um valor positivo no complemento de 2 necessitam somente adição dentro da ALU. Os números são comumente descritos abreviadamente, onde um campo de 12 bits define um endereço de bloco de 4,096 bytes e é comumente descrito como um bloco 4 Kbyte (kilobyte), por exemplo.
0132. Com referência à FIG. 17B, a informação de instrução de desvio para executar uma instrução de desvio é enviada para uma unidade de desvio 5058 que frequentemente emprega um algoritmo de predição de desvio como uma tabela de histórico de desvio 5082 para predizer o resultado do desvio antes de completar outras operações condicionais. A meta da instrução de desvio atual será buscada e executada de forma especulativa antes de se completar operações condicionais. Quando as operações condicionais estiverem completas, as instruções de desvio executadas especulativamente ou são completadas ou são descartadas com base nas condições da operação condicional e do resultado especulado. Uma instrução de desvio típica pode testar códigos de condições e desviar para um endereço meta; se os códigos da condição atenderem aos requisitos do desvio da instrução de desvio, um endereço meta pode ser calculado com base em vários números incluindo aqueles encontrados nos campos de registro ou num campo imediato ao da instrução, por exemplo. A unidade de desvio 5058 pode empregar uma ALU 5074 com uma pluralidade de circuitos de registros de entrada 5075, 5076, 5077 e um circuito de registro de saída 5080. A unidade de desvio 5058 pode se comunicar com registros gerais 5059, com a unidade de decodificação e envio 5056 ou com outros circuitos 5073, por exemplo.
0133. A execução de um grupo de instruções pode ser interrompido por várias razões, incluindo mudança de contexto iniciado por um sistema operacional, uma exceção ou um erro de programa causando uma mudança de contexto, umainterrupção de sinal de E/S causando uma mudança de contexto ou atividade multiencadeada de uma pluralidade de programas (num ambiente demultiencadeamento), por exemplo. De forma preferencial uma ação de mudança de contexto salva informações de estado sobre um programa em execução e em seguida carrega as informações de estado de outro programa sendo chamado. As informações de estado podem ser salvas em registros de hardware ou na memória, por exemplo. As informações de estado preferencialmente compreendem um contador de programa apontando para a 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. A atividade de mudança de contexto pode ser executada por circuitos de hardware, programas aplicativos, programas de sistema operacional ou código firmware (microcódigo, picocódigo ou código interno licenciado (LIC) sozinhos ou combinados.
0134. Um processador acessa operandos de acordo com métodos de instrução definidos. Uma instrução pode fornecer um operando imediato utilizando o valor de uma parte da instrução, pode fornecer um ou mais campos de registro apontando explicitamente para ou registros de propósito geral ou registros de propósito específico (registros de ponto flutuante, por exemplo). A instrução pode utilizar registros sugeridos identificados por um campo opcode como operandos. A utilização pode utilizar localizações de memória para operandos. Uma localização de memória de um operando pode ser fornecida por um registro, um campo imediato, ou uma combinação de registros e campo imediato, conforme exemplificado pelo recurso de deslocamento longo da Arquitetura/z, em que a instrução define um registro base, um registro índice e um campo imediato (campo de deslocamento) que são adicionados juntos para fornecer o endereço do operando na memória, por exemplo. A localização aqui tipicamente sugere uma localização na memória principal (armazenamento principal) salvo se indicado de outra forma.
0135. Com referência à FIG. 17C, um processador acessa o armazenamento utilizando uma unidade de carga/armazenamento 5060. A unidade de carga/armazenamento 5060 pode realizar uma operação de carga mediante a obtenção do endereço do operando meta na memória 5053 e o carregamento do operando num registro 5059 ou outra localização de memória 5053 na localização do operando meta na memória 5053. A unidade de carga/armazenamento 5060 pode ser especulativa e pode acessar a memória numa sequência fora da ordem em relação à sequência da instrução, entretanto, a unidade de carga/armazenamento deve manter a aparência para os programas de que as instruções foram executadas na ordem. A unidade de carga/armazenamento 5060 pode se comunicar com registros gerais 5059, unidade de decodificação/envio 5056, interface cache/memória 5053 ou outros elementos 5083 e compreende vários circuitos de registro, ALU 5085 e lógica de controle 5090 para calcular endereços de armazenamento e fornecer sequenciamento pipeline (encadeamento de instruções) para manter as operações em ordem. Algumas operações podem estar foram de ordem, mas a unidade de carga/armazenamento fornece a funcionalidade para fazer com que as operações foram de ordem apareçam no programa como se tivessem sido executadas na ordem, conforme é do conhecimento dos especialistas no assunto.
0136. Preferencialmente, os endereços que um programa aplicativo “vê” são em geral designados endereços virtuais. Os endereços virtuais são também às vezes designados “endereços lógicos” e “endereços efetivos”. Esses endereços virtuais são virtuais na medida em que são redirecionados para a localização da memória física por uma ou mais tecnologias de tradução dinâmica de endereço (DAT) incluindo, mas sem restrição, a simples pré-fixação de um endereço virtual com um valor de deslocamento, tradução do endereço virtual por meio de uma ou mais tabelas de tradução que contenham, preferencialmente, pelo menos uma tabela de segmento e uma tabela de página, sozinhas ou em combinação, sendo que a tabela de segmento possui uma entrada apontando para a tabela de página. Na Arquitetura/z, é fornecida uma hierarquia de tradução 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. A execução da tradução do endereço é geralmente aperfeiçoada pela utilização de memória associativa (TLB), que compreende entradas que mapeiam um endereço virtual para uma localização física de memória associada. As entradas são criadas quando a DAT traduz um endereço virtual utilizando as tabelas de tradução. O uso subsequente do endereço virtual pode então utilizar a entrada da TLB rápida em vez dos acessos lentos da tabela de tradução sequencial. O conteúdo da TLB pode ser gerenciado por uma variedade de algoritmos de substituição incluindo Menos Recentemente Usados (LRU).
0137. Quando o processador é de um sistema multiprocessador, cada processador é responsável por manter recursos compartilhados, tais como E/S, caches, TLBs e memória, interligados para coesão. As tecnologias de vasculhamento (“snoop”) serão utilizadas tipicamente na manutenção da coesão do cache. Num ambiente “snoop”, cada linha de cache pode ser marcada como estando em qualquer estado compartilhado, estado exclusivo, estado alterado, estado inválido e similares, a fim de facilitar o compartilhamento.
0138. As unidades E/S 5054 (FIG. 16) fornecem meios ao processador de anexar-se a dispositivos periféricos incluindo fita, disco, impressoras, vídeos, e redes, por exemplo. As unidades E/S são com frequência apresentadas ao programa de computador por drivers de software. Em mainframes, tais como o Sistema z da IBM®, adaptadores de canal e adaptadores de sistema aberto são unidades E/S do mainframe que fornecem as comunicações entre o sistema operacional e os dispositivos periféricos.
0139. Além disso, outros tipos de ambientes computacionais podem se beneficiar de um ou mais aspectos da presente invenção. Como exemplo, o ambiente pode incluir um emulador (e.g., software ou outros mecanismos de emulação), no qual uma arquitetura particular (incluindo, por exemplo, execução de instruções, funções arquitetadas, tais como tradução de endereço e registros arquitetados) ou um subconjunto dela seja emulada (e.g., num sistema de computador nativo com processador e memória). Nesse ambiente, uma ou mais funções de emulação do emulador podem implementar um ou mais aspectos da presente invenção, mesmo que o computador que executa o emulador possua uma arquitetura diferente das capacidades que estão sendo emuladas. Como exemplo, no modo de emulação, a instrução específica ou a operação sendo emulada é decodificada e uma função de emulação apropriada é construída para implementar a instrução individual ou a operação.
0140. Num ambiente de emulação, um computador hospedeiro inclui, por exemplo, memória para armazenar instruções e dados; unidade de busca de instrução para buscar instruções da memória e, opcionalmente, fornecer armazenamento intermediário local para a instrução buscada; unidade de decodificação de instrução para receber as instruções buscadas e determinar o tipo de instruções que foram buscadas; e unidade de execução de instrução para executar as instruções. A execução pode incluir o carregamento de dados num registro a partir da memória; armazenamento de dados de volta à memória a partir de um registro; ou a execução de algum tipo de operação aritmética ou lógica, conforme determinado pela unidade de decodificação. Num exemplo, cada unidade é implementada em software. Por exemplo, as operações sendo realizadas pelas unidades são implementadas como uma ou mais sub-rotinas dentro do software emulador.
0141. Mais particularmente, num mainframe, as instruções de máquina arquitetadas são utilizadas por programadores, em geral atualmente programadores “C”, com frequência por meio de um aplicativo compilador. Essas instruções armazenadas na mídia de armazenamento podem ser executadas nativamente num Servidor Arquitetura/z da IBM®, ou alternativamente em máquinas executando outras arquiteturas. Elas podem ser emuladas em servidores mainframe IBM® existentes e futuros e em outras máquinas da IBM® (e.g., servidores Power Systems e Servidores System x®. Elas podem ser executadas em máquinas que rodam Linux numa vasta gama de máquinas que utilizam hardware fabricado pela IBM®, Intel®, AMD™ e outros. Além da execução em hardware na Arquitetura/z, o Linux pode ser usado bem como máquinas que utilizem emulação por Hercules, UMX ou FSI (Fundamental Software, Inc.), nas quais a execução em geral é em modo emulação. No módulo emulação, o software de emulação é executado por um processador nativo para emular a arquitetura de um processador emulado.
0142. O processador nativo tipicamente executa software de emulação que compreende ou firmware ou um sistema operacional nativo para executar a emulação do processador emulado. O software de emulação é responsável por buscar e executar instruções da arquitetura do processador emulado. O software de emulação mantém um contador de programa emulado para rastrear os limites da instrução. O software de emulação pode buscar uma ou mais instruções da máquina emulada de cada vez e convertê-las a um grupo correspondente de instruções de máquina nativa para execução pelo processador nativo. As instruções convertidas podem ser capturadas de forma a ser obtida uma conversão mais rápida. Apesar disso, o software de emulação deve manter as regras de arquitetura da arquitetura do processador emulado de forma a assegurar a correta operação dos sistemas operacionais e aplicativos desenvolvidos para o processador emulado. Além disso, o software de emulação deve fornecer recursos identificados pela arquitetura do processador emulado incluindo, sem restrição a, registros de controle, registros de propósito geral, registros de ponto de flutuação, função de tradução dinâmica de endereço incluindo tabelas de segmentos e tabelas de páginas, por exemplo, mecanismos de interrupção, mecanismos de mudança de contexto, relógios TOD (hora do dia) e interfaces arquitetadas a subsistemas de E/S de forma que um sistema operacional ou um programa aplicativo projetados para serem executados no processador emulado, possam ser executados no processador nativo que possua o software de emulação.
0143. Decodifica-se uma instrução específica emulada e é designada uma sub- rotina para executar a função da instrução individual. É implementada uma função de software de emulação que emula a função de um processador emulado, por exemplo, numa sub-rotina “C” ou driver, ou algum outro método para fornecer um driver para o hardware específico como os especialistas poderão depreender da descrição da concretização preferencial. Várias patentes de emulação de software e hardware incluindo, sem restrição a Carta Patente U.S. N° 5.551.013, intitulada “Multiprocessor for Hardware Emulation” (Multiprocessador para emulação de hardware), por Beausoleil et al.; e Carta Patente U.S. N° 6.009.261, intitulada “Proprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor” (Pré-processamento de rotinas meta armazenadas para emulação de instruções incompatíveis num processador meta), por Scalzi et al; e Carta Patente U.S. N° 5.574.873, intitulada “Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions” (Decodificação de instrução convidada para acesso direto a rotinas de emulação que emulam instruções convidadas), by Davidian et al; e Carta Patente U.S. N° 6.308.255, intitulada “Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System” (Barramento e conjunto de circuitos integrados de multiprocessamento simétrico utilizados para suporte de coprocessador permitindo a execução de código não nativo em um sistema), por Gorishek et al; e Carta Patente U.S, N° 6.463.582, intitulada “Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method” (Otimização dinâmica de tradutor de código de objeto para emulação de arquitetura e otimização dinâmica do método de tradução de código de objeto), por Lethin et al; e Carta Patente U.S. N° 5.790.828, intitulada “Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions” (Método para emulação de instruções convidadas em computador hospedeiro através da recompilação dinâmica das instruções hospedeiras), por Eric Traut, cada uma das quais é aqui incorporada por referência em sua totalidade; e muitas outras, ilustram uma variedade de formas conhecidas para se obter a emulação do formato de instrução arquitetada para uma máquina diferente para uma máquina meta, disponíveis para os especialistas.
0144. Na FIG. 18, é fornecido um exemplo de sistema de computador hospedeiro emulado 5092 que emula um sistema de computador hospedeiro 5000’ de uma arquitetura hospedeira. No sistema de computador hospedeiro emulado 5092, o processador hospedeiro (CPU) 5091 é um processador hospedeiro emulado (ou processador hospedeiro virtual) e compreende um processador de emulação 5093 que possui um conjunto de instruções de uma arquitetura nativa diferente daquela do processador 5091 do computador hospedeiro 5000’. O sistema do computador hospedeiro emulado 5092 possui memória 5094 acessível ao processador de emulação 5093. Na concretização exemplificada, a memória 5094 está particionada numa parte da memória 5096 do computador hospedeiro e numa parte de rotinas de emulação 5097. A memória do computador hospedeiro 5096 está disponível para programas do computador hospedeiro emulado 5092 de acordo com a arquitetura do computador hospedeiro. O processador de emulação 5093 executa instruções nativas de um conjunto de instruções arquitetadas de uma arquitetura diferente daquela do processador emulado 5091, sendo as instruções nativas obtidas da memória de rotinas de emulação 5097, e pode acessar uma instrução hospedeira para execução de um programa na memória do computador hospedeiro 5096 empregando uma ou mais instruções obtidas numa sequência & rotina de acesso/decodificação que pode decodificar a(s) instrução(es) hospedeira(s) para determinar uma rotina de execução de instrução nativa para emulação da função da instrução hospedeira acessada. Outros recursos que são definidas para a arquitetura do sistema do computador hospedeiro 5000’ podem ser emulados por rotinas arquitetadas de recursos, incluindo registros de propósito geral, registros de controle, tradução dinâmica de endereço e suporte de sistema de E/S e cache processador, por exemplo. As rotinas de emulação podem também se beneficiar de funções disponíveis no processador de emulação 5093 (tais como registros gerais e tradução dinâmica de endereços virtuais) para aperfeiçoar o desempenho das rotinas de emulação. Hardware especiais e mecanismos off-load podem também ser fornecidos para auxiliar o processador 5093 na emulação da função do computador hospedeiro 5000’.
0145. A terminologia aqui utilizada destina-se apenas a descrever concretizações específicas e não pretende ser limitadora da invenção. Conforme utilizado aqui, as formas singulares “um”, “uma” e “o/a” e incluem também as formas plurais, salvo se o contexto indicar claramente outra forma. Fica entendido ainda que os termos “compreende” e/ou “compreendendo”, quando utilizados neste especificação, determinam a presença de atributos estabelecidos, inteiros, passos, operações, elementos, e/ou componentes, mas não excluem a presença ou adição de um ou mais atributos, inteiros, passos, operações, elementos, componentes e/ou grupos diferentes daqueles.
0146. As estruturas, materiais, atos correspondentes e equivalentes de todos os meios e passos mais os elementos de função nas reivindicações abaixo, se houver, pretendem incluir qualquer estrutura, material ou ato para a realização da função em combinação com outros elementos alegados conforme especificamente reivindicados. A descrição de um ou mais aspectos da presente invenção foram apresentados para fins de ilustração e descrição, mas não pretendem ser exaustivos ou limitadores da invenção na forma divulgada. Muitas modificações e variações ficarão claras àqueles especialistas na matéria sem partir do escopo e do espírito da invenção. A concretização foi escolhida e descrita de forma a explicar melhor os princípios da invenção e sua aplicação prática, e permitir que outros especialistas compreendam a invenção para várias concretizações com várias modificações conforme seja adequado ao uso particular contemplado.Capítulo 23. Instruções de Cadeia VetorialRecurso de Cadeia Vetorial
Instruções
0147. Salvo especificado de outra forma, todos os operandos são operandos de registro vetorial. O “V” na sintaxe assembler designa um operando vetorial.
Figure img0001
VECTOR FIND ANY EQUAL (Vetor encontra qualquer igual)
Figure img0002
0148. Começando da esquerda para a direita, qualquer elemento inteiro binário não sinalizado do segundo operando é comparado para igualdade com cada elemento inteiro binário não sinalizado do terceiro operando e opcionalmente zero caso o sinal Busca Zero estiver estabelecida no campo M5.
0149. Se o flag Tipo de Resultado (RT) no campo M5 for zero, então para cada elemento no segundo operando que combinar com qualquer elemento no terceiro operando, ou opcionalmente zero, as posições do bit do elemento correspondente no primeiro operando são registrados para um, de outra maneira são registrados para zero. Se o flag Tipo de Resultado (RT) no campo M5 for um, então o índice de byte do elemento mais à esquerda no segundo operando que combinar com um elemento no terceiro operando ou zero, é armazenado no byte sete do primeiro operando.
0150. Cada instrução possui uma seção de Mnemônico Estendido que descreve os mnemônicos estendidos recomendados e sua correspondente sintaxe assembler da máquina.
0151. Nota de Programação: Para todas as instruções que estabelecerem opcionalmente o código de condição, o desempenho pode se degradar se for registrado o código da condição.
0152. Se o flag Tipo de Resultado (RT) no campo M5 for um e não forem encontrados bytes iguais, ou zero, se o flag de busca zero for estabelecido, um índice igual ao número de bytes no vetor é armazenado no byte sete do primeiro operando.
0153. O campo M5 especifica o controle de tamanho do elemento (ES). O controle ES especifica o tamanho dos elementos nos operandos de registro vetorial. Se for especificado um valor reservado, se reconhece uma exceção de especificação.0 - Byte1 - Meia palavra2 - Palavra3-15 - Reservado
0154. O campo M5 possui o seguinte formato:
Figure img0003
0155. Os bits do campo M5 são definidos conforme segue:Tipo de Resultado (RT): Se zero, cada elemento resultante é umamáscara de toda a faixa de comparações naquele elemento. Se um, é armazenado um índice de byte no byte sete do primeiro operando e são armazenados zeros em todos os outros elementos.• Busca Zero (ZS): Se um, cada elemento do segundo operando também é comparado a zero.Registrador de Códigos de Condição (CC): Se zero, o código decondição não é registrado e permanece inalterado. Se um, o código de condição é registrado conforme especificado na seção seguinte.
Condições Especiais
0156. É reconhecida uma exceção de especificação e nenhuma outra ação é tomada se ocorrer qualquer dos seguintes:1. O campo M4 contém um valor de 3-15.2. Bit 0 do campo M5 não são zero.Código de Condição Resultante:
0157. Se o flag CC for zero, o código permanece inalterado.
0158. Se o flag CC for um, o código é registrado como segue:0 Se o bit ZS estiver registrado, não existem combinações num elemento mais baixo do que zero no segundo operando.1 Alguns elementos do segundo operando combina com pelo menos um elemento no terceiro operando.2 Todos os elementos do segundo operando combinaram com pelo menos um elemento no terceiro operando.3 Nenhum elemento no segundo operando combina com quaisquer elementos no terceiro operando.
Exceções de Programa:
0159. Dados com DXC FE, Registro Vetorial• Operação se o recurso vetor-extensão não estiver instalado• Especificação (valor ES Reservado) Restrição de TransaçãoMnemônicos Estendidos:
Figure img0004
VECTOR FIND ELEMENT EQUAL (Vetor encontra elemento igual)
Figure img0005
0160. Começando da esquerda para a direita, os elementos inteiros binários sem sinal da segundo operando são comparados com os elementos inteiros binários sem sinal do terceiro operando. Se dois elementos forem iguais, o índice de byte do primeiro byte do elemento igual mais à esquerda está colocado no byte sete do primeiro operando. São armazenados zeros nos bytes remanescentes do primeiro operando. Se não for encontrado nenhum byte igual, ou zero, se for registrada uma comparação zero, então um índice igual ao número de bytes no vetor é armazenado no byte sete do primeiro operando. São armazenados zeros nos bytes remanescentes.
0161. Se a Busca Zero (ZS) estiver registrada no campo M5, então cada elemento no segundo operando é também comparado para igualdade com zero. Se for encontrado um elemento zero no segundo operando antes de serem encontrados quaisquer outros elementos iguais nos segundo e terceiro operandos, o índice de byte do primeiro byte do elemento zero encontrado é armazenado no byte sete do primeiro operando e são armazenados zeros em todas as outras localizações de byte. Se o flag do Registro de Código de Condição (CC) for um, então o código de condição é estabelecido zero.
0162. O campo M4 especifica o controle do tamanho do elemento (ES). O controle ES especifica o tamanho dos elementos dos operandos de registro vetorial. Se for especificado um valor reservado, é reconhecida uma exceção de especificação.0 - Byte1 - Meia Palavra2 - Palavra3-15 - Reservado
0163. O Campo M5 possui o seguinte formato:
Figure img0006
0164. Os bits do campo M5 são definidos como segue:• Reservado: Bits 0-1 e devem ser zero. De outra forma, éreconhecida uma exceção de especificação.• Busca Zero (ZS): Se um, cada elemento do segundo operando é também comparado a zero.• Registro de Código de Condição (CC): Se zero, o código de condição permanece inalterado. Se um, o código de condição é registrado conforme especificado na seção seguinte.
Condições Especiais
0165. É reconhecida uma exceção de especificação e nenhuma outra ação é tomada se ocorrer qualquer dos seguintes:1. O campo M4 contém um valor de 3-15.2. Os bits 0-1 do campo M5 não são zero.
Código de Condição Resultante:
0166. Se o bit 3 do campo M5 for determinado um, o código é registrado como segue: 0 Se o bit de comparação zero for registrado, a comparação detectou um elemento zero no segundo operando num elemento com um índice menor do que quaisquer comparações iguais.1 A comparação detectou uma combinação entre o segundo e o terceiro operandos em algum elemento. Se o bit de comparação zero for registrado, esta combinação ocorreu num elemento com um índice menor ou igual ao elemento comparativo zero.2 -3 Nenhum elemento comparado igual
0167. Se o bit 3 do campo M5 for zero, o código permanece inalterado.Exceções de Programa:• Dados com DXC FE, Registro Vetor• Operação se o recurso vetor-extensão não estiver instalado• Especificação (valor ES Reservado)• Restrição de Transação Mnemônicos Estendidos:
Figure img0007
Notas de programação:1. Um índice de byte é sempre armazenado no primeiro operando para tamanho de qualquer elemento. Por exemplo, se o tamanho do elemento foi determinado meia palavra e a 2a meia palavra indexada comparou como igual, então um índice de byte de 4 será armazenado.2. O terceiro operando não deve conter elementos com um valor de zero. Se o terceiro operando de fato contém um zero e combina com um elemento zero no segundo operando antes de quaisquer outras comparações iguais, o código de condição é registrado sem considerar a definição do bit de comparação zero. VETOR ENCONTRA ELEMENTO NÃO IGUAL (Vector Find Element not Equal)
Figure img0008
0168. Começando da esquerda para a direita, os elementos inteiros binários sem sinal do segundo operando são comparados com os elementos inteiros binários sem sinal do terceiro operando correspondentes. Se dois elementos não forem iguais, o índice de bytes do elemento não igual mais à esquerda é colocado no byte sete do primeiro operando e são armazenados zeros para todos os outros bytes. Se o bit do Registro do Código de Condição (CC) no campo M5 for determinado como um, o código de condição é registrado para indicar qual operando era o maior. Se todos os elementos forem iguais, então o índice abyte igual ao tamanho do vetor é colocado no byte sete do primeiro operando e zeros são colocados em todas as outras localizações de byte. Se o bit CC for um, é registrado o código de condição três.
0169. Se o bit de busca zero (ZS) for registrado no campo M5, cada elemento no segundo operando é também comparado para igualdade a zero. Se um elemento zero for encontrado no segundo operando antes que qualquer elemento do segundo operando seja encontrado como desigual, o índice de byte do primeiro byte do elemento encontrado como zero é armazenado no byte sete do primeiro operando. São armazenados zeros em todos os outros bytes e o código de condição 0 é registrado.
0170. O campo M4 especifica o controle do tamanho do elemento (ES). O controle ES especifica o tamanho dos elementos dos operandos de registro vetorial. Se for especificado um valor reservado, é reconhecida uma exceção de especificação.0 - Byte 1 - Meia Palavra2 - Palavra3-15 - Reservado
0171. O Campo M5 possui o seguinte formato:
Figure img0009
0172. Os bits do campo M5 são definidos como segue:• Busca Zero (ZS): Se um, cada elemento do segundo operando é também comparado a zero.• Registro de Código de Condição (CC): Se zero, o código de condição não é registrado e permanece inalterado. Se um, o código de condição é registrado conforme especificado na seção seguinte.
Condições Especiais
0173. É reconhecida uma exceção de especificação e nenhuma outra ação é tomada se ocorrer qualquer dos seguintes:3. O campo M4 contém um valor de 3-15.4. Os bits 0-1 do campo M5 não são zero.
Código de Condição Resultante:
0174. Se o bit 3 do campo M5 for determinado um, o código é registrado como segue:0 Se o zero, é registrado o bit de comparação, a comparação detectou umelemento zero em ambos os operandos num elemento de indexação mais baixo do que qualquer desigual se compara1 Um elemento não compatível foi detectado e o elemento em VR2 é menor do que o elemento em VR32 Um elemento não compatível foi detectado e o elemento em VR2 é maior do que o elemento em VR33 Todos os elementos se compararam como iguais, e se foi registrado o bit de comparação zero, nenhum elemento zero foi encontrado do segundo operando.
0175. Se o bit 3 do campo M5 for zero, o código permanece inalterado.Exceções de Programa:• Dados com DXC FE, Registro Vetor• Operação se o recurso vetor-extensão não estiver instalado• Especificação (valor ES Reservado)• Restrição de Transação Mnemônicos Estendidos:
Figure img0010
COMPARAÇÃO DE FAIXA DE CADEIA VETORIAL (Vector String RangeCompare)
Figure img0011
0176. Começando da esquerda para a direita, os elementos inteiros binários sem sinal no segundo operando são comparados a faixas de valores definidas por pares de elementos pares-ímpares nos terceiro e quarto operandos. Combinados com os valores de controle do quarto operando definem a faixa de comparações a serem executadas. Se um elemento combina com qualquer das faixas especificadas pelos terceiro e quarto operandos, é considerado como uma compatibilidade.
0177. Se o flag Tipo de Resultado (RT) no campo M6 for zero, as posições do bit do elemento no primeiro operando correspondente ao elemento que está sendo comparado no segundo operando são determinadas um se o elemento combina com quaisquer das faixas, caso contrário, são determinados como zero.
0178. Se o flag Tipo de Resultado (RT) no campo M6 for determinado para um, o índice de byte do primeiro elemento do segundo operando que combina com qualquer das faixas especificadas pelo terceiro e quarto operandos ou uma comparação zero, se o flag ZS for determinado para um, é colocado no byte sete do primeiro operando e são armazenados zeros nos bytes remanescentes. Se nenhum elemento combinar, então um índice igual ao número de bytes num vetor é colocado no byte 7 do primeiro operando e são armazenados zeros nos bytes remanescentes.
0179. O flag Busca Zero (ZS) no campo M6, se determinado um, adicionará uma comparação a zero dos elementos do segundo operando para as faixas fornecidas pelo terceiro e quarto operandos. Se uma comparação zero num elemento indexado mais baixo do que qualquer outra comparação verdadeira, então o código de condição é registrado zero.
0180. Os operandos contém elementos do tamanho especificado pelo controle de Tamanho do Elemento no campo M5.
0181. Os elementos do quarto operando possuem o seguinte formato:Se ES igual a 0:
Figure img0012
Se ES igual a 1:
Figure img0013
Se ES igual a 2:
Figure img0014
0182. Os bits nos elementos do quarto operando são definidos conforme segue:• Igual (EQ): Quando for feita uma comparação para igualdade• Maior do que (GT): Quando for realizada uma comparação maiordo que• Menor do que (LT): Quando for realizada uma comparaçãomenor do que• Todos os outros bits são reservados e devem ser zero paraassegurar compatibilidade futura.
0183. Os bits de controle podem ser utilizados em qualquer combinação. Se nenhum dos bits for registrado, a comparação sempre produzirá um falso resultado. Se todos os bits forem registrados, a comparação sempre produzirá um resultado verdadeiro.
0184. O campo M5 especifica o controle do tamanho do elemento (ES). O controle ES especifica o tamanho dos elementos dos operandos de registro vetorial. Se for especificado um valor reservado, é reconhecida uma exceção de especificação.0 - Byte1 - Meia Palavra2 - Palavra3-15 - Reservado
0185. O Campo M6 possui o seguinte formato:
Figure img0015
Inverter Resultado (IN): Se zero, a comparação prossegue como par de valores no vetor de controle. Se um, o resultado dos pares das comparações nas faixas é invertido.Tipo de Resultado (RT): Se zero, cada elemento resultante éuma máscara de todas as faixas de comparação naquele elemento, Se um, é armazenado um índice no byte sete do primeiro operando. São armazenados zeros nos bytes remanescentes.• Busca Zero (ZS): Se um, cada elemento do segundo operando é também comparado a zero. • Registro de Código de Condição (CC): Se zero, o código de condição não é determinado e permanece inalterado. Se um, o código de condição é especificado na seção seguinte.
Condições Especiais
0186. É reconhecida uma exceção de especificação e nenhuma outra ação é tomada se ocorrer qualquer dos seguintes:1. O campo M4 contém um valor de 3-15.Código de Condição Resultante:0 Se ZS=1 e for encontrado um zero num elemento indexado mais baixodo que qualquer comparação1 Comparação encontrada2 -3 Nenhuma comparação encontradaExceções de Programa:• Dados com DXC FE, Registro Vetor• Operação se o recurso vetor-extensão não estiver instalado• Especificação (valor ES Reservado)• Restrição de Transação Mnemônicos Estendidos:
Figure img0016
Figura 23-1ES=1,ZS=0 VR1(a) Resultados com RT=0VR1(b) Resultados com RT=1CONTADOR DE CARGA PARA LIMITE DE BLOCO (Load Count to Block Boundary)
Figure img0017
0187. Um inteiro binário sem sinal de 32 bits contendo o número de bytes possível para carregar a partir da localização do segundo operando sem ultrapassar um limite de bloco especificado, fixado em dezesseis é colocado no primeiro operando.
0188. O deslocamento é tratado como um inteiro sem sinal de 12 bits.
0189. O endereço do segundo operando não é utilizado para endereçar dados.
0190. O campo M3 especifica um código que é utilizado para sinalizar para a CPU quanto ao tamanho do limite do bloco para computar o número de possíveis bytes carregados. Se um valor reservado for especificado então é reconhecida uma exceção de especificação.Limite de Código0 64 Bytes1 128 Bytes 2 256 Bytes3 512 Bytes4 1 K-Byte5 2 K-Bytes6 4 K-Bytes7-15 ReservadoCódigo de Condição Resultante:7 O operando um é dezesseis1 -2 -3 O operando um é menor do que dezesseisExceções de Programa:• Operação se o recurso vetor-extensão não estiver instalado• EspecificaçãoNota de Programação: É esperado que o CONTADOR DE CARGA PARA LIMITE DE BLOCO seja utilizado em conjunto com CARGA DE VETOR PARA LIMITE DE BLOCO para determinar o número de bytes que foi carregado CARGA DE VETOR GR DO ELEMENTO VR
Figure img0018
0191. O elemento do terceiro operando de tamanho especificado pelo valor ES no campo M4 e indexado pelo endereço do segundo operando é colocado na localização do primeiro operando. O terceiro operando é um registro vetorial. O primeiro operando é um registro geral. Se o índice especificado pelo endereço do segundo operando for maior do que o elemento numerado mais alto no terceiro operando do tamanho especificado do elemento, os dados no primeiro operando são imprevisíveis. Se o elemento de registro vetorial for menor do que uma palavra dupla, o elemento está alinhado à direita no registro geral de 64 bits e os bits remanescentes são preenchidos com zeros.
0192. O endereço do segundo operando não é utilizado para endereçar dados, em vez disso, os 12 bits mais à direita do endereço são utilizados para especificar o índice de um elemento dentro do segundo operando.
0193. O campo M5 especifica o controle do tamanho do elemento (ES). O controle ES especifica o tamanho dos elementos dos operandos de registro vetorial. Se for especificado um valor reservado, é reconhecida uma exceção de especificação.0 - Byte1 - Meia Palavra2 - Palavra3 - Palavra Dupla 4-15 - Reservado inalteradoCódigo de Condição Resultante: O código está inalteradoExceções de Programa:Dados com DXC FE, Registro VetorOperação se o recurso vetor-extensão não estiver instaladoEspecificação (valor ES Reservado)Restrição de TransaçãoMnemônicos Estendidos:
Figure img0019
CARGA DE VETOR PARA LIMITE DE BLOCO (Vector Load to BlockBoundary)
Figure img0020
0194. O primeiro operando é carregado começando no elemento de byte indexado a zero com bytes do segundo operando. Se uma condição de limite for encontrada, o restante do primeiro operando será imprevisível. As exceções de acesso não são reconhecidas nos bytes não carregados. O deslocamento para VLBB é tratado como um inteiro sem sinal de 12 bits. O campo M3 especifica um código que é utilizado para sinalizar para a CPU sobre o tamanho do limite do bloco a ser carregado. Se for especificado um valor reservado, é reconhecida uma exceção de especificação.Limite de Código0 64 Bytes1 128 Bytes2 256 Bytes3 512 Bytes4 1K-Byte5 2K-Bytes6 4K-Bytes7-15 ReservadosCódigo de Condição Resultante: O código permanece inalterado.Exceções de Programa:• Acesso (busca, operando 2)• Dados com DXC FE, Registro Vetor• Operação se o recurso vetor-extensão não for instalado Especificação (Código de Limite de Bloco Reservado)Restrição de TransaçãoNotas de Programação:1. Em certas circunstâncias os dados podem ser carregados depois do limite de bloco. Entretanto, isso somente ocorrerá se não houver exceções de acesso naqueles dados.ARMAZENAMENTO DE VETOR (Vector Store)
Figure img0021
0195. O valor do bit de 128 no primeiro operando é armazenado na localização de armazenamento especificada pelo segundo operando. O deslocamento para VST é tratado como um inteiro sem sinal de 12 bits.Código de Condição Resultante: O código permanece inalterado.Exceções de Programa:• Acesso (armazenamento, operando 2)• Dados com DXC FE, Registro Vetor• Operação se o recurso vetor-extensão não for instalado• Especificação (Código de Limite de Bloco Reservado) • Restrição de TransaçãoARMAZENAMENTO DE VETOR COM EXTENSÃO (Vector Store with Length)
Figure img0022
0196. Começando da esquerda para a direita, os bytes do primeiro operando são armazenados na localização do segundo operando. O registro geral especificado terceiro operando contém um inteiro sem sinal de 32 bits contendo um valor que representa o mais alto byte indexado para armazenamento. Se o terceiro operando contiver um valor maior ou igual ao índice de byte mais alto do vetor, todos os bytes do primeiro operando são armazenados.
0197. Exceções de acesso somente são reconhecidos nos bytes armazenados. O deslocamento para ARMAZENAMENTO DE VETOR COM EXTENSÃO é tratado como um inteiro sem sinal de 12 bits.Código de Condição Resultante: O código de condição permanece inalterado.Exceções de Programa:• Acesso (armazenamento, operando 2)• Dados com DXC FE, Registro Vetor• Operação se o recurso vetor-extensão não for instalado• Especificação (Código de Limite de Bloco Reservado) • Restrição de Transação
Descrição RXB
0198. Todas as instruções vetoriais possuem um campo em bits 36-40 da instrução etiquetada como RXB. Este campo contém os bits mais significativos para todos os registros vetoriais designados operandos. Bits para designações de registro não especificados pela instrução são reservados e devem ser determinados como zero; de outra forma, o programa não pode operar de forma compatível no futuro. O bit mais significativo é concatenado à esquerda da designação de registro de quatro bits para criar a designação de registro vetorial de cinco bits.
0199. Os bits são definidos como segue:0 Bit mais significativo para a designação de registro vetorial em bits 8-11 da instrução.1 Bit mais significativo para a designação de registro vetorial em bits 12-15 da instrução.2 Bit mais significativo para a designação de registro vetorial em bits 16-19 da instrução.3 Bit mais significativo para a designação de registro vetorial em bits 32-35 da instrução.Controle de Ativação de Vetor
0200. Os registros e instruções vetoriais somente podem ser utilizadosse tanto o controle de ativação do vetor (bit 46) e o registro-controle-AFP (bit 45) no registro de controle zero forem configurados para um. Se o recurso de vetor estiver instalado e uma instrução vetorial for executada sem a ativação dos conjuntos de bits, uma exceção de dados com DXC FE hex será reconhecida. Se o recurso de vetor não for instalado, será reconhecida uma exceção de operação.

Claims (13)

1. MÉTODO PARA TRANSFORMAR ESPECIFICADORES DE INSTRUÇÃO DE UM AMBIENTE COMPUTACIONAL caracterizado por:obtenção, por um processador, a partir de uma primeira instrução definida para uma primeira arquitetura de computador, de um especificador não contíguo, tal especificador não contíguo possuindo uma primeira parte e uma segunda parte, em que a obtenção compreende a obtenção da primeira parte de um primeiro campo da instrução e a segunda parte de um segundo campo da instrução, sendo o primeiro campo separado do segundo campo;Geração de um especificador contíguo utilizando a primeira parte e a segunda parte, a geração utilizando uma ou mais regras baseadas no opcode da primeira instrução; eUtilização do especificador contíguo para indicar um recurso a ser utilizado na execução de uma segunda instrução, sendo a segunda instrução definida para uma segunda arquitetura de computador diferente da primeira arquitetura de computador e emulando uma função da primeira instrução.
2. MÉTODO PARA TRANSFORMAR ESPECIFICADORES DE INSTRUÇÃO DE UM AMBIENTE COMPUTACIONAL, de acordo com a reivindicação 1, caracterizado por:o processador incluir um emulador, a primeira parte incluir um primeiro um ou mais bits, a segunda parte incluir um segundo um ou mais bits, e a geração compreender a concatenação do segundo um ou mais bits com o primeiro um ou mais bits para formar o especificador contíguo, em que o segundo um ou mais bits são os bits mais significativos do especificador contíguo.
3. MÉTODO PARA TRANSFORMAR ESPECIFICADORES DE INSTRUÇÃO DE UM AMBIENTE COMPUTACIONAL, de acordo com a reivindicação 2, caracterizado por:o primeiro campo ter uma posição de operando associada a ele, e o segundo ou mais bits serem um subconjunto de uma pluralidade de bits do segundo campo, e a obtenção compreender a seleção do segundo um ou mais bits da pluralidade de bits do segundo campo com base na posição do operando do primeiro campo.
4. MÉTODO PARA TRANSFORMAR ESPECIFICADORES DE INSTRUÇÃO DE UM AMBIENTE COMPUTACIONAL, de acordo com a reivindicação 3, caracterizado por:a posição do operando do primeiro campo ser como um primeiro operando, e o segundo ou mais bits serem selecionados a partir de uma localização mais à esquerda do segundo campo.
5. MÉTODO PARA TRANSFORMAR ESPECIFICADORES DE INSTRUÇÃO DE UM AMBIENTE COMPUTACIONAL, de acordo com a reivindicação 1, caracterizado por:o primeiro campo consistir de um campo de registro, o segundo campo consistir de um campo de extensão, a primeira parte consistir da pluralidade de bits do campo de registro, a segunda parte consistir de um bit do campo de extensão em local da instrução correspondente ao campo de registro, e a geração consistir na concatenação do bit do campo de extensão com os bits do campo de registro para fornecer o especificador contíguo.
6. MÉTODO PARA TRANSFORMAR ESPECIFICADORES DE INSTRUÇÃO DE UM AMBIENTE COMPUTACIONAL, de acordo com a reivindicação 1, caracterizado por: o uso do especificador contíguo para indicar um recurso incluir o uso do especificador contíguo para mapear para um registro a ser usado pela segunda instrução.
7. MÉTODO PARA TRANSFORMAR ESPECIFICADORES DE INSTRUÇÃO DE UM AMBIENTE COMPUTACIONAL, de acordo com a reivindicação 6, caracterizado por:o registro mapeado pelo especificador contíguo ter o mesmo valor que o especificador contíguo.
8. MÉTODO PARA TRANSFORMAR ESPECIFICADORES DE INSTRUÇÃO DE UM AMBIENTE COMPUTACIONAL, de acordo com a reivindicação 6, caracterizado por:o registro mapeado pelo especificador contíguo ter um valor diferente do especificador contíguo.
9. MÉTODO PARA TRANSFORMAR ESPECIFICADORES DE INSTRUÇÃO DE UM AMBIENTE COMPUTACIONAL, de acordo com a reivindicação 1, caracterizado por:a primeira arquitetura de computador incluir um conjunto de instruções composto de primeiras instruções com campos de registro para acessar uma subseção de um espaço de registro da primeira arquitetura de computador, e de segundas instruções com campos de registro não contíguos para acessar a subseção e as subseções restantes do espaço de registro, sendo as primeiras instruções impedidas de acessar as subseções restantes.
10. MÉTODO PARA TRANSFORMAR ESPECIFICADORES DE INSTRUÇÃO DE UM AMBIENTE COMPUTACIONAL, de acordo com a reivindicação 1, caracterizado por:o primeiro campo consistir de um campo de registro, o segundo campo consistir de um campo de extensão, a primeira parte consistir de uma pluralidade de bits do campo de registro, a segunda parte consistir de um bit do campo de extensão num local da instrução correspondente ao campo de registro, e a geração compreender a concatenação do bit do campo de extensão com os bits do campo de registro para fornecer o especificador contíguo, e compreendendo também as etapas deobtenção, pelo processador, da primeira instrução, outro especificador não contíguo, este tendo outra primeira parte e outra segunda parte, onde a obtenção compreende a obtenção da outra primeira parte de outro primeiro campo da instrução e outra segunda parte de outro bit do campo de extensão, sendo o outro primeiro campo separado do primeiro campo e do campo de extensão;geração de outro especificador contíguo utilizando a outra primeira parte e o outro bit, tal geração utilizando uma ou mais regras baseadas no opcode da primeira instrução; e da primeira instrução; e da primeira instrução; eutilização de outro especificador contíguo para indicar um recurso a ser utilizado na execução da segunda instrução da primeira instrução.
11. MÉTODO PARA TRANSFORMAR ESPECIFICADORES DE INSTRUÇÃO DE UM AMBIENTE COMPUTACIONAL, de acordo com a reivindicação 1, caracterizado por:a primeira arquitetura de computador compreender uma arquitetura de conjunto de instruções e a primeira instrução ser definida para a arquitetura do primeiro conjunto de instruções, a segunda arquitetura de computador compreender uma arquitetura de conjunto de instruções e a segunda arquitetura de conjunto de instruções ser definida para a arquitetura do segundo conjunto de instruções, e a arquitetura do segundo conjunto de instruções ser uma arquitetura de conjunto de instruções diferente da arquitetura do primeiro conjunto de instruções.
12. SUPORTE FÍSICO PARA TRANSFORMAR ESPECIFICADORES DE INSTRUÇÃO DE UM AMBIENTE COMPUTACIONAL caracterizado por: conter gravado os métodos pleiteados respectivamente nas reivindicações 2, 3, 4, 5, 6, 7, 8, 9, 10 e 11.
13. EQUIPAMENTO PARA TRANSFORMAR ESPECIFICADORES DE INSTRUÇÃO DE UM AMBIENTE COMPUTACIONAL caracterizado por compreender:Memória, eProcessador em comunicação com a memória, em que o equipamento está configurado para realizar os métodos pleiteados respectivamente nas reivindicações 2, 3, 4, 5, 6, 7, 8, 9, 10 e 11.
BR112014022638-5A 2012-03-15 2012-11-15 Método, suporte físico e equipamento para transformar especificadores de instrução de um ambiente computacional BR112014022638B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/421,657 2012-03-15
US13/421,657 US9280347B2 (en) 2012-03-15 2012-03-15 Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
PCT/IB2012/056436 WO2013136144A1 (en) 2012-03-15 2012-11-15 Transforming non-contiguous instruction specifiers to contiguous instruction specifiers

Publications (3)

Publication Number Publication Date
BR112014022638A2 BR112014022638A2 (pt) 2017-06-20
BR112014022638A8 BR112014022638A8 (pt) 2021-12-14
BR112014022638B1 true BR112014022638B1 (pt) 2022-01-04

Family

ID=49158813

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014022638-5A BR112014022638B1 (pt) 2012-03-15 2012-11-15 Método, suporte físico e equipamento para transformar especificadores de instrução de um ambiente computacional

Country Status (24)

Country Link
US (2) US9280347B2 (pt)
EP (1) EP2769301B1 (pt)
JP (1) JP6108362B2 (pt)
KR (1) KR101643065B1 (pt)
CN (1) CN104169877B (pt)
AU (1) AU2012373735B2 (pt)
BR (1) BR112014022638B1 (pt)
CA (1) CA2867115C (pt)
DK (1) DK2769301T3 (pt)
ES (1) ES2779033T3 (pt)
HK (1) HK1201354A1 (pt)
HR (1) HRP20200393T1 (pt)
HU (1) HUE048409T2 (pt)
IL (1) IL232817A (pt)
LT (1) LT2769301T (pt)
MX (1) MX340050B (pt)
PL (1) PL2769301T3 (pt)
PT (1) PT2769301T (pt)
RU (1) RU2568241C2 (pt)
SG (1) SG11201404825SA (pt)
SI (1) SI2769301T1 (pt)
TW (1) TWI533207B (pt)
WO (1) WO2013136144A1 (pt)
ZA (1) ZA201406612B (pt)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012103373A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
WO2012103209A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
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
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
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
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
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
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
CN104756078B (zh) * 2012-08-20 2018-07-13 唐纳德·凯文·卡梅伦 处理资源分配的装置和方法
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9513906B2 (en) * 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
EP2972798B1 (en) 2013-03-15 2020-06-17 Intel Corporation Method and apparatus for guest return address stack emulation supporting speculation
US20140281398A1 (en) * 2013-03-16 2014-09-18 William C. Rash Instruction emulation processors, methods, and systems
US9703562B2 (en) 2013-03-16 2017-07-11 Intel Corporation Instruction emulation processors, methods, and systems
US10120681B2 (en) 2014-03-14 2018-11-06 International Business Machines Corporation Compare and delay instructions
US9558032B2 (en) 2014-03-14 2017-01-31 International Business Machines Corporation Conditional instruction end operation
US9454370B2 (en) 2014-03-14 2016-09-27 International Business Machines Corporation Conditional transaction end instruction
US9823939B2 (en) * 2014-07-25 2017-11-21 Intel Corporation System for an instruction set agnostic runtime architecture
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US10353680B2 (en) 2014-07-25 2019-07-16 Intel Corporation System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence
US9792098B2 (en) * 2015-03-25 2017-10-17 International Business Machines Corporation Unaligned instruction relocation
US20170022314A1 (en) 2015-07-24 2017-01-26 Weyerhaeuser Nr Company Grafted crosslinked cellulose
US10055208B2 (en) * 2015-08-09 2018-08-21 Oracle International Corporation Extending a virtual machine instruction set architecture
US10235170B2 (en) * 2016-09-30 2019-03-19 International Business Machines Corporation Decimal load immediate instruction
CN110851345B (zh) * 2019-09-23 2023-04-14 上海辛格林纳新时达电机有限公司 一种系统参数的调用方法及调用装置
US11263131B2 (en) * 2020-04-08 2022-03-01 Alibaba Group Holding Limited System and method for allocating memory space
US11604643B2 (en) 2020-12-29 2023-03-14 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions
US11914997B2 (en) 2020-12-29 2024-02-27 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11669328B2 (en) 2020-12-29 2023-06-06 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for converting instructions
US11803383B2 (en) 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11803381B2 (en) * 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. Instruction simulation device and method thereof
US11625247B2 (en) 2020-12-29 2023-04-11 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions
US11789736B2 (en) 2020-12-29 2023-10-17 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11803387B2 (en) 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62276668A (ja) 1985-07-31 1987-12-01 Nec Corp ベクトルマスク演算制御ユニツト
US5073864A (en) 1987-02-10 1991-12-17 Davin Computer Corporation Parallel string processor and method for a minicomputer
US5222225A (en) 1988-10-07 1993-06-22 International Business Machines Corporation Apparatus for processing character string moves in a data processing system
JPH0831032B2 (ja) 1990-08-29 1996-03-27 三菱電機株式会社 データ処理装置
US5465374A (en) 1993-01-12 1995-11-07 International Business Machines Corporation Processor for processing data string by byte-by-byte
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
CA2162115A1 (en) 1993-06-14 1994-12-22 David V. James Method and apparatus for finding a termination character within a variable-length character string on a processor
JPH0721034A (ja) 1993-06-28 1995-01-24 Fujitsu Ltd 文字列複写処理方法
US5509129A (en) 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US6185629B1 (en) 1994-03-08 2001-02-06 Texas Instruments Incorporated Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
AU696903B2 (en) 1994-09-27 1998-09-24 Jfe Steel Corporation Zinciferous plated steel sheet and method for manufacturing same
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
NZ504304A (en) 1997-11-24 2002-03-01 British Telecomm Information management and retrieval with means for identifying word sub-sets within word groups and outputting these
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
US6041402A (en) * 1998-01-05 2000-03-21 Trw Inc. Direct vectored legacy instruction set emulation
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
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6662288B1 (en) 1998-11-27 2003-12-09 Matsushita Electric Industrial Co., Ltd. Address generating apparatus and motion vector detector
US6192466B1 (en) 1999-01-21 2001-02-20 International Business Machines Corporation Pipeline control for high-frequency pipelined designs
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6189088B1 (en) 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
US6499116B1 (en) 1999-03-31 2002-12-24 International Business Machines Corp. Performance of data stream touch events
US6802056B1 (en) 1999-06-30 2004-10-05 Microsoft Corporation Translation and transformation of heterogeneous programs
US6381691B1 (en) 1999-08-13 2002-04-30 International Business Machines Corporation Method and apparatus for reordering memory operations along multiple execution paths in a processor
US6513109B1 (en) 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6449706B1 (en) 1999-12-22 2002-09-10 Intel Corporation Method and apparatus for accessing unaligned data
JP2001236249A (ja) 2000-02-24 2001-08-31 Nec Corp メモリ管理装置およびメモリ管理方法
US6625724B1 (en) 2000-03-28 2003-09-23 Intel Corporation Method and apparatus to support an expanded register set
US6349361B1 (en) 2000-03-31 2002-02-19 International Business Machines Corporation Methods and apparatus for reordering and renaming memory references in a multiprocessor computer system
US6701424B1 (en) 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
US6408383B1 (en) 2000-05-04 2002-06-18 Sun Microsystems, Inc. Array access boundary check by executing BNDCHK instruction with comparison specifiers
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
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
US20040049657A1 (en) * 2002-09-10 2004-03-11 Kling Ralph M. Extended register space apparatus and methods for processors
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
US7610466B2 (en) 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7904905B2 (en) 2003-11-14 2011-03-08 Stmicroelectronics, Inc. System and method for efficiently executing single program multiple data (SPMD) programs
GB2411973B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
US20060095713A1 (en) 2004-11-03 2006-05-04 Stexar Corporation Clip-and-pack instruction for processor
US7421566B2 (en) 2005-08-12 2008-09-02 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
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
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
CN101755265A (zh) 2007-05-21 2010-06-23 茵科瑞蒂梅尔有限公司 交互式消息编辑系统和方法
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
US7895419B2 (en) 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US7870339B2 (en) 2008-01-11 2011-01-11 International Business Machines Corporation Extract cache attribute facility and instruction therefore
US7877582B2 (en) 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
EP2245529A1 (en) 2008-02-18 2010-11-03 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
DK176835B1 (da) 2008-03-07 2009-11-23 Jala Aps Fremgangsmåde til skanning, medium indeholdende et program til udövelse af fremgangsmåden samt system til udövelse af fremgangsmåden
US8386547B2 (en) 2008-10-31 2013-02-26 Intel Corporation Instruction and logic for performing range detection
JP5500652B2 (ja) 2009-02-02 2014-05-21 日本電気株式会社 並列比較選択演算装置、プロセッサ及び並列比較選択演算方法
JP5471082B2 (ja) 2009-06-30 2014-04-16 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8595471B2 (en) 2010-01-22 2013-11-26 Via Technologies, Inc. Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register
JP2011212043A (ja) 2010-03-31 2011-10-27 Fujifilm Corp 医用画像再生装置および方法並びにプログラム
US20110314263A1 (en) 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand
US8972698B2 (en) 2010-12-22 2015-03-03 Intel Corporation Vector conflict instructions
US9009447B2 (en) 2011-07-18 2015-04-14 Oracle International Corporation Acceleration of string comparisons using vector instructions
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
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
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
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
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary

Also Published As

Publication number Publication date
PT2769301T (pt) 2020-03-26
JP2015514242A (ja) 2015-05-18
KR20140104974A (ko) 2014-08-29
HK1201354A1 (en) 2015-08-28
AU2012373735B2 (en) 2016-06-02
WO2013136144A1 (en) 2013-09-19
EP2769301A4 (en) 2014-11-19
PL2769301T3 (pl) 2020-06-01
BR112014022638A8 (pt) 2021-12-14
CA2867115C (en) 2020-12-08
US20130246768A1 (en) 2013-09-19
LT2769301T (lt) 2020-05-25
MX340050B (es) 2016-06-22
RU2568241C2 (ru) 2015-11-10
US20130246766A1 (en) 2013-09-19
EP2769301B1 (en) 2020-02-19
RU2012148583A (ru) 2014-05-20
EP2769301A1 (en) 2014-08-27
ZA201406612B (en) 2016-05-25
TW201403468A (zh) 2014-01-16
MX2014010948A (es) 2014-10-13
KR101643065B1 (ko) 2016-07-26
JP6108362B2 (ja) 2017-04-05
US9454374B2 (en) 2016-09-27
DK2769301T3 (da) 2020-03-16
CA2867115A1 (en) 2013-09-19
HRP20200393T1 (hr) 2020-06-12
SI2769301T1 (sl) 2020-06-30
TWI533207B (zh) 2016-05-11
IL232817A0 (en) 2014-07-31
HUE048409T2 (hu) 2020-07-28
SG11201404825SA (en) 2014-09-26
AU2012373735A1 (en) 2014-09-11
IL232817A (en) 2017-07-31
ES2779033T3 (es) 2020-08-13
US9280347B2 (en) 2016-03-08
CN104169877B (zh) 2017-10-13
BR112014022638A2 (pt) 2017-06-20
CN104169877A (zh) 2014-11-26

Similar Documents

Publication Publication Date Title
BR112014022638B1 (pt) Método, suporte físico e equipamento para transformar especificadores de instrução de um ambiente computacional
US9959118B2 (en) Instruction to load data up to a dynamically determined memory boundary
US9946542B2 (en) Instruction to load data up to a specified memory boundary indicated by the instruction
US9710267B2 (en) Instruction to compute the distance to a specified memory boundary
CA2867117C (en) Finding the length of a set of character data having a termination character
JP6184426B2 (ja) 終端文字を有する文字データのメモリ位置間でのコピーのための方法、システム、およびコンピュータ・プログラム(終端文字を有する文字データのメモリ位置間でのコピー)
US10228946B2 (en) Reading a register pair by writing a wide register
AU2012373736B2 (en) Instruction to compute the distance to a specified memory boundary

Legal Events

Date Code Title Description
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]
B06A Patent application procedure suspended [chapter 6.1 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.