BR112019006622B1 - Método implementado por computador e sistema de computador para facilitar o processamento dentro de um ambiente computacional - Google Patents

Método implementado por computador e sistema de computador para facilitar o processamento dentro de um ambiente computacional Download PDF

Info

Publication number
BR112019006622B1
BR112019006622B1 BR112019006622-5A BR112019006622A BR112019006622B1 BR 112019006622 B1 BR112019006622 B1 BR 112019006622B1 BR 112019006622 A BR112019006622 A BR 112019006622A BR 112019006622 B1 BR112019006622 B1 BR 112019006622B1
Authority
BR
Brazil
Prior art keywords
instruction
computer
digits
register
quotient
Prior art date
Application number
BR112019006622-5A
Other languages
English (en)
Other versions
BR112019006622A2 (pt
Inventor
Jonathan Bradbury
Reid Copeland
Silvia Melitta Mueller
Eric Schwarz
Steven Carlough
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 BR112019006622A2 publication Critical patent/BR112019006622A2/pt
Publication of BR112019006622B1 publication Critical patent/BR112019006622B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/535Dividing only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/491Computations with decimal numbers radix 12 or 20.
    • G06F7/4915Multiplying; Dividing
    • G06F7/4917Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/003Reformatting, i.e. changing the format of data representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Calculators And Similar Devices (AREA)
  • Complex Calculations (AREA)

Abstract

uma instrução para executar uma operação de deslocamento e divisão é executada. a execução inclui o deslocamento de um valor em uma direção especificada por um valor selecionado para fornecer um dividendo, o valor selecionado sendo definido pelo usuário. o dividendo é dividido por um divisor para obter um quociente. pelo menos um subconjunto do quociente é selecionado como resultado. o resultado deve ser usado no processamento dentro do ambiente computacional.

Description

Antecedentes
[0001] Um ou mais aspectos referem-se, em geral, ao processamento dentro de um ambiente de computação e, em particular, ao aprimoramento de tal processamento.
[0002] Aplicativos em execução dentro de um processador de um ambiente de computação controlam o comportamento do processador. Os aplicativos são criados usando linguagens de programação que são projetadas para comunicar instruções ao processador. Existem vários tipos de linguagens de programação, e cada idioma pode usar um ou mais tipos de codificação para representar dados.
[0003] Por exemplo, números inteiros decimais escalonados (também conhecidos como decimais de codificação binária escalonados/BCD escalonados) são um tipo de dados comum em muitos programas COBOL e PL/I, bem como em sistemas de gerenciamento de banco de dados DB2. Um número BCD escalonado é um número BCD mais um descritor de formato (n.k), em que o número BCD é interpretado como tendo n dígitos antes do ponto decimal e k dígitos após o ponto decimal (isto é, com k dígitos fracionários), ou um número inteiro decimal a ser multiplicado por 10-k.
[0004] A realização da adição e subtração de dados BCD escalonados com o mesmo parâmetro k é direta, uma vez que os dados são corretamente alinhados e o resultado tem o mesmo número de dígitos fracionários. A divisão é mais complexa porque a divisão inteira de dois números provê a parte inteira do quociente. Os k dígitos fracionários estão ausentes.
[0005] Por exemplo, se: A = 4444,44, B = 3333,33, Q = 0001,333
[0006] A divisão inteira normal provê o quociente Q = 1, mas não os dígitos fracionários. Além disso, o código convencional para executar uma operação de divisão BCD pode ser bastante complexo, requerendo uma sequência longa de operações.
Sumário
[0007] As desvantagens da técnica anterior são superadas, e vantagens adicionais são fornecidas através da provisão de um produto de programa de computador para facilitar o processamento em um ambiente de computação. O produto de programa de computador compreende um meio de armazenamento legível por um circuito de processamento e armazenando instruções para execução pelo circuito de processamento para a realização de um método. O método inclui, por exemplo, a obtenção de uma instrução para execução, a instrução para realizar uma operação de deslocamento e divisão. A instrução é executada, e a execução inclui o deslocamento de um valor em uma direção especificada por um montante selecionado para prover um dividendo. O montante selecionado é definido pelo usuário. O dividendo é dividido por um divisor para obter um quociente. Pelo menos um subconjunto do quociente é selecionado como um resultado. O resultado é colocado em um local selecionado, o resultado a ser usado no processamento dentro do ambiente de computação. A utilização de uma única instrução para realizar uma operação de divisão BCD escalonado melhora o desempenho através da eliminação de uma sequência de instruções longa e através da redução do número de instruções a serem pesquisadas e carregadas, decodificadas e executadas.
[0008] Em um exemplo, o valor é um número inteiro decimal, e o pelo menos um subconjunto do quociente é um número selecionado de dígitos do quociente. O número selecionado de dígitos inclui um número de dígitos inteiros e um número de dígitos fracionários.
[0009] Além disso, em uma concretização, a execução inclui determinar um sinal para o resultado; e incluir o sinal no local selecionado. Como um exemplo, a determinação do sinal inclui a verificação de um controle fornecido pela instrução. O controle é, por exemplo, provido em um campo de máscara da instrução.
[0010] Além disso, em uma concretização, a execução inclui a obtenção do valor de um ou mais campos da instrução; verificar a validade do valor; e realizar o deslocamento, com base na verificação indicando que o valor é válido.
[0011] Nos exemplos, a direção especificada é à esquerda; o montante selecionado é obtido de um campo da instrução; e o local selecionado é um registrador, o registrador sendo especificado utilizando pelo menos um campo da instrução. O pelo menos um campo inclui um campo de registrador especificando um número de registrador e um campo de extensão especificando um valor de extensão a ser acrescentado ao número de registrador.
[0012] Os métodos e sistemas referentes a um ou mais aspectos também são descritos e reivindicados neste documento. Além disso, os serviços referentes a um ou mais aspectos também são descritos e podem ser reivindicados neste documento.
[0013] Características e vantagens adicionais são obtidas através das técnicas descritas neste documento. Outras concretizações e aspectos são descritos em detalhes aqui e são consideradas uma parte dos aspectos reivindicados. Breve Descrição dos Desenhos
[0014] Um ou mais aspectos são particularmente destacados e distintamente reivindicados como exemplos nas reivindicações no final do relatório descritivo. A descrição acima e objetos, características e vantagens de um ou mais aspectos são evidentes a partir da descrição detalhada a seguir considerada em conjunto com os desenhos anexos, nos quais: A Figura 1A apresenta um exemplo de um ambiente de computação para incorporar e utilizar um ou mais aspectos da presente invenção; A Figura 1B apresenta outros detalhes do processador da Figura 1A, de acordo com um aspecto da presente invenção; A Figura 2A apresenta outro exemplo de um ambiente de computação para incorporar e utilizar um ou mais aspectos da presente invenção; A Figura 2B apresenta mais detalhes sobre a memória da Figura 2A; A Figura 3A apresenta um exemplo de uma instrução para Deslocamento e Divisão Vetorial de Decimal, de acordo com um aspecto da presente invenção; A Figura 3B apresenta uma concretização de um campo imediato da instrução para Deslocamento e Divisão Vetorial de Decimal da Figura 3A, de acordo com um aspecto da presente invenção; A Figura 3C ilustra uma concretização de um campo de máscara da instrução para Deslocamento e Divisão Vetorial de Decimal da Figura 3A, de acordo com um aspecto da presente invenção; A Figura 4 apresenta um exemplo de um diagrama de blocos de execução da instrução para Deslocamento e Divisão Vetorial de Decimal, de acordo com um aspecto da presente invenção; A Figura 5A apresenta de forma ilustrativa um exemplo de uma operação de divisão BCD; A Figura 5B apresenta de forma ilustrativa outro exemplo de uma operação de divisão BCD; As Figuras 5C-5D apresentam de forma ilustrativa exemplos de uma operação de deslocamento e divisão BCD, de acordo com um aspecto da presente invenção; As Figuras 6A-6B apresentam um exemplo de facilitação do processamento em um ambiente de computação, incluindo a execução da instrução para Deslocamento e Divisão Vetorial de Decimal, de acordo com um aspecto da presente invenção; A Figura 7 apresenta uma concretização de um ambiente de computação em nuvem; e A Figura 8 apresenta um exemplo de camadas de modelo de abstração.
Descrição Detalhada
[0015] Um ou mais aspectos referem-se ao aprimoramento do processamento dentro de um ambiente de computação, fornecendo um recurso para substituição de uma sequência de instruções longa com uma única instrução (por exemplo, uma única instrução de máquina projetada na interface de hardware/software) que realiza uma operação de deslocamento e divisão. Em um exemplo, a instrução, aqui referida como uma instrução para Deslocamento e Divisão Vetorial de Decimal, desloca um valor de entrada por um montante definido por usuário para fornecer um dividendo e, então, divide o dividendo por um divisor para produzir um quociente. Pelo menos uma parte do quociente é fornecida como um resultado.
[0016] A instrução realiza, por exemplo, uma operação de divisão inteira decimal que provê um quociente com dígitos inteiros mais k dígitos fracionários, em que K é um parâmetro de entrada para a instrução. K especifica quantos dígitos fracionários devem ser computados.
[0017] Uma concretização de um ambiente de computação para incorporar e utilizar um ou mais aspectos da presente invenção é descrita com referência à Figura 1A. Em um exemplo, o ambiente de computação baseia-se na z/Architecture, fornecida pela International Business Machines Corporation, Armonk, Nova York. Uma concretização da z/Architecture é descrita em “z/Architecture Principles of Operation”, Publicação IBM N°. SA22-7832-10, março de 2015, que é aqui incorporada por referência na sua totalidade. Z/Architecture é uma marca registrada da International Business Machines Corporation, Armonk, Nova York, EUA.
[0018] Em outro exemplo, o ambiente de computação é baseado na Power Architecture, fornecida pela International Business Machines Corporation, Armonk, Nova York. Uma concretização da Power Architecture é descrita em “Power ISATM versão 2.07B”, International Business Machines Corporation, 09 de abril de 2015, que é aqui incorporada por referência na sua totalidade. POWER ARCHITECTURE é uma marca registrada da International Business Machines Corporation, Armonk, Nova York, EUA.
[0019] O ambiente de computação também pode ser baseado em outras arquiteturas, incluindo, mas sem limitação, as arquiteturas x86 da Intel. Também existem outros exemplos.
[0020] Como mostrado na Figura 1A, um ambiente de computação 100 inclui, por exemplo, um nó 10 tendo, por exemplo, um servidor/sistema de computador 12, que funciona com várias outras configurações ou ambientes de sistema de computação de propósito geral ou propósito especial. Exemplos de sistemas de computação, ambientes e/ou configurações bem conhecidos que podem ser adequados para utilização com o servidor/sistema de computador 12 incluem, mas sem limitação, sistemas de computador pessoal (PC), sistemas de computadores servidores, thin clients, thick clients, dispositivos portáteis ou laptops, sistemas de multiprocessador, sistemas com base em microprocessador, set top boxes, aparelhos eletrônicos programáveis, PCs em rede, sistemas de minicomputador, sistemas de computadores mainframe e ambientes de computação em nuvem distribuídos que incluem qualquer um dos sistemas ou dispositivos acima, e semelhantes.
[0021] O servidor/sistema de computador 12 pode ser descrito no contexto geral de instruções executáveis por sistema de computador, tais como os módulos de programa, a serem executadas por um sistema de computador. Em geral, os módulos de programa podem incluir rotinas, programas, objetos, componentes, lógica, estruturas de dados etc. que realizam tarefas particulares ou implementam determinados tipos de dados abstratos. O servidor/sistema de computador 12 pode ser praticado em muitos ambientes de computação, incluindo, mas sem limitação, ambientes de computação em nuvem distribuídos onde as tarefas são executadas por dispositivos de processamento remoto que estão ligados através de uma rede de comunicações. Em um ambiente de computação em nuvem distribuído, os módulos de programa podem estar localizados em ambos os meios de armazenamento de sistema de computador local e remoto, incluindo dispositivos de armazenamento em memória.
[0022] Como mostrado na Figura 1A, o servidor/sistema de computador 12 é mostrado na forma de um dispositivo de computação de propósito geral. Os componentes do servidor/sistema de computador 12 podem incluir, mas sem limitação, um ou mais processadores ou unidades de processamento 16, uma memória de sistema 28 e um barramento 18 que acopla vários componentes de sistema, incluindo a memória de sistema 28, ao processador 16.
[0023] O barramento 18 representa um ou mais de qualquer um dos vários tipos de estruturas de barramento, incluindo um barramento de memória ou controlador de memória, um barramento periférico, uma porta gráfica acelerada, e um processador ou barramento local utilizando qualquer uma de uma variedade de arquiteturas de barramento. A título de exemplo, e não limitação, essas arquiteturas incluem barramento da Industry Standard Architecture (ISA), barramento da Micro Channel Architecture (MCA), barramento ISA Aprimorada (EISA), barramento local da Video Electronics Standards Association (VESA), e barramento de Interconexão de Componentes Periféricos (PCI).
[0024] O servidor/sistema de computador 12 tipicamente inclui uma variedade de meios legíveis por sistema de computador. Tais meios podem ser qualquer meio disponível que seja acessível pelo servidor/sistema de computador 12, e inclui meios voláteis e não voláteis, meios removíveis e não removíveis.
[0025] A memória de sistema 28 pode incluir meios legíveis por sistema de computador na forma de memória volátil, tal como memória de acesso aleatório (RAM) 30 e/ou memória cache 32. O servidor/sistema de computador 12 pode ainda incluir outros meios de armazenamento de sistema de computador voláteis/não voláteis, removíveis/não removíveis. A título de exemplo, o sistema de armazenamento 34 pode ser fornecido para leitura de e gravação em um meio magnéticos não volátil, não removível (não mostrado e normalmente denominado “disco rígido”). Embora não mostrado, uma unidade de disco magnético para leitura e gravação em um disco magnético não volátil, removível (por exemplo, um “disquete”) e uma unidade de disco óptico para leitura ou gravação em um disco óptico não volátil, removível, tal como um CD-ROM, DVD-ROM ou outro meio óptico, podem ser fornecidas. Em tais casos, cada uma delas pode ser conectada ao barramento 18 por uma ou mais interfaces de meio de dados. Como será adicionalmente ilustrado e descrito abaixo, a memória 28 pode incluir pelo menos um produto de programa tendo um conjunto (por exemplo, pelo menos um) de módulos de programa que são configurados para realizar as funções de concretizações da invenção.
[0026] O programa/utilitário 40, tendo um conjunto (pelo menos um) de módulos de programa 42, pode ser armazenado na memória 28, a título de exemplo, e não de limitação, bem como um sistema operacional, um ou mais programas de aplicativo, outros módulos de programa e dados de programa. Cada sistema operacional, um ou mais programas de aplicativo, outros módulos de programa e dados de programa, ou alguma combinação dos mesmos, podem incluir uma implementação de um ambiente de rede. Os módulos de programa 42 geralmente realizam as funções e/ou metodologias de concretizações da invenção, tal como aqui descrito.
[0027] O servidor/sistema de computador 12 também pode se comunicar com um ou mais dispositivos externos 14, tais como um teclado, um dispositivo apontador, um visor 24 etc.; um ou mais dispositivos que permitem ao usuário interagir com o servidor/sistema de computador 12; e/ou quaisquer dispositivos (por exemplo, placa de rede, modem etc.) que permitem que o servidor/sistema de computador 12 se comunique com um ou mais outros dispositivos de computação. Essa comunicação pode ocorrer através de interfaces de Entrada/Saída (E/S) 22. Além disso, o servidor/sistema de computador 12 pode se comunicar com uma ou mais redes, tais como uma rede de área local (LAN), uma rede de longa distância geral (WAN) e/ou uma rede pública (por exemplo, a Internet) através do adaptador de rede 20. Tal como representado, o adaptador de rede 20 se comunica com os outros componentes do servidor/sistema de computador 12 através do barramento 18. Deve-se compreender que, embora não mostrado, outros componentes de hardware e/ou software podem ser usados em conjunto com o servidor/sistema de computador 12. Exemplos incluem, sem limitação: microcódigo, drivers do dispositivo, unidades de processamento redundante, matrizes de unidades de disco externo, sistemas RAID, unidades de fita, sistemas de armazenamento de arquivos de dados etc.
[0028] Em um exemplo, o processador 16 inclui uma pluralidade de componentes funcionais utilizados para executar instruções. Como apresentado na Figura 1B, esses componentes funcionais incluem, por exemplo, um componente de pesquisa e carregamento de instrução 120 para pesquisar e carregar instruções a serem executadas; uma unidade de decodificação de instruções 122 para decodificar as instruções pesquisadas e carregadas e obter operandos das instruções decodificadas; componentes de execução de instruções 124 para executar as instruções decodificadas; um componente de acesso à memória 126 para acessar a memória para execução de instruções, se necessário; e um componente de resposta 130 para fornecer os resultados das instruções executadas. Um ou mais desses componentes pode, de acordo com um aspecto da presente invenção, ser utilizado para realizar uma operação de deslocamento e divisão decimal 136, como descrito em detalhes abaixo.
[0029] O processador 16 também inclui, em uma concretização, um ou mais registradores 140 a serem usados por um ou mais dos componentes funcionais.
[0030] Uma outra concretização de um ambiente de computação para incorporar e utilizar um ou mais aspectos é descrita com referência à Figura 2A. Neste exemplo, um ambiente de computação 200 inclui, por exemplo, uma unidade de processamento central nativa (CPU) 202, uma memória 204 e um ou mais dispositivos e/ou interfaces de entrada/saída 206 acoplados um ao outro através de, por exemplo, um ou mais barramentos 208 e/ou outras conexões. Como exemplos, o ambiente de computação 200 pode incluir um processador PowerPC ou um servidor pSeries fornecidos pela International Business Machines Corporation, Armonk, Nova York; um Superdome HP com processadores Intel Itanium II fornecido pela Hewlett Packard Co., Palo Alto, Califórnia; e/ou outras máquinas com base em arquiteturas fornecidas pela International Business Machines Corporation, Hewlett Packard, Intel, Oracle, ou outros.
[0031] A unidade de processamento central nativa 202 inclui um ou mais registradores nativos 210, tais como um ou mais registradores de uso geral e/ou um ou mais registradores de aplicação específica usados durante o processamento dentro do ambiente. Esses registradores incluem informações que representam o estado do ambiente em qualquer ponto específico no tempo.
[0032] Além disso, a unidade de processamento central nativa 202 executa instruções e código que são armazenados na memória 204. Em um exemplo particular, a unidade de processamento central executa o código emulador 212 armazenado na memória 204. Esse código permite que o ambiente de computação configurado em uma arquitetura emule outra arquitetura. Por exemplo, o código emulador 212 permite que as máquinas baseadas em arquiteturas que não a z/Architecture, tais como processadores PowerPC, servidores pSeries, servidores HP Superdome ou outros, emulem a z/Architecture e executem o software e as instruções desenvolvidos com base na z/Architecture.
[0033] Mais detalhes referentes ao código emulador 212 são descritos com referência à Figura 2B. Instruções hóspedes 250 armazenadas na memória 204 compreendem instruções de software (por exemplo, correlacionadas a instruções de máquina) que foram desenvolvidas para serem executadas em uma arquitetura diferente daquela da CPU nativa 202. Por exemplo, as instruções hóspedes 250 podem ter sido projetadas para execução em processador da z/Architecture, mas em vez disso, serem emuladas na CPU nativa 202, que pode ser, por exemplo, um processador Intel Itanium II. Em um exemplo, o código emulador 212 inclui uma rotina de pesquisa e carregamento de instruções 252 para obter uma ou mais instruções hóspedes 250 da memória 204, e para, opcionalmente, prover buffer local para as instruções obtidas. Também inclui uma rotina de tradução de instruções 254 para determinar o tipo de instrução hóspede que foi obtida e para traduzir a instrução hóspede em uma ou mais instruções nativas correspondentes 256. Essa tradução inclui, por exemplo, identificar a função a ser realizada pela instrução hóspede e escolher a(s) instrução(ões) nativa(s) para realizar a função.
[0034] Além disso, o emulador 212 inclui uma rotina de controle de emulação 260 para fazer com que as instruções nativas sejam executadas. A rotina de controle de emulação 260 pode fazer com que a CPU nativa 202 execute uma rotina de instruções nativas que emulam uma ou mais instruções hóspedes previamente obtidas e, na conclusão de tal execução, retornam o controle para a rotina de pesquisa e carregamento de instruções para emular a obtenção da próxima instrução hóspede ou um grupo de instruções hóspedes. A execução das instruções nativas 256 pode incluir o carregamento de dados em um registrador a partir da memória 204; armazenar dados de volta para a memória a partir de um registrador; ou executar algum tipo de operação aritmética ou lógica, como determinado pela rotina de tradução.
[0035] Cada rotina é, por exemplo, implementada em software, que é armazenado na memória e executado pela unidade de processamento central nativa 202. Em outros exemplos, uma ou mais das rotinas ou operações são implementadas em firmware, hardware, software ou alguma combinação dos mesmos. Os registradores do processador emulado podem ser emulados usando os registradores 210 da CPU nativa ou usando localizações na memória 204. Em concretizações, as instruções hóspedes 250, instruções nativas 256 e código emulador 212 podem residir na mesma memória ou podem ser disponibilizadas entre diferentes dispositivos de memória.
[0036] Como aqui utilizado, firmware inclui, por exemplo, o microcódigo, milicódigo e/ou macrocódigo do processador. Ele inclui, por exemplo, as instruções de nível de hardware e/ou estruturas de dados utilizadas na implementação de código de máquina de nível superior. Em uma concretização, ele inclui, por exemplo, o código proprietário que é normalmente entregue como microcódigo, que inclui software confiável ou microcódigo específico para o hardware subjacente e controla o acesso do sistema operacional ao hardware do sistema.
[0037] Uma instrução hóspede 250 que é obtida, traduzida e executado é, por exemplo, uma instrução para Deslocamento e Divisão Vetorial de Decimal aqui descrita. A instrução, que é de uma arquitetura (por exemplo, a z/Architecture), é pesquisada e carregada da memória, traduzida e representada como uma sequência de instruções nativas 256 de outra arquitetura (por exemplo, PowerPC, pSeries, Intel etc.). Essas instruções nativas são, então, executadas.
[0038] Detalhes relativos a uma concretização de uma instrução para Deslocamento e Divisão Vetorial de Decimal, incluindo os campos da instrução e a execução por pelo menos um processador (seja em um sistema nativo ou emulado) são aqui descritos. De acordo com um aspecto da presente invenção, a instrução para Deslocamento e Divisão Vetorial de Decimal desloca um valor de entrada por um montante definido por usuário para prover um dividendo e, então, divide o dividendo por um divisor para produzir um quociente. Pelo menos uma parte do quociente (por exemplo, os 31 dígitos mais à direita) é fornecida como um resultado. Esse resultado inclui dígitos inteiros e k dígitos fracionários, em que k é igual à quantidade de deslocamento. Isso melhora o desempenho do computador através da substituição de uma sequência de instruções longa para realizar uma operação de divisão BCD com uma única instrução (por exemplo, uma única instrução de máquina arquitetada). Portanto, aspectos da invenção são inextricavelmente vinculados à tecnologia de computadores e ao aprimoramento do processamento de computadores.
[0039] Em uma concretização, a instrução para Deslocamento e Divisão Vetorial de Decimal é parte de uma facilidade de vetor, que fornece, por exemplo, vetores de tamanho fixo variando de um a dezesseis elementos. Cada vetor inclui dados que são operados por instruções de vetor definidas na facilidade. Em uma concretização, se um vetor for composto por vários elementos, então, cada elemento é processado em paralelo com os outros elementos. A conclusão da instrução não ocorre até que o processamento de todos os elementos esteja completo. Em outras concretizações, os elementos são processados parcialmente em paralelo e/ou sequencialmente.
[0040] As instruções de vetor podem ser implementadas como parte de várias arquiteturas, incluindo, mas sem limitação, a z/Architecture, a Power Architecture, x86, IA-32, IA-64 etc. Embora as concretizações aqui descritas sejam para a z/Architecture, a instrução sw vetor aqui descrita e um ou mais outros aspectos podem se basear em muitas outras arquiteturas. A z/Architecture é apenas um exemplo.
[0041] Em uma concretização em que a facilidade de vetor é implementada como parte da z/Architecture, para utilizar as instruções e registradores de vetor, um controle de ativação de vetor e um controle de registrador em um registrador de controle especificado (por exemplo, registrador de controle 0) são definidos como, por exemplo, um. Se a facilidade de vetor for instalada e uma instrução de vetor for executada sem os controles de ativação definidos, uma exceção de dados é reconhecida. Se a facilidade de vetor não estiver instalada e uma instrução de vetor for executada, uma exceção de operação é reconhecida.
[0042] Em uma concretização, existem 32 registradores de vetor e outros tipos de registradores podem mapear para um quadrante dos registradores de vetor. Por exemplo, um arquivo de registrador pode incluir 32 registradores de vetor e cada registrador tem 128 bits de comprimento. Dezesseis registradores de ponto flutuante, que têm 64 bits de comprimento, podem sobrepor os registradores de vetor. Assim, como um exemplo, quando o registrador de ponto flutuante 2 é modificado, então, o registrador de vetor 2 é também modificado. Outros mapeamentos para outros tipos de registradores também são possíveis.
[0043] Os dados de vetores aparecem no armazenamento, por exemplo, na mesma sequência da esquerda para a direita como outros formatos de dados. Os bits de um formato de dados que são numerados 0-7 constituem o byte na localização de byte mais à esquerda (de número mais baixo) no armazenamento, os bits 8-15 formam o byte na localização sequencial seguinte, e assim por diante. Em outro exemplo, os dados de vetor podem aparecer no armazenamento em outra sequência, tal como da direita para a esquerda.
[0044] Um exemplo de uma instrução para Deslocamento e Divisão Vetorial de Decimal é descrito com referência às Figuras 3A-3C. Como mostrado, a instrução tem uma pluralidade de campos, e um campo pode ter um número subscrito a ele associado. O número subscrito associado com um campo de instrução indica o operando a que o campo se aplica. Por exemplo, o número subscrito 1 associado ao registrador de vetor V1 indica que o registrador em V1 inclui o primeiro operando, e assim por diante. Um operando de registrador tem um registrador de comprimento, que é, por exemplo, de 128 bits.
[0045] Com referência à Figura 3A, em uma concretização, uma instrução para Deslocamento e Divisão Vetorial de Decimal 300 inclui campos de código de operação (opcode) 302a, 302b indicando uma operação para deslocamento e divisão vetorial de decimal; um primeiro campo de registrador de vetor 304 utilizado para designar um primeiro registrador de vetor (V1); um segundo campo de registrador de vetor 306 utilizado para designar um segundo registrador de vetor (V2); um terceiro campo de registrador de vetor 308 utilizado para designar um terceiro registrador de vetor (V3); um campo de máscara (M5) 310; um campo imediato (I4) 312; e um campo de bit de extensão de registrador (RXB) 314, cada um dos quais é descrito abaixo. Em uma concretização, os campos são separados e independentes um do outro; no entanto, em outras concretizações, mais de um campo pode ser combinado. Informações adicionais sobre esses campos são descritas abaixo.
[0046] O campo de registrador de vetor 304 é utilizado para indicar um registrador de vetor que é para armazenar o primeiro operando, o primeiro operando sendo um resultado de deslocamento de um segundo operando para obter um dividendo, dividir o dividendo por um terceiro operando (o divisor) para obter um quociente, e selecionar pelo menos uma parte do quociente como o resultado. O segundo operando está contido no registrador de vetor especificado usando o campo de registrador de vetor 306 e o terceiro operando (o divisor) está contido no registrador de vetor especificado usando o campo de registrador de vetor 308. Em um exemplo, cada um dos campos de registrador de vetor 304, 306, 308 é utilizado com campo RXB 314 para designar o registrador de vetor.
[0047] Por exemplo, o campo RXB 314 inclui o bit mais significativo para um operando designado por registrador de vetor. Os bits para designações de registrador não especificadas pela instrução devem ser reservados e definidos para zero. O bit mais significativo é concatenado, por exemplo, para a esquerda da designação de registrador de quatro bits do campo de registrador de vetor para criar uma designação de registrador de vetor de cinco bits.
[0048] Em um exemplo, o campo RXB inclui quatro bits (por exemplo, bits 0-3), e os bits são definidos conforme abaixo: 0 - bit mais significativo para a primeira designação de registrador de vetor (por exemplo, nos bits 8-11) da instrução. 1 - bit mais significativo para a segunda designação de registrador de vetor (por exemplo, nos bits 12-15) da instrução, se houver. 2 - bit mais significativo para a terceira designação de registrador de vetor (por exemplo, nos bits 16-19) da instrução, se houver. 3 - bit mais significativo para a quarta designação de registrador de vetor (por exemplo, nos bits 32-35) da instrução, se houver.
[0049] Cada bit é definido para zero ou um, por exemplo, o agregador dependendo do número de registrador. Por exemplo, para os registradores 0-15, o bit é definido como 0; para os registradores 16-31, o bit é definido como 1 etc.
[0050] Em uma concretização, cada bit RXB é um bit de extensão para uma localização particular em uma instrução que inclui um ou mais registradores de vetor. Por exemplo, o bit 0 de RXB é um bit de extensão para a localização 8-11, que é atribuído a, por exemplo, V1 e assim por diante. Em particular, para os registradores de vetor, o registrador contendo o operando é especificado utilizando, por exemplo, um campo de quatro bits do campo de registrador com a adição do seu bit de extensão de registrador (RXB) correspondente como o bit mais significativo. Por exemplo, se o campo de quatro bits for 0110 e o bit de extensão for 0, então o campo de cinco bits 00110 indica o número de registrador 6. Em outra concretização, o campo RXB inclui bits adicionais, e mais de um bit é utilizado como uma extensão para cada vetor ou localização.
[0051] O campo imediato (I4) 312 especifica um quarto operando que inclui um controle de deslocamento. Por exemplo, o campo I4 312 inclui o seguinte, tal como ilustrado na Figura 3B: • Reservados: os bits 0-2 são reservados e devem conter zeros. Caso contrário, uma exceção de especificação é reconhecida, em um exemplo. • Quantidade de Deslocamento (SHAMT) 330: os bits 3-7 contêm um número binário não atribuído, especificando o número de dígitos que o segundo operando é deslocado, por exemplo, para a esquerda, de modo a formar o dividendo. A posição de sinal não participa do deslocamento. Zeros são fornecidos para as posições de dígito vagas.
[0052] O campo M5 310 inclui, em um exemplo, os seguintes controles, como apresentado na Figura 3C: • Operando de Força 2 Positivo (P2) 340: quando o bit 0 é um, o segundo sinal de operando é tratado como um sinal positivo e não é verificado quanto à validade. Quando o bit 0 é zero, o segundo sinal de operando é usado na operação e é verificado quanto à validade. • Operando de Força 3 Positivo (P3) 342: quando o bit 1 é um, o terceiro sinal de operando é tratado como um sinal positivo e não é verificado quanto à validade. Quando o bit 1 é zero, o terceiro sinal de operando é usado na operação e é verificado quanto à validade. • Operando de Força 1 Positivo (P1) 344: quando o bit 2 é um, o sinal do resultado colocado no primeiro operando é forçado para positivo e um código de sinal 1111 é usado. Quando o bit 2 é igual a zero, o sinal do resultado colocado no primeiro operando é o código de sinal selecionado para o sinal do quociente. • Conjunto de Código de Condição (CS) 346: Quando o bit 3 é zero, o código de condição não é definido e permanece inalterado. Quando o bit 3 é um, o código de condição é definido tal como especificado na seção de código de condição resultante abaixo.
[0053] Código de Condição Resultante: • Quando o bit CS é um, o código de condição é definido, como se segue, em um exemplo: 0 Resultado zero; sem excesso de capacidade 1 Resultado menor do que zero; sem excesso de capacidade 2 Resultado maior do que zero; sem excesso de capacidade 3 Excesso de capacidade
[0054] Embora vários campos e registradores sejam descritos, um ou mais aspectos da presente invenção podem usar outros, menos ou mais campos ou registrador, ou outros tamanhos de campos ou registradores etc. Muitas variações são possíveis. Por exemplo, registradores implícitos podem ser usados em vez de registradores ou campos explicitamente especificados da instrução. Além disso, registradores que não registradores de vetor podem ser utilizados. Novamente, outras variações também são possíveis.
[0055] Em operação, o segundo operando, deslocado para a esquerda (o dividendo) pelo número de dígitos especificado no quarto operando, é dividido pelo terceiro operando (o divisor), e um número selecionado de dígitos, por exemplo, os trinta e um dígitos mais à direita do quociente, é colocado na primeira localização de operando. Os operandos e o resultado estão, por exemplo, no formato de decimal compactado sinalizado.
[0056] Em um exemplo, no formato decimal compactado sinalizado, cada byte contém dois dígitos decimais (D), exceto para o byte mais à direita, que contém um sinal (S) para a direita de um dígito decimal. A aritmética decimal é realizada com operandos e gera resultados no formato decimal compactado sinalizado.
[0057] Os códigos de sinal do segundo e terceiro operandos podem ser modificados para utilização na operação pelo controle de operando de força dois positivo (P2) e pelo operando de força três positivo (P3), respectivamente.
[0058] Em um exemplo, todos os códigos de dígito são verificados quanto à validade. Os códigos de sinal são verificados quanto à validade, a menos que sejam substituídos pelos controles de operando de força dois positivo (P2) ou operando de força três positivo (P3).
[0059] Se o primeiro operando não puder conter todos os dígitos não zero mais à esquerda do quociente, um excesso de capacidade de decimal ocorre. A operação é concluída e o resultado é obtido ignorando os dígitos em excesso. Se a bandeira do conjunto de código de condição (CS) for um, o código de condição 3 é definido. Se um controle de excesso de capacidade de decimal em uma máscara de programa incluído, por exemplo, como parte da palavra de status de programa for um, uma interrupção de programa para o excesso de capacidade de decimal ocorre.
[0060] Quando os trinta e um dígitos mais à direita do quociente são diferentes de zero e o controle de operando de força um positivo (P1) é zero, as regras da álgebra dos sinais de dividendo e divisor determinam o sinal do resultado e um código de sinal selecionado é usado. Quando os trinta e um dígitos mais à direita do quociente são zero e o controle P1 é zero, o sinal do resultado se torna positivo com o código de sinal selecionado 1100. Quando o controle P1 é um, o sinal do resultado se torna positivo com código de sinal 1111.
[0061] Se o divisor for zero e o código de sinal de divisor usado for válido, uma exceção de divisão decimal é reconhecida. Isso inclui o caso de divisão de zero por zero. O código de sinal de divisor usado é o terceiro código de sinal de operando quando o bit de operando de força 3 positivo (P3) é zero, e é um código de sinal positivo quando o bit de operando de força 3 positivo (P3) é um.
[0062] Mais detalhes sobre a operação da instrução são descritos com referência à Figura 4. Em um exemplo, a lógica da Figura 4 é realizada por pelo menos um processador com base na obtenção e execução da instrução para Deslocamento e Divisão Vetorial de Decimal.
[0063] Com referência à Figura 4, inicialmente, o segundo operando e o terceiro operando (o divisor) são obtidos a partir dos registradores designados usando os campos V2 e V3 da instrução, ETAPA 400. Em um exemplo, os dígitos do segundo e terceiro operandos são verificados quanto à validade. Em particular, em um exemplo, todos os códigos de dígito são verificados quanto à validade. Se um ou mais dos dígitos for inválido, CONSULTA 402, então, o processamento está completo e um erro pode ser indicado, em um exemplo. No entanto, se os dígitos do segundo e terceiro operandos forem válidos, então, o processamento continua com a obtenção da quantidade de deslocamento, ETAPA 404. Em um exemplo, a quantidade de deslocamento é definida pelo usuário e fornecida pela instrução (por exemplo, I4 312).
[0064] O segundo operando é deslocado em uma direção especificada (por exemplo, esquerda) pela quantidade de deslocamento para obter um dividendo, ETAPA 406. O dividendo é dividido pelo terceiro operando para obter um quociente, ETAPA 408. Um intervalo selecionado de dígitos do quociente (por exemplo, 31 dígitos mais à direita) é selecionado como o resultado, que é colocado na primeira localização de operando (por exemplo, o registrador designado usando V1), ETAPA 410.
[0065] Além disso, um sinal do resultado é determinado, ETAPA 412. Por exemplo, quando os trinta e um dígitos mais à direita do quociente são diferentes de zero e o controle de operando de força um positivo (P1) é zero, regras da álgebra dos sinais de dividendo e divisor determinam o sinal do resultado e um código de sinal selecionado é usado. Quando os trinta e um dígitos mais à direita do quociente são zero e o controle P1 é zero, o sinal do resultado se torna positivo com código de sinal selecionado 1100. Quando o controle P1 é um, o sinal do resultado se torna positivo com código de sinal 1111.
[0066] Se o divisor for zero e o código de sinal de divisor usado for válido, uma exceção de divisão decimal é reconhecida. Isso inclui o caso de divisão de zero por zero. O código de sinal de divisor usado é o terceiro código de sinal de operando quando o bit de operando de força 3 positivo (P3) é zero, e é um código de sinal positivo quando o bit de operando de força 3 positivo (P3) é um.
[0067] O código de sinal do sinal determinado é colocado na primeira localização de operando (por exemplo, à direita), ETAPA 414. Isso completa o processamento de uma concretização da instrução para deslocamento e divisão.
[0068] Em outra concretização, o deslocamento pode ser para a direita e/ou a direção do deslocamento pode ser selecionável por um controle da instrução. Outras variações são possíveis.
[0069] Outros detalhes referentes às divisões inteiras de decimal são fornecidos abaixo.
[0070] Uma instrução para divisão de decimal anterior, DP, calcula o quociente Q e resto R para A dividido por B, de tal modo que A = Q*B+R. É possível ter um comprimento de até 31 dígitos, mas B pode ter, no máximo, 15 dígitos, e deve ter menos dígitos do que A. Ao limitar o comprimento do divisor, uma limitação grave é colocada sobre o tipo de divisões.
[0071] Com uma outra instrução decimal, VDP, ambos A e B podem ter uma largura total de até 31 dígitos; relaxando as limitações de comprimento da instrução DP. No entanto, com ambas as instruções, apenas a parte inteira é fornecida; nenhum dígito fracionário é fornecido.
[0072] Para uma divisão BCD escalonada (n.k), longas rotinas com várias operações de divisão são usadas para obter k dígitos fracionários além da parte inteira do quociente.
[0073] O acima é ainda descrito com referência às Figuras 5A-5B.
[0074] Como mostrado na Figura 5A, ao realizar uma divisão inteira 500 de dois números BCD de largura integral 502a, 502b (por exemplo, 31 dígitos), o quociente 504 é um número inteiro BCD com, no máximo, por exemplo, 31 dígitos; nenhum dígito fracionário é fornecido.
[0075] Para uma operação de divisão BCD escalonado, os 31 dígitos da entrada são interpretados como alguns “n” dígitos inteiros (antes do ponto decimal) e alguns “k” dígitos fracionários (após o ponto decimal). O quociente desejado geralmente tem o mesmo número de dígitos fracionários que os operandos.
[0076] Considere o exemplo: Q(7,3) = A(4,3)/B(4,3), como mostrado na Figura 5B.
[0077] A Figura 5B e os exemplos abaixo indicam que mesmo o VDP melhorado fornece apenas a parte inteira do quociente, e não os dígitos fracionários desejados.
[0078] Aqui, estão alguns exemplos: A = 8888.888 B = 0000.003 ^ Q = 2962962.666 B = 3333.333 ^ Q = 0000002.666
[0079] Para se obter o número desejado de dígitos fracionários do quociente, é necessário algum processamento extra.
[0080] Para uma divisão BCD escalonada com (n.k), considere os seguintes casos: 1. n+k+k < 32: então, “A” pode ser deslocado para a direita por k antes da operação de divisão, a obtenção de A’ = A * 10k. O quociente desejado com k dígitos fracionários pode, então, ser obtido por uma divisão decimal regular de um A’ (n+k,0) e B (n.k). 2. n+k+k > 31: “A” não pode ser deslocado para a direita por k porque excederia o número máximo de dígitos. Agora, faz diferença B poder ter apenas metade do comprimento (DP) ou B poder ter comprimento total (VDP).
[0081] No caso de metade do comprimento, e k < 15 DP: A = Q1 * B + R1 - quociente de computação e restante; note que R1<B... tem no máximo 15 dígitos SRP: R’ = R1 << k DP: R’ = Q2 * B + R2 - calcular quociente restante não é necessário, Q = (Q1 << k) + Q2
[0082] No caso de um B de 31 dígitos, o algoritmo acima não funciona e, por conseguinte, os operandos são convertidos em ponto flutuante decimal (DFP), uma divisão de ponto flutuante é realizada, e os dígitos de mantissa desejados são extraídos. Além disso, dependendo da implementação de DFP, isso ainda pode não ser suficiente, e uma técnica ainda mais complexa deve ser utilizada.
[0083] Assim, em ambos os casos, é uma rotina longa realizar a divisão BCD escalonada.
[0084] De acordo com um aspecto da presente invenção, uma sequência de instruções longa para realizar uma divisão BCD escalonada é substituída por uma única instrução (por exemplo, uma instrução arquitetada, tal como uma instrução de hardware arquitetada) que executa uma operação para deslocamento e divisão de decimal.
[0085] Em uma concretização, como apresentado na Figura 5C, a instrução para Deslocamento e Divisão Vetorial de Decimal especifica, de acordo com um aspecto da presente invenção, uma largura, sh (550). O operando A (552) é deslocado para a esquerda por dígitos sh obtendo um A’ = A << sh = A * 10sh. O A’ é, então, dividido pelo operando B (554) obtendo um quociente inteiro Q (556). Os 31 dígitos mais à direita são selecionados, em um exemplo, como resultado (558). Um excesso de capacidade (560) é detectado quando o quociente Q tem mais de 31 dígitos significativos.
[0086] Isso pode também ser interpretado, como mostrado na Figura 5D, como cálculo da parte inteira e de fração do quociente 570 de A/B, e como um resultado selecionando dígitos fracionários sh (572) e dígitos inteiros de 31-SH (574).
[0087] A instrução fornecida de acordo com um aspecto da presente invenção transforma a operação de divisão BCD escalonada com largura (n.k) em uma única instrução de deslocamento e divisão com sh=k, substituindo, assim, uma sequência de instruções longa por uma única instrução, aumentando significativamente a velocidade em as operações de divisão BCD escalonadas são realizadas, e melhorando o processamento dentro de um ambiente de computação. A instrução também proporciona maior flexibilidade, em que uma divisão escalonada com escalonamento arbitrário (isto é, não fixo, variável) k é fornecida. A instrução fornece uma definição arbitrária do conjunto de bits dos dígitos inteiros e de fração do quociente, e realiza a verificação de excesso de capacidade com base no conjunto de bits arbitrário. Tais operações podem ser usadas por muitos tipos de aplicativos e outro processamento do ambiente de computação.
[0088] Detalhes adicionais referentes à facilitação do processamento dentro de um ambiente de computação, incluindo a execução de uma instrução para realizar uma operação de deslocamento e divisão, são descritos com referência às Figuras 6A-6B.
[0089] Com referência à Figura 6A, uma instrução (por exemplo, uma instrução de máquina arquitetada) para executar uma operação de deslocamento e divisão é obtida, ETAPA 600, e executada por pelo menos um processador, ETAPA 602. A execução inclui, por exemplo, deslocar um valor em uma direção específica por um montante selecionado para prover um dividendo, o montante selecionado sendo definido pelo usuário, ETAPA 604. O dividendo é dividido por um divisor para obter um quociente, ETAPA 606. Pelo menos um subconjunto do quociente (por exemplo, os 31 dígitos mais à direita) é selecionado como um resultado, ETAPA 608. O resultado é colocado em um local selecionado, o resultado a ser usado no processamento dentro do ambiente de computação, ETAPA 610.
[0090] Como um exemplo, o valor é um número inteiro decimal (612), e o pelo menos um subconjunto do quociente é um número selecionado de dígitos do quociente, o número selecionado de dígitos incluindo um número de dígitos inteiros e uma série dígitos fracionários (614).
[0091] Em outra concretização, a execução inclui ainda determinar um sinal para o resultado, ETAPA 616; e incluindo o sinal no local selecionado, ETAPA 618. Em um exemplo, a determinação do sinal inclui a verificação de um controle fornecido pela instrução, ETAPA 620; e o controle é fornecido, por exemplo, em um campo de máscara da instrução (622).
[0092] Além disso, com referência à Figura 6B, em um exemplo, a execução inclui a obtenção do valor de um ou mais campos da instrução, ETAPA 624; verificação da validade do valor, ETAPA 626; e realização do deslocamento, com base na verificação, indicando que o valor é válido, ETAPA 628.
[0093] Como exemplo, a direção específica é à esquerda (630); a quantidade selecionada é obtida de um campo da instrução (632), e o local selecionado é um registrador, o registrador sendo especificado utilizando pelo menos um campo da instrução (634). O pelo menos um campo inclui um campo de registrador especificando um número de registrador e um campo de extensão especificando um valor de extensão para ser acrescentado ao número de registrador (636).
[0094] É aqui descrita uma facilidade para utilização de uma única instrução arquitetada para realizar a divisão BCD. Essa instrução substitui uma sequência de instruções longa, e melhora o processamento e o desempenho do computador.
[0095] Embora vários exemplos sejam fornecidos, variações são possíveis sem se afastar do espírito dos aspectos reivindicados. Por exemplo, os valores que estão incluídos nos registradores e/ou campos utilizados pela instrução podem, em outras concretizações, estar em outras localizações, tais como locais de memória etc. Muitas outras variações são possíveis.
[0096] Um ou mais aspectos podem se referir à computação em nuvem.
[0097] Entende-se antecipadamente que, embora a presente invenção inclua uma descrição detalhada sobre computação em nuvem, a implementação dos ensinamentos aqui citados não é limitada a um ambiente de computação em nuvem. Em vez disso, as concretizações da presente invenção podem ser executadas em conjunto com qualquer outro tipo de ambiente de computação agora conhecido ou desenvolvido posteriormente.
[0098] A computação em nuvem é um modelo de prestação de serviços para permitir acesso à rede conveniente sob demanda a um agrupamento compartilhado de recursos de computação configuráveis (por exemplo, redes, largura de banda de rede, servidores, processamento, memória, armazenamento, aplicativos, máquinas virtuais e serviços) que podem ser rapidamente fornecidos e liberados com mínimo esforço de gerenciamento ou interação com um fornecedor do serviço. Esse modelo em nuvem pode incluir pelo menos cinco características, pelo menos três modelos de serviço, e pelo menos quatro modelos de implementação.
[0099] As características são as seguintes: - Autosserviço sob demanda: um consumidor de nuvem pode unilateralmente prover recursos de computação, tais como tempo de servidor e armazenamento de rede, conforme necessário automaticamente sem a necessidade de interação humana com o provedor de serviço. - Acesso de rede ampla: os recursos estão disponíveis através de uma rede e são acessados através de mecanismos padrão que promovem o uso de plataformas de thin ou thick client heterogêneas (por exemplo, telefones celulares, laptops e PDAs). - Agrupamento de recursos: recursos de computação do provedor são agrupados para atender vários consumidores usando um modelo multi-tenant, com diferentes recursos físicos e virtuais atribuídos dinamicamente e reatribuídos de acordo com a demanda. Há um senso de independência local em que o consumidor geralmente não tem controle ou conhecimento sobre a localização exata dos recursos providos, mas pode ser capaz de especificar a localização em um nível mais alto de abstração (por exemplo, país, estado ou datacenter). - Elasticidade rápida: os recursos podem ser rapidamente e elasticamente provisionados, em alguns casos, automaticamente, para rapidamente remover nós (scale out) e rapidamente liberado para adicionar nós (scale in). Para o consumidor, os recursos disponíveis para provisionamento muitas vezes parecem ser ilimitados e podem ser adquiridos em qualquer quantidade e a qualquer momento. - Serviço medido: sistemas de nuvem controlam e otimizam automaticamente a utilização de recursos aproveitando uma capacidade de medição em algum nível de abstração apropriado para o tipo de serviço (por exemplo, armazenamento, processamento, largura de banda e contas de usuário ativos). O uso de recursos pode ser monitorado, controlado e reportado oferecendo transparência tanto para o provedor quanto para o consumidor do serviço utilizado.
[0100] Modelos de Serviços são os seguintes: - Software como Serviço (SaaS): o recurso fornecido ao consumidor é usar aplicativos do provedor que funcionam em uma infraestrutura de nuvem. Os aplicativos são acessíveis a partir de vários dispositivos clientes através de uma interface thin client, tal como um navegador web (por exemplo, e-mail baseado na web). O consumidor não gerencia nem controla a infraestrutura de nuvem subjacente, incluindo rede, servidores, sistemas operacionais, armazenamento ou até mesmo recursos de aplicativos individuais, com a possível exceção de definições de configuração de aplicativo específicas de usuário limitadas. - Plataforma como Serviço (PaaS): o recurso fornecido ao consumidor é implantar nos aplicativos adquiridos ou criados por consumidor de infraestrutura de nuvem usando linguagens de programação e ferramentas suportadas pelo provedor. O consumidor não gerencia nem controla a infraestrutura de nuvem subjacente, incluindo redes, servidores, sistemas operacionais ou armazenamento, mas tem controle sobre os aplicativos implementados e possivelmente configurações de ambiente de hospedagem de aplicação. - Infraestrutura como Serviço (IaaS): o recurso fornecido ao consumidor é para provisão de processamento, armazenamento, redes e outros recursos computacionais fundamentais, em que o consumidor é capaz de implantar e executar software arbitrário, que pode incluir sistemas operacionais e aplicativos. O consumidor não gerencia nem controla a infraestrutura de nuvem subjacente, mas tem controle sobre sistemas operacionais, armazenamento, aplicativos implementados e controle possivelmente limitado de componentes em rede selecionados (por exemplo, firewalls hospedeiros).
[0101] Modelos de implementação são os seguintes: - Nuvem privada: a infraestrutura de nuvem é operada exclusivamente para uma organização. Pode ser gerenciada pela organização ou por terceiros e pode existir no local ou externamente. - Nuvem comunitária: a infraestrutura de nuvem é compartilhada por várias organizações e suporta uma comunidade específica que tem considerações comuns (por exemplo, missão, requisitos de segurança, política e compliance). Pode ser gerenciada pelas organizações ou por terceiros e pode existir no local ou externamente. - Nuvem pública: a infraestrutura de nuvem é disponibilizada ao público em geral ou a um grande grupo da indústria e é propriedade de uma organização que vende serviços em nuvem. - Nuvem híbrida: a infraestrutura em nuvem é uma composição de duas ou mais nuvens (privada, comunitária ou pública) que permanecem entidades únicas, mas são unidas por tecnologia padronizada ou proprietária que permite que portabilidade de dados e aplicativo (por exemplo, rajada de nuvem para balanceamento de carga entre nuvens).
[0102] Um ambiente de computação em nuvem é orientado a serviços com foco em statelessness (ausência de manutenção de estado), baixo acoplamento, modularidade e interoperabilidade semântica. No coração da computação em nuvem está uma infraestrutura que compreende uma rede de nós interconectados. Tal nó é o nó 10 apresentado na Figura 1A.
[0103] O nó de computação 10 é apenas um exemplo de um nó de computação em nuvem adequado e não se destina a sugerir qualquer limitação a respeito do escopo de utilização ou funcionalidade dasconcretizações da invenção aqui descritas. Independentemente, o nó de computação em nuvem 10 pode ser implementado e/ou realizar qualquer uma das funcionalidades apresentadas acima.
[0104] Com referência agora à Figura 7, um ambiente de computação em nuvem ilustrativo 50 é mostrado. Como mostrado, ambiente de computação em nuvem 50 compreende um ou mais nós de computação 10 com os quais os dispositivos de computação locais utilizados por consumidores em nuvem, tais como, por exemplo, assistente pessoal digital (PDA) ou telefone celular 54A, computador desktop 54B, computador laptop 54C e/ou sistema de computador de automóvel 54N, podem se comunicar. Os nós 10 podem se comunicar entre si. Eles podem ser agrupados (não mostrado) fisicamente ou virtualmente, em uma ou mais redes, tais como nuvens Privadas, Comunitárias, Públicas ou Híbridas, tal como descrito aqui anteriormente, ou uma combinação das mesmas. Isso permite que o ambiente de computação em nuvem 50 ofereça infraestrutura, plataformas e/ou software como serviços para os quais um consumidor em nuvem não precisa manter recursos em um dispositivo de computação local. Entende-se que os tipos de dispositivos de computação 54A-N mostrados na Figura 7 destinam-se a ser apenas ilustrativos e que os nós de computação 10 e o ambiente de computação nuvem 50 podem se comunicar com qualquer tipo de dispositivo computadorizado através de qualquer tipo de rede e/ou conexão endereçável de rede (por exemplo, utilizando um navegador web).
[0105] Com referência agora à Figura 8, um conjunto de camadas de abstração funcionais fornecidos pelo ambiente de computação em nuvem 50 (Figura 7) é mostrado. Deve-se entender antecipadamente que os componentes, camadas e funções mostradas na Figura 8 destinam-se a ser apenas ilustrativos e que as concretizações da invenção não são limitadas a estes. Como apresentado, as seguintes camadas e funções correspondentes são fornecidas:
[0106] A camada de hardware e software 60 inclui componentes de hardware e software. Exemplos de componentes de hardware incluem mainframes 61; servidores com base em arquitetura RISC (Computador com Conjunto Reduzido de Instruções) 62; servidores de 63; servidores de lâmina 64; dispositivos de armazenamento 65; e redes e componentes de rede 66. Em algumas concretizações, os componentes de software incluem software servidor de aplicativo de rede 67 e software de banco de dados 68.
[0107] A camada de virtualização 70 fornece uma camada de abstração a partir da qual podem ser fornecidos os seguintes exemplos de entidades virtuais: servidores virtuais 71; armazenamento virtual 72; redes virtuais 73, incluindo redes privadas virtuais; sistemas operacionais e aplicativos virtuais 74; e clientes virtuais 75.
[0108] Em um exemplo, a camada de gerenciamento 80 pode prover as funções descritas abaixo. O provisionamento de recursos 81 fornece aquisição dinâmica de recursos de computação e outros recursos que são utilizados para executar tarefas dentro do ambiente de computação em nuvem. A função de Medição e Precificação 82 fornece controle de custos conforme os recursos são utilizados dentro do ambiente de computação em nuvem, e cobrança ou faturamento para o consumo desses recursos. Em um exemplo, esses recursos podem incluir licenças de software de aplicativo. A função de Segurança fornece verificação de identidade para consumidores e tarefas em nuvem, bem como a proteção de dados e outros recursos. O portal de usuário 83 fornece acesso ao ambiente de computação em nuvem para consumidores e administradores de sistema. O gerenciamento de nível de serviço 84 fornece alocação e gerenciamento de recursos de computação em nuvem, de tal forma que os níveis de serviço exigidos sejam cumpridos. O planejamento e realização do Contrato de Nível de Serviço 85 fornece pré-acordo para, e aquisição de, recursos de computação em nuvem para os quais um requisito futuro está previsto, de acordo com um SLA.
[0109] A camada de cargas de trabalho 90 fornece exemplos de funcionalidade para que o ambiente de computação em nuvem possa ser utilizado. Exemplos de cargas de trabalho e funções que podem ser fornecidas a partir desta camada incluem: mapeamento e navegação 91; desenvolvimento e gerenciamento de ciclo de vida de software 92; ministração de conteúdo educativo em sala de aula virtual 93; processamento analítico de dados 94; processamento de transações 95; e processamento de instruções 96.
[0110] A presente invenção pode ser um sistema, um método e/ou um produto de programa de computador em qualquer nível de detalhe técnico de integração possível. O produto de programa de computador pode incluir um meio de armazenamento legível por computador (ou meios) tendo nele instruções de programa legíveis por computador para fazer com que um processador realize os aspectos da presente invenção.
[0111] O meio de armazenamento legível por computador pode ser um dispositivo tangível, que pode reter e armazenar instruções para uso por um dispositivo de execução de instruções. O meio de armazenamento legível por computador pode ser, por exemplo, mas sem limitação, um dispositivo de armazenamento eletrônico, um dispositivo de armazenamento magnético, um dispositivo de armazenamento óptico, um dispositivo de armazenamento eletromagnético, um dispositivo de armazenamento semicondutor, ou qualquer combinação adequada dos mesmos. Uma lista não exaustiva de exemplos mais específicos do meio de armazenamento legível por computador inclui: um disquete de computador portátil, um disco rígido, uma memória de acesso aleatório (RAM), uma de memória somente de leitura (ROM), uma memória somente de leitura programável apagável (EPROM ou memória flash), uma memória estática de acesso aleatório (SRAM), uma memória somente de leitura em disco compacto portátil (CD-ROM), um disco versátil digital (DVD), um cartão de memória, um disco flexível, um dispositivo codificado mecanicamente tal como cartões perfurados ou estruturas criadas em uma ranhura tendo instruções nelas gravadas, e qualquer combinação adequada dos mesmos. Um meio de armazenamento legível por computador, tal como aqui usado, não deve ser interpretado como sendo sinais transitórios per se, tais como ondas de rádio ou outras ondas eletromagnéticas que se propagam livremente, ondas eletromagnéticas que se propagam através de um guia de ondas ou outros meios de transmissão (por exemplo, impulsos de luz que passam através um cabo de fibra óptica), ou sinais elétricos transmitidos através de um fio.
[0112] As instruções de programa legíveis por computador aqui descritas podem ser baixadas para respectivos dispositivos de computação/processamento de um meio de armazenamento legível por computador ou para um computador externo ou um dispositivo de armazenamento externo através de uma rede, por exemplo, a Internet, uma rede de área local, uma rede de longa distância e/ou uma rede sem fio. A rede pode compreender cabos de transmissão de cobre, fibras ópticas de transmissão, transmissão sem fio, roteadores, firewalls, comutadores, computadores gateway e/ou os servidores de borda. Uma placa adaptadora de rede ou interface de rede em cada dispositivo de computação/processamento recebe instruções de programa legíveis por computador da rede e encaminha as instruções de programa legíveis por computador para armazenamento em um meio de armazenamento legível por computador dentro do respectivo dispositivo de computação/processamento.
[0113] As instruções de programa legíveis por computador para a realização de operações da presente invenção podem ser instruções de agregador, instruções ISA (arquitetura de conjunto de instruções), instruções de máquina, instruções dependentes de máquina, microcódigo, instruções de firmware, dados de definição de estado, dados de configuração para circuitos integrados, ou código fonte ou código de objeto escrito em qualquer combinação de uma ou mais linguagens de programação, incluindo uma linguagem de programação orientada a objeto, tal como Smalltalk, C++, ou semelhantes, e linguagens de programação procedimentais, tais como a linguagem de programação “C” ou linguagens de programação semelhantes. As instruções de programa legíveis por computador podem ser executadas 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 em um computador remoto ou inteiramente no computador remoto ou servidor. Neste último cenário, o computador remoto pode ser conectado ao computador do usuário através de qualquer tipo de rede, incluindo uma rede de área local (LAN) ou uma rede de longa distância (WAN), ou a conexão pode ser feita a um computador externo (por exemplo, através da Internet usando um Provedor de Serviços da Internet). Em algumas concretizações, circuitos eletrônicos, incluindo, por exemplo, um circuito lógico programável, arranjos de portas programáveis em campo (FPGA) ou arranjos lógicos programáveis (PLA), podem executar as instruções de programa legíveis por computador utilizando informações de estado das instruções de programa legíveis por computador para personalizar os circuitos eletrônicos, a fim de realizar os aspectos da presente invenção.
[0114] Aspectos da presente invenção são aqui descritos com referência às ilustrações de fluxograma e/ou diagramas de blocos de métodos, aparelhos (sistemas) e produtos de programa de computador de acordo com concretizações da invenção. Será entendido que cada bloco das ilustrações de fluxograma e/ou diagramas de blocos, e combinações de blocos nas ilustrações de fluxograma e/ou diagramas de blocos, podem ser implementados por instruções de programa legíveis por computador.
[0115] Essas instruções de programa legíveis por computador podem ser providas para um processador de um computador de propósito geral, computador de propósito especial ou outro aparelho de processamento de dados programável para produzir uma máquina, de tal modo que as instruções, que são executadas através do processador do computador ou outro aparelho de processamento de dados programável, criam meios para implementar as funções/ações especificadas no bloco ou blocos do diagrama de blocos e/ou fluxograma. Essas instruções de programa legíveis por computador também podem ser armazenadas em um meio de armazenamento legível por computador que pode direcionar um computador, um aparelho de processamento de dados programável e/ou outros dispositivos a funcionarem de forma particular, de tal modo que o meio de armazenamento legível por computador tendo instruções nele armazenadas compreende um artigo de fabricação incluindo instruções que implementam aspectos da função/ação especificada no bloco ou blocos do diagrama de blocos e/ou fluxograma.
[0116] As instruções de programa legíveis por computador também podem ser carregadas em um computador, outro aparelho de processamento de dados programável ou outro dispositivo para fazer com que uma série de etapas operacionais seja realizada no computador, outro aparelho programável ou outro dispositivo para produzir um processo implementado por computador, de tal modo que as instruções que são executadas no computador, outro aparelho programável ou outro dispositivo implementam as funções/ações especificadas no bloco ou blocos do diagrama de blocos e/ou fluxograma.
[0117] O fluxograma e os diagramas de blocos nas Figuras ilustram a arquitetura, funcionalidade e operação de possíveis implementações de sistemas, métodos e produtos de programa de computador de acordo com várias concretizações da presente invenção. Neste sentido, cada bloco no fluxograma ou diagramas de blocos pode representar um módulo, segmento ou parte de instruções, que compreende uma ou mais instruções executáveis para implementar a(s) função(ões) lógica(s) especificada(s). Em algumas implementações alternativas, as funções verificadas no bloco podem ocorrer fora da ordem observada nas figuras. Por exemplo, dois blocos mostrados em sucessão podem, de fator, ser executados substancialmente simultaneamente, ou os blocos podem, por vezes, ser executados na ordem inversa, dependendo da funcionalidade envolvida. Será também observado que cada bloco dos diagramas de blocos e/ou ilustração de fluxograma, e combinações de blocos nos diagramas de blocos e/ou ilustração de fluxograma, podem ser implementados por sistemas com base em hardware de propósito especial que realizam as funções ou ações especificadas ou realizam combinações de instruções de computador e hardware de propósito especial.
[0118] Além do acima, um ou mais aspectos podem ser fornecidos, oferecidos, implementados, gerenciados, assegurado etc. por um prestador de serviços que oferece gerenciamento de ambientes clientes. Por exemplo, o prestador de serviços pode criar, manter, suportar etc. código de computador e/ou uma infraestrutura de computador que realiza um ou mais aspectos para um ou mais clientes. Em troca, o prestador de serviços pode receber o pagamento do cliente no âmbito de um contrato de subscrição e/ou assinatura, como exemplos. Adicionalmente ou alternativamente, o prestador de serviços pode receber o pagamento pela venda de conteúdo publicitário para um ou mais terceiros.
[0119] Em um aspecto, um aplicativo pode ser implementado para a realização de uma ou mais concretizações. Como um exemplo, a implementação de um aplicativo compreende o fornecimento de infraestrutura de computador operável para realizar uma ou mais concretizações.
[0120] Conforme um aspecto adicional, uma infraestrutura de computação pode ser implementada compreendendo a integração de código legível por computador em um sistema de computação, em que o código em combinação com o sistema de computação é capaz de executar uma ou mais concretizações.
[0121] Como outro aspecto, um processo para a integração de infraestrutura de computação pode ser provido compreendendo a integração de código legível por computador em um sistema de computador. O sistema de computador compreende um meio legível por computador, em que o meio de computador compreende uma ou mais concretizações. O código em combinação com o sistema de computador é capaz de executar uma ou mais concretizações.
[0122] Embora várias concretizações sejam descritas acima, estas são apenas exemplos. Por exemplo, ambientes de computação de outras arquiteturas podem ser usados para incorporar e utilizar uma ou mais concretizações. Além disso, diferentes instruções, formatos de instrução, campos de instruções e/ou valores de instrução podem ser usados. Muitas variações são possíveis.
[0123] Além disso, outros tipos de ambientes de computação podem se beneficiar e ser usados. Como um exemplo, um sistema de processamento de dados apropriado para armazenamento e/ou execução de código de programa é utilizável, o qual inclui pelo menos dois processadores acoplados direta ou indiretamente a elementos de memória através de um barramento de sistema. Os elementos de memória incluem, por exemplo, memória local empregada durante a execução real do código de programa, armazenamento em bloco e memória cache, que fornecem armazenamento temporário de pelo menos algum código do programa, a fim de reduzir o número vezes que o código deve ser recuperado do armazenamento em bloco durante a execução.
[0124] Dispositivos de Entrada/Saída ou E/S (incluindo, mas sem limitação, teclados, visores, dispositivos apontadores, DASD, fita, CDs, DVDs, pen drives e outros meios de memória etc.) podem ser acoplados ao sistema, seja diretamente ou através de controladores E/S intermediários. Adaptadores de rede também podem ser acoplados ao sistema para permitir que o sistema de processamento de dados se torne acoplado a outros sistemas de processamento de dados ou impressoras remotas ou dispositivos de armazenamento através de redes privadas ou públicas intermediárias. Modems, modems a cabo e cartões de Ethernet são apenas alguns dos tipos disponíveis de adaptadores de rede.
[0125] A terminologia aqui utilizada tem o propósito de descrever apenas concretizações particulares e não se destina a ser limitante. Tal como aqui utilizado, as formas singulares “um/a” e “o/a” pretendem incluir também as formas de plural, a menos que o contexto indique claramente o contrário. Será ainda entendido que os termos “compreende” e/ou “compreendendo”, quando utilizados no presente relatório descritivo, especificam a presença de características, números inteiros, etapas, operações, elementos e/ou componentes indicados, mas não excluem a presença ou a adição de uma ou mais outras características, números inteiros, etapas, operações, elementos, componentes e/ou grupos dos mesmos.
[0126] As estruturas, materiais, ações e equivalentes correspondentes de todos os meios ou etapa mais função de elementos nas reivindicações abaixo, se houver, pretendem incluir qualquer estrutura, material ou ação para realizar a função em combinação com outros elementos reivindicados como especificamente reivindicados. A descrição de uma ou mais concretizações foi apresentada para fins de ilustração e descrição, mas não se destina a ser exaustiva ou limitada à forma apresentada. Muitas modificações e variações serão evidentes para os versados na técnica. A concretização foi escolhida e descrita a fim de melhor explicar vários aspectos e a aplicação prática, e para permitir que outras pessoas com conhecimentos normais na técnica compreendam que várias concretizações com várias modificações são apropriadas para o uso particular contemplado.

Claims (11)

1. Método implementado por computador para facilitar o processamento dentro de um ambiente computacional, método caracterizado pelo fato de que compreende: obter uma instrução para execução, a instrução para executar uma operação de deslocamento e divisão; e executar a instrução, a execução compreendendo: deslocar um valor em uma direção especificada por um valor selecionado para fornecer um dividendo, o valor selecionado sendo definido pelo usuário; dividir o dividendo por um divisor para obter um quociente; selecionar pelo menos um subconjunto do quociente como um resultado; e colocar o resultado em um local selecionado, o resultado a ser usado no processamento dentro do ambiente computacional.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o valor é um inteiro decimal, e o pelo menos um subconjunto do quociente é um número selecionado de dígitos do quociente, o número selecionado de dígitos incluindo um número de dígitos inteiros e um número de dígitos fracionários.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a execução compreende ainda: determinar um sinal para o resultado; e incluir o sinal no local selecionado.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que a determinação do sinal compreende a verificação de um controle fornecido pela instrução.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que o controle é fornecido em um campo de máscara da instrução.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a execução compreende ainda: obter o valor de um ou mais campos da instrução; verificar a validade do valor; e executar o deslocamento, com base na verificação indicando que o valor é válido.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a direção especificada é esquerda.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a execução compreende ainda a obtenção do valor selecionado a partir de um campo da instrução.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o local selecionado é um registrador, o registrador sendo especificado usando pelo menos um campo da instrução.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que o pelo menos um campo compreende um campo de registrador especificando um número de registrador e um campo de extensão especificando um valor de extensão a ser anexado ao número de registrador.
11. Sistema de computador para facilitar o processamento dentro de um ambiente computacional, o sistema de computador caracterizado pelo fato de que compreende: uma memória; e um processador em comunicação com a memória, em que o sistema de computador é configurado para executar o método conforme definido em qualquer uma das reivindicações 1 a 10.
BR112019006622-5A 2016-09-30 2017-09-21 Método implementado por computador e sistema de computador para facilitar o processamento dentro de um ambiente computacional BR112019006622B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/281,245 US10241757B2 (en) 2016-09-30 2016-09-30 Decimal shift and divide instruction
US15/281,245 2016-09-30
PCT/EP2017/073875 WO2018060040A1 (en) 2016-09-30 2017-09-21 Decimal shift and divide instruction

Publications (2)

Publication Number Publication Date
BR112019006622A2 BR112019006622A2 (pt) 2019-07-02
BR112019006622B1 true BR112019006622B1 (pt) 2022-06-14

Family

ID=59955558

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019006622-5A BR112019006622B1 (pt) 2016-09-30 2017-09-21 Método implementado por computador e sistema de computador para facilitar o processamento dentro de um ambiente computacional

Country Status (19)

Country Link
US (2) US10241757B2 (pt)
EP (1) EP3519939B1 (pt)
JP (1) JP6909284B2 (pt)
KR (1) KR102178288B1 (pt)
CN (1) CN109791478B (pt)
AU (1) AU2017333768B2 (pt)
BR (1) BR112019006622B1 (pt)
CA (1) CA3036122A1 (pt)
DK (1) DK3519939T3 (pt)
HU (1) HUE048701T2 (pt)
IL (1) IL264740B (pt)
LT (1) LT3519939T (pt)
MX (1) MX2019003607A (pt)
PT (1) PT3519939T (pt)
RU (1) RU2726147C1 (pt)
SI (1) SI3519939T1 (pt)
TW (1) TWI636397B (pt)
WO (1) WO2018060040A1 (pt)
ZA (1) ZA201902291B (pt)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11663004B2 (en) 2021-02-26 2023-05-30 International Business Machines Corporation Vector convert hexadecimal floating point to scaled decimal instruction
US11360769B1 (en) 2021-02-26 2022-06-14 International Business Machines Corporation Decimal scale and convert and split to hexadecimal floating point instruction

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4390961A (en) 1980-12-24 1983-06-28 Honeywell Information Systems Inc. Data processor performing a decimal multiply operation using a read only memory
JPH0383127A (ja) 1989-08-28 1991-04-09 Nec Corp 10進除算器
US5426600A (en) 1993-09-27 1995-06-20 Hitachi America, Ltd. Double precision division circuit and method for digital signal processor
US5969326A (en) * 1998-01-14 1999-10-19 Intermec Ip Corp. Method and apparatus of autodiscriminating in symbol reader employing prioritized and updated table of symbologies
US6067617A (en) * 1998-04-07 2000-05-23 International Business Machines Corporation Specialized millicode instructions for packed decimal division
US6401108B1 (en) * 1999-03-31 2002-06-04 International Business Machines Corp. Floating point compare apparatus and methods therefor
JP2001034472A (ja) 1999-07-16 2001-02-09 Mitsubishi Electric Corp データ処理装置および除算、剰余算アルゴリズム
JP3886870B2 (ja) 2002-09-06 2007-02-28 株式会社ルネサステクノロジ データ処理装置
US7167889B2 (en) 2003-05-12 2007-01-23 International Business Machines Corporation Decimal multiplication for superscaler processors
US7689641B2 (en) 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
JP2007034731A (ja) * 2005-07-27 2007-02-08 Toshiba Corp パイプラインプロセッサ
US7584237B1 (en) 2005-10-11 2009-09-01 Advanced Micro Devices, Inc. Fast hardware divider
US7912890B2 (en) 2006-05-11 2011-03-22 Intel Corporation Method and apparatus for decimal number multiplication using hardware for binary number operations
CN101178644B (zh) * 2006-11-10 2012-01-25 上海海尔集成电路有限公司 一种基于复杂指令集计算机结构的微处理器架构
US8051117B2 (en) 2007-04-26 2011-11-01 International Business Machines Corporation Shift significand of decimal floating point data
RU2417409C2 (ru) * 2009-01-27 2011-04-27 Межрегиональное общественное учреждение "Институт инженерной физики" Отказоустойчивый процессор
US8725786B2 (en) 2009-04-29 2014-05-13 University Of Massachusetts Approximate SRT division method
US9459868B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
JP5966764B2 (ja) 2012-08-22 2016-08-10 富士通株式会社 乗算装置及び乗算方法
JP5966763B2 (ja) 2012-08-22 2016-08-10 富士通株式会社 除算装置及び除算方法
CN104731551B (zh) * 2013-12-23 2018-02-16 浙江大华技术股份有限公司 基于fpga进行除法操作的方法及装置
US9524143B2 (en) * 2014-06-26 2016-12-20 Arm Limited Apparatus and method for efficient division performance
US10019229B2 (en) 2014-07-02 2018-07-10 Via Alliance Semiconductor Co., Ltd Calculation control indicator cache
US20160034256A1 (en) * 2014-08-01 2016-02-04 Imagination Technologies, Limited Fast integer division
US9747961B2 (en) * 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory

Also Published As

Publication number Publication date
TWI636397B (zh) 2018-09-21
US10235137B2 (en) 2019-03-19
MX2019003607A (es) 2019-06-17
US10241757B2 (en) 2019-03-26
RU2726147C1 (ru) 2020-07-09
JP6909284B2 (ja) 2021-07-28
IL264740B (en) 2021-02-28
ZA201902291B (en) 2021-04-28
SI3519939T1 (sl) 2020-07-31
CN109791478B (zh) 2023-05-26
KR20190060777A (ko) 2019-06-03
CA3036122A1 (en) 2018-04-05
WO2018060040A1 (en) 2018-04-05
US20180095724A1 (en) 2018-04-05
TW201816594A (zh) 2018-05-01
DK3519939T3 (da) 2020-04-27
AU2017333768B2 (en) 2020-07-09
US20180095725A1 (en) 2018-04-05
AU2017333768A1 (en) 2019-04-04
BR112019006622A2 (pt) 2019-07-02
EP3519939A1 (en) 2019-08-07
EP3519939B1 (en) 2020-03-25
KR102178288B1 (ko) 2020-11-12
CN109791478A (zh) 2019-05-21
LT3519939T (lt) 2020-05-11
PT3519939T (pt) 2020-05-15
HUE048701T2 (hu) 2020-08-28
JP2019530097A (ja) 2019-10-17

Similar Documents

Publication Publication Date Title
BR112021016156A2 (pt) Instrução de busca de vetor de string
BR112019006622B1 (pt) Método implementado por computador e sistema de computador para facilitar o processamento dentro de um ambiente computacional
ES2811033T3 (es) Instrucción de multiplicación y desplazamiento de decimales
US11442726B1 (en) Vector pack and unpack instructions
US11531546B2 (en) Hexadecimal floating point multiply and add instruction
US10990390B2 (en) Decimal load immediate instruction

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 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 21/09/2017, OBSERVADAS AS CONDICOES LEGAIS