BRPI1103258A2 - instruções para realizar uma operação em dois operandos e subsequentemente armazenar o valor original do operando - Google Patents
instruções para realizar uma operação em dois operandos e subsequentemente armazenar o valor original do operando Download PDFInfo
- Publication number
- BRPI1103258A2 BRPI1103258A2 BRPI1103258A BRPI1103258A BRPI1103258A2 BR PI1103258 A2 BRPI1103258 A2 BR PI1103258A2 BR PI1103258 A BRPI1103258 A BR PI1103258A BR PI1103258 A BRPI1103258 A BR PI1103258A BR PI1103258 A2 BRPI1103258 A2 BR PI1103258A2
- Authority
- BR
- Brazil
- Prior art keywords
- operand
- bit
- register
- result
- instruction
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
instruções para realizar uma operação em dois operando e subsequentemente armazenar o valor original do operando. uma instrução aritmética / lógica é executada com operandos de memória interligados, quando executados obtêm um segundo operando a partir de uma localização na memória, e salva uma cópia temporária do segundo operando, a execução realiza uma operação aritmética ou lógica baseada no segundo operando e um terceiro operando e armazena o resultado na localização de memória do segundo operando, e, posteriormente, armazena a cópia temporária em um primeiro registro.
Description
Relatório Descritivo da Patente de Invenção para: "INSTRUÇÕES PARA REALIZAR UMA OPERAÇÃO EM DOIS OPERANDOS E SUBSEQUENTEMENTE ARMAZENAR O VALOR ORIGINAL DO OPERANDO".
Campo da Invenção [0001] A presente invenção é relativa a sistemas de computador e, mais particularmente, para a funcionalidade do sistema de computador de instruções do processador. Antecedentes da Invenção [0002] Marcas: IBM® é uma marca registrada da International Business Machines Corporation, Armonk, Nova York, EUA S / 390, Z900, z990 e zlO e outros nomes de produtos podem ser marcas comerciais ou nomes de produtos da International Business Machines Corporation ou outras registadas empresas. [0003] A IBM criou através do trabalho de muitos engenheiros altamente talentosos que começam com máquinas conhecidas como Sistema 360 IBM® na década de 1960 até o presente, uma arquitetura especial que, devido à sua natureza essencial para um sistema de computação, ficou conhecido como " o mainframe ", cujos princípios do estado de operação a arquitetura da máquina por descrevendo as instruções que podem ser executadas sobre o" mainframes "execução das instruções que haviam sido inventados pelos inventores da IBM e adotados, por causa de sua contribuição significativa para a melhoria do estado de a máquina de computação representado por "mainframe", como contribuições significativas, por inclusão no Princípios de Operação da IBM como afirmado ao longo dos anos. A oitava edição do IBM® z / Architecture® Princípios de Operação, que foi publicado de fevereiro de 2009 tornou-se a referência publicado como padrão SA22-7832-07 e está implantada em servidores zlO® de mainframe da IBM, incluindo servidores Enterprise Class O sistema IBM zlO®. Os IBM z / Architecture® princípios de operação, Publicação SA22-7832-07 é aqui incorporada por referência na sua totalidade neste documento. [0004] Com referência à figura IA, componentes representativos de um sistema de computador host 50 são retratados. Outros arranjos de componentes também podem ser empregues num sistema de computador, os quais são bem conhecidos na arte. The Host representante Computer 50 compreende uma ou mais CPBs 1 em comunicação com a loja principal (memória de computador 2), bem como as interfaces 1/ O para dispositivos de armazenamento de 11 e 10 redes para se comunicar com outros computadores ou SANs e afins. A CPU 1 é compatível com uma arquitetura de ter arquitetado uma instrução definida e funcionalidade arquitetado. A CPU pode ter uma tradução de endereços de Dinâmica (DAT) 3 para transformar endereços de programa (endereços virtuais) em endereço real da memória. Um DAT inclui, tipicamente, um buffer de consulta da tradução (TLB) 7 para traduções de cache para que depois acede ao bloco da memória do computador 2 não necessitam de o atraso de tradução de endereços. Normalmente um cache 9 é empregada entre a memória do computador 2 e o processador 1 . O cache de 9 pode ser hierárquica tendo um grande cache disponível para mais de uma CPU e mais rápido (nivel inferior) menor, armazena em cache entre o cache grande e cada CPU. Em algumas implementações as caches de nivel mais baixo são divididos para fornecer caches de baixo nivel de instrução separadas para buscar e acessos de dados. Numa concretização, uma instrução é buscada a partir da memória 2 por uma unidade de busca de instruções 4 através de um cache 9. A instrução é descodificada numa unidade de descodificação de instruções (6) e entregue (com outras instruções em algumas concretizações) para unidades de execução de instruções 8. Tipicamente, várias unidades de execução 8 são empregues, por exemplo uma unidade de execução aritmética, uma unidade de execução de ponto flutuante e uma unidade de execução da instrução de ramo. A instrução é executada pela unidade de execução, o acesso a operandos de memória de instrução registos ou especificado, conforme necessário. Se um operando é para ser acedido (carregado ou armazenada) a partir da memória 2, uma unidade de armazenamento de carga de 5 processa tipicamente o acesso sob controlo da instrução serem executadas. As instruções podem ser executadas em hardware ou em circuitos microcódigo interno (firmware) ou por uma combinação de ambos. [0005] Na figura 1B, um exemplo de um sistema de computador host emulado 21 está previsto que emula um sistema de computador host 50 de uma arquitetura anfitrião. No sistema de computador host emulado 21, o processador (CPU) 1 é um processador host emulado (ou processador host virtual) e é composto por um processador de emulação de 27 ter uma arquitetura de conjunto de instruções nativa diferente do que o processador 1 do computador host 50. O sistema de computador central emulado 21 tem uma memória 22 acessível ao processador de emulação 27. Na concretização exemplificativa, a memória 27 é dividida numa porção de memória do computador anfitrião 2 e uma porção 23 de Emulação rotinas. The Host Computer Memory 2 está disponível para programas do host emulado Computer 21 de acordo com Anfitrião Arquitetura de Computadores. O processador de emulação 27 executa as instruções nativas de um conjunto de instruções arquitetado de uma arquitetura diferente daquele do processador emulado 1, as instruções nativas obtidos a partir da memória de emulação Rotinas 23, e pode aceder a uma instrução do host para a execução de um programa no Host Computer Memory 2 empregando uma ou mais instruções (s) obtido em uma Sequence & Acesso rotina / Descodificação que pode descodificar a instrução (s) hospedeiro acedido para determinar uma rotina de execução de instruções nativo para emular o funcionamento da instrução anfitrião acessada. Outras facilidades que são definidos para o anfitrião do Sistema de Computador 50 arquitetura pode ser emulado por arquitetado Instalações Rotinas, incluindo instalações como registos de uso geral, de controlo de registo e de tradução de endereços de dinâmica e 1/ 0 Subsistema de apoio e cache do processador, por exemplo. A emulação Rotinas também pode tirar proveito de função disponível no processador de emulação de 27 (como os registos gerais e tradução dinâmica de endereços virtuais) para melhorar o desempenho das rotinas de emulação. Também podem ser fornecidas hardware especial e off-load Motores para ajudar o processador 27 em emular a função do computador host 50. [0006] Em uma unidade central, instruções máquina arquitetados são utilizadas por programadores, normalmente hoje programadores de "C", muitas vezes por meio de uma aplicação de compilador. Estas instruções armazenadas no meio de armazenamento podem ser executados nativamente na z / Architecture da IBM Server, ou, em alternativa, máquinas que executam outras arquiteturas. Eles podem ser emulados em servidores IBM mainframe existentes e no futuro e em outras máquinas da IBM pSeries (por exemplo, servidores e os servidores xSeries). Eles podem ser executados em máquinas rodando Linux em uma ampla variedade de máquinas que utilizam hardware fabricado pela IBM, Intel, AMD ™, Sun Microsystems e outros . Além de execução em que o hardware sob uma Z / Architecture®, Linux pode ser utilizado, bem como as máquinas que utilizam emulação por Hercules, UMX, FSI (Fundamental Software, Inc) ou Platform Solutions, Inc. (PSI), que geralmente é em execução um modo de emulação. No modo de emulação, software de emulação é executado por um processador nativo para emular a arquitetura de um processador emulado. [0007] O processador nativo 27 normalmente executa software de emulação de 23 compreendendo ou firmware ou um sistema operacional nativo para executar a emulação do processador emulado. O software de emulação de 23 é responsável por buscar e executar instruções da arquitetura do processador emulado. O software de emulação de 23 mantém um contador de programa emulado para manter o controle de limites de instrução. O software de emulação de 23 pode obter uma ou mais instruções de máquina emulada de cada vez e converter as instruções de uma ou mais máquina emulada para um grupo correspondente de instruções nativas da máquina para execução pelo processador nativo 27. Estas instruções podem ser convertidas em cache de tal modo que uma conversão mais rápida pode ser realizada. Não obstante, o software de emulação deve manter as regras de arquitetura da arquitetura do processador emulado, de modo a assegurar os sistemas operacionais e aplicativos escritos para o processador emulado operar corretamente. Além disso, o software de emulação deve fornecer recursos identificados pelo emulado processador de 1 arquitetura, incluindo, mas não limitado a controlar registos, registos de uso geral, registros de ponto flutuante, a função de tradução de endereço dinâmico, incluindo tabelas de segmentos e tabelas de páginas, por exemplo, mecanismos de interrupção, mecanismos de troca de contexto , Hora do dia (TOD) relógios e interfaces arquitetado para subsistemas 1/ O de modo a que um sistema operacional ou um programa aplicativo projetado para ser executado no processador emulado, podem ser executados no processador nativo com o software de emulação. [0008] Uma instrução especifica a ser emulado é descodificado, e uma sub-rotina de chamada para executar a função da instrução individual. Uma função de software de emulação de 23 emulando uma função de um processador emulado 1 é implementado, por exemplo, numa sub-rotina de "C" ou do condutor, ou qualquer outro método de fornecimento de um controlador para o hardware especifico como estará dentro da habilidade daqueles na arte após a compreensão a descrição da concretização preferida. Vários software e emulação de hardware patentes, incluindo, mas não limitado a US 5551013 para uma "Multiprocessador para hardware de emulação" de Beausoleil et ai, e US6009261: pré-processamento de rotinas de alvo armazenados para emular instruções incompatíveis num processador alvo "de scalzi et al; . e US5574873: Decoding instrução convidado para acessar diretamente as rotinas de emulação que emulam as instruções de hóspedes, de Davidian et al; US6308255: ônibus multiprocessamento simétrico e chipset usado para suporte co-processador permitindo que o código não-nativo para ser executado em um sistema, de Gorishek et al; e US6463582: otimização dinâmica de código objeto tradutor para emulação de arquitetura e otimização objeto método de tradução de código dinâmico de Lethin et al; e US5790825: Método para emular instruções de hóspedes em um computador host através de recompilação dinâmica das instruções de acolhimento de Eric Traut; cada um dos anteriores aqui incorporadas por referência na sua totalidade. Estas referências ilustram uma variedade de modos conhecidos para alcançar a emulação de um formato de instrução arquitetados para uma máquina diferente para uma máquina de alvo disponível para os peritos na arte, assim como as técnicas de software comercial utilizadas pelos referenciados acima. [0009] O que é necessário é uma nova funcionalidade instrução consistente com a arquitetura existente que alivia a dependência de arquitetura recursos como os registos gerais, melhora a funcionalidade e desempenho de versões de software empregam a nova instrução.
Sumário [0010] Numa concretização, uma aritmética/ instrução lógica é executada, em que a instrução compreende um operando de memória interligados, a aritmética / instrução lógica que compreende um campo de código de operação, um primeiro campo de registo especificando um primeiro operando num primeiro registo, uma segunda registo campo especifica um segundo registo da localização segundo registo especificação de um segundo operando de memória, e um terceiro campo de registo especificando um terceiro registo, a execução da aritmética / instrução lógica compreende: a obtenção por um processador, um segundo operando a partir de uma localização na memória especificado pelo segundo registo, consistindo o segundo operando de um valor; a obtenção de um terceiro operando a partir do terceiro registo; executar um código de operação definido operação aritmética ou uma operação lógica com base no segundo operando obtido e o terceiro operando obtido para produzir um resultado; armazenando o resultado produzido no local na memória; e guardar o valor do segundo operando obtido no primeiro registo, em que o valor não é alterada por meio da execução da instrução. [0011] Numa concretização, um código de condição é guardada, o código de condição que indica o resultado é zero ou o resultado não é zero. [0012] Numa concretização, o código de operação definido operação aritmética é uma aritmética ou ADD lógico, e o código de operação definido operação lógica é qualquer um de um E, um OU-EXCLUSIVO, ou um OU, e a execução compreende: que responde ao resultado da operação lógica sendo negativo, poupando o código de condição que indica o resultado for negativo; responsivo para o resultado da operação lógica sendo positivo, poupando o código de condição que indica o resultado é positivo; e em resposta ao resultado da operação lógica ser um transbordamento, poupando o código de condição que indica o resultado é um estouro. [0013] Numa concretização, o tamanho seja especificado por operando o código de operação, em que um ou mais primeiros códigos de operação especificar operandos 32 bit e um ou mais códigos de operação segundo especificam operandos 64 bits. [0014] Numa concretização, a média aritmética / instrução lógica compreende ainda o código de operação que consiste em dois campos de código de operação separados, um primeiro campo de deslocamento e um segundo campo de deslocamento, em que a localização de memória é determinado pela adição de conteúdo do segundo registo de uma assinatura valor de deslocamento, o valor de deslocamento compreendendo um valor assinado estendido sinal do primeiro campo de deslocamento concatenado com o segundo campo de deslocamento. [0015] Numa concretização, a execução compreende ainda: que responde ao código de operação sendo um primeiro código de operação e do segundo operando não ser num limite de 32 bits, gerando uma exceção especificação; e em resposta ao código de operação sendo um segundo código de operação e do segundo operando não ser num limite de 64 bits, gerando uma exceção especificação. [0016] Numa concretização, o processador é um processador de um sistema multi-processador, e a execução compreende ainda: a obtenção do segundo operando compreendendo prevenir outros processadores do sistema multi-processador de aceder à localização na memória entre a referida obtenção de o segundo operando e armazenar um resultado, na segunda localização na memória; e sobre disse armazenando o resultado produzido, permitindo que outros processadores do sistema multi-processador para acessar o local na memória. [0017] O acima, bem como objetivos adicionais, características e vantagens concretizações serão evidentes na descrição seguinte escrito. [0018] Outras concretizações e aspectos são descritos em detalhe aqui e são consideradas como parte da invenção reivindicada. Para uma melhor compreensão das características e vantagens, referem-se à descrição e aos desenhos.
Breve Descrição dos Desenhos [0019] O assunto que é considerado como a invenção é particularmente salientado e distintamente reivindicado nas reivindicações no final da especificação. Os anteriores e outros objetivos, características e vantagens são evidentes a partir da seguinte descrição detalhada tomada em conjunto com os desenhos anexos, nos quais: [0020] A figura IA é um diagrama que descreve um exemplo sistema de computador central; A figura 1B é um diagrama que descreve um sistema de computador central exemplo emulação; A figura 1C é um diagrama que descreve um sistema de computador exemplo; A figura 2 é um diagrama que descreve um exemplo de rede de computadores; A figura 3 é um diagrama que descreve um elemento de um sistema de computador;
As figuras 4A-4C mostram elementos detalhados de um sistema informático;
As figuras 5A-5F retratam formato de instrução de máquina de um sistema informático;
As figuras 6A-6B mostram um exemplo de fluxo de uma concretização; e A figura 7 representa um exemplo de fluxo de interruptor contexto.
Descrição [0021] Uma concretização pode ser praticada por software (por vezes referido Código Interno Licenciado, firmware, Micro-código, Milli-código, Pico-código e semelhantes, qualquer um dos quais seria consistente com as concretizações). Com referência à figura IA, código de programa de software é normalmente acessado pelo processador também conhecido como CPU (Central Processing Unit) 1 do sistema 50 dos meios de armazenamento de longo prazo 7, tais como uma unidade de CD-ROM, unidade de fita ou disco rígido. O código de programa de software pode ser incorporado em qualquer de uma variedade de meios conhecidos para utilização com um sistema de processamento de dados, tais como um disquete, um disco rígido ou um CD-ROM. O código pode ser distribuído em tais meios, ou pode ser distribuído aos usuários da memória do computador 2 ou armazenamento de um sistema de computador através de uma rede de 10 a outros sistemas de computador para utilização por usuários de tais outros sistemas. [0022] Em alternativa, o código de programa pode ser incorporada na memória 2, e acedido pelo processador 1 utilizando a linha omnibus do processador. Tal código de programa inclui um sistema operativo que controla a função e a interação de vários componentes do computador e um ou mais programas de aplicação. Código de programa é normalmente paginada dos meios de armazenamento denso 11 de memória de alta velocidade 2, onde ele está disponível para processamento pelo processador 1. As técnicas e métodos para que contém o código de programa de software na memória, em meios físicos e / ou distribuição de código de software via redes são bem conhecidos e não irão ser mais discutidas aqui. Código do programa, quando criado e armazenado num suporte material (incluindo, mas não limitado a módulos eletrônicos de memória (RAM), memória flash, discos compactos (CDs), DVD, fita magnética e similares é muitas vezes referida como um "produto de programa de computador ". A forma do produto de programa de computador é tipicamente lido por um circuito de processamento, de preferência um sistema de computador para a execução pelo circuito de processamento. (0023] A figura 1C ilustra um sistema de hardware workstation ou servidor representante. 0 sistema 100 da figura 1C compreende um sistema de computador representativo 101, tal como um computador pessoal, estação de trabalho ou um servidor, incluindo dispositivos periféricos opcionais. O posto 101 de trabalho inclui um ou mais processadores 106 e um bus utilizado para ligar e permitir a comunicação entre o processador (s) 106 e os outros componentes do sistema 101 de acordo com técnicas conhecidas. O ônibus conecta o processador 106 a 105 de memória e armazenamento de longo prazo 107, que pode incluir uma unidade de disco rigido (incluindo qualquer um dos meios magnéticos, CD, DVD e memória flash por exemplo) ou uma unidade de fita, por exemplo. O sistema 101 também pode incluir um adaptador de interface de usuário, que conecta o microprocessador 106 através do bus para um ou mais dispositivos de interface, como um teclado 104, rato 103, uma impressora / scanner 110 e ou outros dispositivos / interface, que pode ser qualquer dispositivo de interface do usuário, como uma tela sensível ao toque, teclado de entrada digitalizada, etc. O ônibus também se conecta um dispositivo de exibição 102, tal como uma tela LCD ou monitor, para o microprocessador 106 através de um adaptador de video. [0024] O sistema 101 pode comunicar com outros computadores ou redes de computadores por meio de um adaptador de rede capaz de se comunicar com uma rede de 108 Exemplo 109. Adaptadores de rede são canais de comunicação, Token Ring, Ethernet ou modems. Em alternativa, o posto 101 de trabalho possa comunicar através de uma interface sem fios, tal como um cartão de CDPD (dados em pacote digital celular). A estação de trabalho 101 pode ser associado com tais outros computadores em uma rede local (LAN) ou uma rede de área ampla (WAN), ou a estação de trabalho 101 pode ser um cliente em um arranjo de cliente / servidor com outro computador, etc. Todos estas configurações, assim como as comunicações apropriadas hardware e software, são conhecidos na arte. [0025] A figura 2 ilustra uma rede de processamento de dados 200 na qual podem ser praticadas concretizações. A rede de processamento de dados 200 pode incluir uma pluralidade de redes individuais, tais como uma rede sem fios e uma rede com fios, cada uma das quais podem incluir uma pluralidade de estações de trabalho individuais 101 201 202 203 204. Além disso, como os peritos na arte apreciarão, uma ou mais redes locais podem ser incluídos, se for uma LAN pode compreender uma pluralidade de estações de trabalho inteligentes acoplados a um processador do host.
[0026] Ainda com referência à figura 2, as redes também podem incluir mainframes ou servidores, como um computador gateway (servidor do cliente 206) ou servidor de aplicação (servidor remoto 208 que pode acessar um repositório de dados e também pode ser acessado diretamente a partir de uma estação de trabalho 205). Um computador de gateway 206 serve como um ponto de entrada em cada rede 207. Um gateway é necessário ao conectar um protocolo de rede para outro. A porta de entrada 206 pode ser acoplado de um modo preferido a uma outra rede (Internet, por exemplo, 207) por meio de uma ligação de comunicações. A porta de entrada 206 pode também ser acoplado diretamente a uma ou mais estações de trabalho 101 201 202 203 204 utilizando uma ligação de comunicações. O computador gateway pode ser implementado utilizando um IBM eServer zSeries ™ z9® Servidor disponível da IBM Corp. [0027] código de programação de software é normalmente acessado pelo processador 106 do sistema 101 dos meios de armazenamento de longo prazo 107, como uma unidade de CD-ROM ou disco rígido. O código de software de programação pode ser incorporado em qualquer de uma variedade de meios conhecidos para utilização com um sistema de processamento de dados, tais como um disquete, um disco rígido ou um CD-ROM. O código pode ser distribuído em tais meios, ou pode ser distribuída aos usuários 210 211 da memória ou armazenamento de um sistema de computador através de uma rede para outros sistemas de computador para utilização por usuários de tais outros sistemas. [0028] Em alternativa, o código de programação 111 pode ser incorporada na memória 105, e acedido pelo processador 106 utilizando a linha omnibus do processador. Tal código de programação inclui um sistema operativo que controla a função e a interação de vários componentes do computador e um ou mais programas de aplicação 112. Programa de código é normalmente paginada dos meios de armazenamento 107 a densa memória de alta velocidade 105 onde se encontra disponível para o processamento pelo processador 106. As técnicas e os métodos que contém o código de programação para o software na memória, em meios fisicos e / ou distribuição de código de software, através de redes são bem conhecidos e não irão ser mais discutidas aqui. Código do programa, quando criado e armazenado num suporte material (incluindo, mas não limitado a módulos eletrônicos de memória (RAM), memória flash, discos compactos (CDs), DVD, fita magnética e similares é muitas vezes referida como um "produto de programa de computador " . A forma do produto de programa de computador é tipicamente lida por um circuito de processamento, de preferência um sistema de computador para a execução pelo circuito de processamento. [0029] O cache que é mais prontamente disponível para o processador (normalmente mais rápidos e menores do que os outros caches do processador) é a mais baixa (LI ou nível um) cache e loja principal (memória principal) é o cache de nível mais alto (L3 se há 3 níveis). O cache de nível mais baixo é frequentemente dividida em um cache de instrução (I—Cache) segurando instruções de máquina a ser executado e um cache de dados (D-Cache) segurando operandos de dados. [0030] Com referência à figura 3, uma concretização exemplar é descrita processador para o processador 106. Tipicamente um ou mais níveis de cache 303 são empregues para tamponar os blocos de memória, a fim de melhorar o desempenho do processador. O cache de 303 é um buffer de alta velocidade segurando linhas de cache de dados de memória que são susceptíveis de serem utilizados. Linhas de cache tipicas são 64, 128 ou 256 bytes de dados da memória. Caches separados são frequentemente utilizados para obter instruções de armazenamento em cache do que para os dados de cache. A coerência de cache (sincronização de linhas de cópias na memória e as caches) é muitas vezes fornecida por vários algoritmos "Snoop" bem conhecidos na arte. O armazenamento principal 105 de um sistema de processador é muitas vezes referido como um cache. Em um sistema de processador com 4 níveis de cache de 303 de armazenamento principal 105 é por vezes referido como o 5 (L5) cache de nivel, uma vez que é tipicamente mais rápida e apenas ocupa uma parte de armazenamento não-volátil (DASD, fita, etc.) que é acessível para um sistema de computador. Principais armazenamento 105 "caches" páginas de dados paginados dentro e fora da memória principal 105 pelo sistema operacional. [0031] Um programa counter (contador de instruções) 311 mantém o controle do endereço da instrução atual para ser executado. Um contador de programa no processador az / Arquitetura é 64 bits e pode ser truncado para 31 ou 24 bits para apoiar os limites anteriores de endereçamento. Um contador de programa é normalmente incorporado em um PSW (palavra de estado do programa) de um computador de tal forma que persiste durante a troca de contexto. Deste modo, um programa em curso, tendo um valor do contador do programa, pode ser interrompido, por exemplo, o sistema operativo (mudança de contexto a partir do ambiente do programa para o ambiente do sistema operativo) . A PSW do programa mantém o valor do contador do programa enquanto o programa não estiver ativo, e o contador de programa (no PSW) do sistema operacional é usado enquanto o sistema operacional está em execução. Tipicamente, o contador de programa é incrementado por um valor igual ao número de bytes de a instrução corrente. RISC (Reduced Instruction Set Computlng) instruções são geralmente de comprimento fixo, enquanto CISC (Complex Instruction Set Computlng) instruções são tipicamente comprimento variável. As instruções da IBM z / Architecture são instruções CISC tendo um comprimento de 2, 4 ou 6 bytes. O contador de programa 311 é modificado por qualquer uma operação de mudança de contexto ou uma filial tomadas operação de uma instrução de desvio, por exemplo. Em uma operação de mudança de contexto, o valor de contador de programa atual é salvo em um Estado de programa do Word (PSW), juntamente com outras informações de estado sobre o programa que está sendo executado (como códigos de condição), e um novo valor do contador de programa é carregado apontando para uma instrução de um novo módulo de programa para ser executado. Uma operação de desvio tomado é realizada a fim de permitir que o programa de tomar decisões ou ciclo dentro do programa, carregando o resultado da instrução de ramificação no contador de programa 311. (0032] Tipicamente uma instrução Fetch Unidade 305 é empregado para obter instruções em nome do processador 106. A unidade de busca tanto busca "próximas instruções sequenciais", instruções alvo de desvio tomado instruções, ou primeiras instruções de um programa na sequência de uma troca de contexto. Unidades de busca de instrução modernos costumam empregar técnicas de pré-busca para especulativamente que as instruções PREFETCHED pode ser usado instruções de pré-busca com base na probabilidade. Por exemplo, uma unidade de busca pode buscar 16 bytes de instrução que inclui a instrução sequencial seguinte e bytes adicionais de mais instruções sequenciais. [0033] As instruções são buscadas em seguida, executado pelo processador 106. Numa concretização, a instrução buscada(s) é passada para uma unidade de envio 306 da unidade de busca. A unidade de expedição descodifica a instrução (s) e encaminha a informação sobre a instrução descodificado (s) para 307 unidades apropriadas 308 310. Uma execução unidade 307 irá tipicamente receber informações sobre instruções aritméticas descodificados a partir da unidade de busca de instruções 305 e irá executar operações aritméticas sobre operandos de acordo com o código de operação da instrução. Operandos são fornecidos para a unidade de execução 307 de um modo preferido, quer a partir da memória 105, arquitetados registos 309 ou a partir de um campo de imediato a instrução a ser executada. Resultados da execução, quando armazenado, são armazenados na memória 105, registra 309 ou em outro hardware da máquina (como registros de controle, registros PSW e similares) . [0034] Um processador 106 tem, tipicamente, uma ou mais unidades de execução 307 308 310 para executar a função da instrução. Com referência à figura 4A, uma unidade de execução 307 pode comunicar com arquitetado geral registra 309, uma unidade de decodifreação / expedição 306 uma unidade de armazenamento de carga 310 e outras unidades do processador 401 por meio de interface lógica 407. Uma unidade de Execução 307 pode empregar vários circuitos de registo de 403 404 405 para armazenar informações que a unidade lógica aritmética (ALU) 402 irá operar. A ALU executa operações aritméticas tais como adicionar, subtrair, multiplicar e dividir, bem como função lógica, como e, ou e exclusiva-ou (xor), rodar e turno. De preferência, a ALU suporta operações especializadas que são dependentes design. Outros circuitos podem fornecer outras instalações arquitetado 408, incluindo códigos de condição e lógica de sustentação da recuperação, por exemplo. Tipicamente, o resultado de uma operação ALU é realizada num circuito de registo de sarda 406 que pode transmitir o resultado de uma variedade de outras funções de processamento. Existem muitos arranjos de unidades de processador, a presente descrição destina-se apenas a proporcionar uma compreensão representativa de uma concretização. [0035] Uma instrução ADD por exemplo seria executado em uma unidade de execução 307 tendo aritmética lógica e funcionalidade enquanto uma instrução de ponto flutuante por exemplo seria executado em uma execução de ponto flutuante tendo-se especializado flutuante capacidade Point. De um modo preferido, uma unidade de execução opera em operandos identificados por uma instrução de execução de uma função definida opcode nos operandos. Por exemplo, uma instrução ADD pode ser executado por uma unidade de execução 307 nos operandos encontrados em dois registos 309 identificados por campos registo das instruções. [0036] A unidade de execução 307 executa a adição aritmética sobre dois operandos e armazena o resultado em um terceiro operando em que o terceiro operando pode ser um terceiro registo ou um dos dois registos de código. A unidade de execução utiliza de preferência uma Unidade Lógica Aritmética (ALU) 402 que é capaz de executar uma variedade de funções lógicas, como Shift, Girar, AND, OR e XOR, bem como uma variedade de funções algébricas, incluindo qualquer um adicionar, subtrair, multiplicar, dividir. Alguns ALUs 402 são projetados para operações escalares e alguns para ponto flutuante. Os dados podem ser Endian grande (onde o byte menos significativo é o mais elevado no endereço de byte) ou Little Endian (onde o byte menos significativo é o menor endereço de byte) dependendo da arquitetura. A IBM z / Architecture é Big Endian. Campos assinados pode ser sinal e magnitude, complemento de 1 ou complemento de 2 dependendo da arquitetura. Um número 2 do complemento é vantajosa na medida em que a ALU não precisam de conceber uma capacidade desde subtrair um valor negativo ou um valor positivo em complemento de 2 e requer apenas a adição dentro ALU. Os números são comumente descritos em taquigrafia, onde um campo de 12 bits define um endereço de um bloco de 4096 bytes e é comumente descrito como um bloco de 4 Kbyte (Kilo bytes) por exemplo. [0037] Com referência à figura 4B, Ramo informações de instruções para a execução de uma instrução de desvio normalmente é enviada para uma unidade de ramificação 308 que muitas vezes emprega um algoritmo de previsão de desvios, como uma tabela histórico de ramificação 432 para prever o resultado do ramo antes de outras operações condicionais estão completos. 0 alvo da instrução de desvio atual será obtido e especulativamente executado antes das operações condicionais estão completos. Quando as operações condicionais são concluídas as instruções de desvio especulativamente executadas são concluidos ou descartadas com base nas condições da operação condicional e os resultados especulado. Uma instrução tipica sucursal pode testar códigos de condição e ramificar para um endereço de destino se os códigos de condição cumprir a exigência ramo da instrução de desvio, um endereço de destino pode ser calculado com base em vários números, incluindo os encontrados em campos de registro ou um campo imediato da instrução por exemplo. A unidade de ramificação 308 pode empregar uma ALU 426 tendo uma pluralidade de circuitos de entrada de registo 427 428 429 e um circuito de registo de saída 430. O ramo unidade 308 pode comunicar com registos gerais 309, decodificação unidade de despacho 306 ou outros circuitos 425, por exemplo. [0038] A execução de um conjunto de instruções pode ser interrompida por uma variedade de razões, incluindo um comutador de contexto iniciada por um sistema operativo, uma exceção de programa ou de erro causando uma mudança de contexto, um sinal de interrupção de 1/ O que causa uma mudança de contexto ou múltiplas atividade -Threading de uma pluralidade de programas (em um ambiente multi-threaded), por exemplo. De preferência, uma ação de mudança de contexto salva informações de estado sobre um programa atualmente em execução e, em seguida, carrega informações de estado sobre outro programa que está sendo chamado. Informações de estado podem ser salvos em registros de hardware ou na memória, por exemplo. Informações sobre o estado de preferência, compreende um valor de contador de programa apontando para uma próxima instrução a ser executada, códigos de condição, a informação tradução memória e conteúdo do registro arquitetado. A atividade de troca de contexto pode ser exercida por circuitos de hardware, programas aplicativos, programas de sistema operacional ou código de firmware (microcódigo, pico-código ou código interno licenciado (LIC), isoladamente ou em combinação. [0039] Um processador acede a operandos de instrução de acordo com os métodos definidos. A instrução pode fornecer um operando imediato usando o valor de uma parte da instrução, pode fornecer um ou mais campos de registradores explicitamente apontando para quer registos de uso geral ou de registos para fins especiais (registradores de ponto flutuante por exemplo). A instrução pode utilizar registos implícitas identificados por um campo opcode como operandos. A instrução pode utilizar locais de memória para operandos. A localização da memória de um operando pode ser fornecida por um registo, um campo de imediato, ou uma combinação de registros e campo imediato como exemplificado pelo / Arquitetura facilidade z longo deslocamento em que a instrução define um registo Base, um registrador de índice e um campo imediato (campo de deslocamento), que são adicionados em conjunto para fornecer o endereço do operando na memória, por exemplo. Localização aqui tipicamente implica uma posição na memória principal (memória principal), salvo indicação em contrário. [0040] Com referência à figura 4C, um processador de acessos de armazenamento utilizando uma unidade de carga / loja 310. A unidade de carga / loja 310 pode executar uma operação de carregamento, obtendo o endereço do operando de destino na memória 303 e carregar o operando num registo 309 ou outro local de memória 303, ou pode executar uma operação de armazenamento, obtendo o endereço do operando de destino na memória 303 e o armazenamento de dados obtidos a partir de um registo 309 ou outra localização de memória 303 na localização alvo operando na memória 303. A Carga / unidade 310 da loja pode ser especulativo e pode memória de acesso em uma sequência que está fora de ordem em relação à sequência de instruções, no entanto, a unidade de carga / loja 310 deve manter a aparência de programas que as instruções foram executadas em ordem. A unidade de carga / loja 310 pode comunicar com registos gerais 309, unidade 306, Cache / interface de memória 303 ou outros elementos 455 e compreende vários circuitos de registo, ALUs 458 e controle de lógica 463 para calcular endereços de armazenamento e fornecer gasoduto sequenciamento para decodificar / expedição manter as operações em ordem. Algumas operações podem estar fora de ordem, mas a unidade de carga / loja fornece a funcionalidade para fazer a fora de operações a fim de aparecer para o programa como tendo sido realizada, a fim, como é bem conhecido na arte. [0041] De preferência, aborda um programa de aplicação que "vê" são muitas vezes referidos como endereços virtuais. Endereços virtuais são muitas vezes referidos como "endereços lógicos" e "endereços eficazes". Estes endereços virtuais são virtuais em que eles são redirecionados para localização de memória fisica por um de uma variedade de tradução de endereços de Dinâmica (DAT) 312 tecnologias, incluindo, mas não limitado a simplesmente prefixar um endereço virtual com um valor de deslocamento, a tradução do endereço virtual através de uma ou mais tabelas de conversão, as tabelas de conversão de um modo preferido, compreendendo, pelo menos, uma tabela de segmentos e uma tabela de página isoladamente ou em combinação, de um modo preferido, a tabela de segmento que tem um apontador para a entrada da tabela da página. Em arquitetura z / Architecture, uma hierarquia de tradução é fornecida incluindo uma tabela de primeira região, uma segunda tabela de regiões, uma região terceira tabela, uma tabela de segmentos e uma tabela de página opcional. O desempenho da tradução de endereço é frequentemente melhorado através da utilização de um Look-aside Buffer de Tradução (TLB) que compreende entradas de mapeamento um endereço virtual para um local associado memória fisica. As entradas são criadas quando DAT 312 traduz um endereço virtual utilizando as tabelas de conversão. Uso subsequente do endereço virtual pode, então, utilizar a entrada do rápido TLB, em vez de a tabela de tradução sequencial lento acessos. TLB conteúdo pode ser gerido por uma variedade de algoritmos de substituição, incluindo LRU (Least Recently Used). [0042] No caso em que o processador é um processador de um sistema multi-processador, cada processador tem a responsabilidade de manter os recursos partilhados, tais como 1/ O, caches, TLBs e Memória interligados por coerência. Tipicamente tecnologias "snoop" irá ser utilizado para manter a coerência de cache. Em um ambiente de Snoop, cada linha de cache pode ser marcada como estando em qualquer uma de um estado comum, um estado exclusivo, um estado alterado, um estado inválido e semelhantes, a fim de facilitar a partilha. [0043] Unidades de 1/ O 304 fornecem ao processador meios para fixação em dispositivos periféricos, incluindo Tape, Disco, impressoras, monitores e redes, por exemplo. As unidades 1/ O são frequentemente apresentadas para o programa de computador por drivers de software. Em Mainframes como az/ Series da IBM, Canal adaptadores e adaptadores Abra System são unidades de E / S do Mainframe que fornecem as comunicações entre o sistema operacional e os dispositivos periféricos. [0044] A seguinte descrição do z / Arquitetura Princípios de Operação descreve uma visão de arquitetura de um sistema de computador: ARMAZENAMENTO: [0045] Um sistema de computador inclui informações no armazenamento principal, bem como abordar, proteção e de referência e gravação de mudança. Alguns aspectos da abordagem incluem o formato de endereços, o conceito de espaços de endereço, os vários tipos de endereços, e a maneira pela qual um tipo de endereço é traduzido para um outro tipo de endereço. Alguns de armazenamento principal inclui permanentemente atribuído locais de armazenamento. Armazenamento principal fornece ao sistema de armazenamento de acesso rápido diretamente endereçável de dados. Ambos os programas e dados deve ser carregado na memória principal (a partir de dispositivos de entrada), antes de poderem ser processados. [0046] armazenamento principal pode incluir um ou mais menores, armazéns intermediário de acesso mais rápido, às vezes chamados de caches. Uma memória cache é tipicamente associada fisicamente com uma CPU ou um processador de 1/ O. Os efeitos, exceto no desempenho, da construção fisica e uso de mídia de armazenamento distinta geralmente não são visiveis para o programa. [0047] caches separadas pode ser mantida para instruções e operandos de dados. Informações dentro de um cache é mantido em bytes contíguos em um limite integrante chamado de bloco de cache ou linha de cache (ou linha, para abreviar). Um modelo pode fornecer uma instrução ATRIBUTO EXTRACTO CACHE que devolve o tamanho de uma linha de cache em bytes. A modelo também pode fornecer dados e PREFETCH PREFETCH DADOS instruções relativo a longo que afeta a pré-busca de armazenamento em cache de dados ou instrução ou a liberação de dados a partir do cache. [0048] 0 armazenamento é visto como uma cadeia de bits de comprimento horizontal. Para a maioria das operações, os acessos para o armazenamento numa sequência da esquerda para a direita. A sequência de bits é subdividida em unidades de oito bits . Uma unidade de oito bits é chamada um byte, que é o bloco de construção básico de todos os formatos de informação. Cada localização de byte no armazenamento é identificada por um número inteiro não negativo original, o qual é o endereço da localização de byte que ou, simplesmente, o endereço de byte. Localizações de byte adjacentes têm endereços consecutivos, começando com 0 do lado esquerdo e do processo numa sequência da esquerda para a direita. Endereços são inteiros binários não assinados e são 24, 31, ou 64 bits. [0049] A informação é transmitida entre o armazenamento e uma CPU ou um subsistema de canal de um byte, ou um grupo de bytes, de cada vez. A menos que de outro modo especificado, um grupo de bytes de armazenamento é endereçado pelo byte mais à esquerda do grupo. O número de bytes no grupo está implícito ou explicitamente especificado pela operação a ser executada. Quando utilizado numa operação de CPU, um grupo de bytes é chamado um campo. Dentro de cada grupo de bytes, os bits são contados numa sequência da esquerda para a direita. Os bits mais à esquerda são por vezes referido como "os bits de alta ordem" e os bits mais à direita como os bits "low— ordem". Bit números não são endereços de armazenamento, no entanto. Somente bytes podem ser abordados. Para operar em pedaços individuais de um byte em armazenamento, que é necessário para aceder a todo o byte. Os bits de um byte são numerados de 0 a 7, da esquerda para a direita. Os bits em um endereço podem ser numerados 8-31 ou 40-63 para endereços de 24 bits ou 1-31 ou 33-63 para endereços de 31 bits; eles são numerados 0-63 para endereços de 64 bits. Dentro de qualquer outro formato de comprimento fixo de bytes múltiplos, os bits que constituem o formato são numerados consecutivamente a partir de 0 . Para fins de detecção de erro, e em preferência para corrigir, um ou mais bits de verificação podem ser transmitidos com cada byte ou com um grupo de bytes. Esses bits de verificação são gerados automaticamente pela máquina e não pode ser controlado diretamente pelo programa. Capacidade de armazenamento são expressos em número de bytes. Quando o comprimento de um campo de armazenamento-operando é implicado pelo código de operação de uma instrução, o campo é dito que tem um comprimento fixo, que pode ser uma, duas, quatro, oito, dezesseis ou bytes. Campos maiores podem ser implícita para algumas instruções. Quando o comprimento de um campo de armazenamento operandos não está implícita, mas é afirmado explicitamente, o campo é dito ter um comprimento variável. Operandos de comprimento variável pode variar em comprimento, por incrementos de um byte.
Quando a informação é colocada em armazém, o conteúdo de apenas aqueles locais de byte que são substituídos estão incluídos no campo designado, mesmo que a largura do caminho físico ao armazenamento pode ser maior do que o comprimento do campo a ser armazenado. [0050] Certas unidades de informação deve estar em um limite de integrante no armazenamento. Um limite é chamado integrante para uma unidade de informação quando o seu endereço de armazenamento é um múltiplo do comprimento da unidade em bytes. Nomes especiais são dadas aos campos de 2, 4, 8 e 16 bytes em um limite integral. A halfword é um grupo de dois bytes consecutivos em um limite de dois bytes e é o bloco de construção básico de instruções. Uma palavra é um grupo de quatro bytes consecutivos em um limite de quatro bytes . Uma palavra dupla é um grupo de oito bytes consecutivos em um limite de oito bytes . Um quadword é um grupo de 16 bytes consecutivos em um limite de 16 bytes . Quando os endereços de armazenamento designar meias palavras, palavras, palavras duplas, e quadwords, a representação binária do endereço contém um, dois, três, quatro ou mais à direita zero bits, respectivamente. As instruções devem estar em limites de dois bytes integrais. Os operandos de armazenamento da maioria das instruções não têm requisitos de limite de alinhamento. [0051] Nos modelos que implementam caches separados para instruções e operandos de dados, um atraso significativo pode ser experimentado se o programa armazena em uma linha de cache a partir do qual as instruções são posteriormente buscado, independentemente de a loja altera as instruções que são posteriormente buscado. INSTRUÇÕES: [0052] Tipicamente, funcionamento da CPU é controlado por instruções de armazenamento em que são executadas sequencialmente, um de cada vez, esquerda para a direita numa sequência ascendente de endereços de armazenamento. Uma mudança na operação sequencial pode ser causada por ramificação, PSW CARGA, interrupções, as ordens de processador de sinal, ou uma intervenção manual. [0053] De preferência, uma instrução compreende duas partes principais: • Um código de operação (código op), que especifica a operação a ser realizada • Opcionalmente, a designação dos operandos que participam. [0054] formatos de instruções do z / Architecture são mostrados na figura 5A-5F. Uma instrução pode simplesmente fornecer um código de operação 501, ou um código de operação e uma variedade de campos, incluindo operandos imediatos ou registar-se especificadores para localizar operandos em registos ou na memória. O código de operação pode indicar a que os recursos do hardware (operandos implícitos, etc.) devem ser utilizadas, tais como um ou mais específicos registos de uso geral (GPRS). Operandos podem ser agrupadas em três classes: operandos localizados em registos, operandos imediatos, e operandos em armazenamento. Operandos pode ser explicita ou implicitamente designado. Registre-se operandos podem ser localizados em geral, registradores de ponto flutuante, de acesso, ou de controle, com o tipo de registro identificada pelo código op. O registo contendo o operando é especificado por meio da identificação do registo em um campo de quatro-bits, chamado o campo R, na instrução. Para algumas instruções, um operando está localizado num registo designado implicitamente, o registo sendo implícito o código op. Operandos imediatos estão contidos dentro da instrução, e o, 16 bits ou 32 bits de campo de 8 bits contendo o operando imediato é chamado o campo I. Operandos em armazenamento pode ter um comprimento implícita; ser especificado por uma máscara de bits; ser especificado pela especificação de um comprimento de quatro bits ou oito bits, denominada o dominio G, na instrução; ou tem um comprimento especificado pelo conteúdo de um ficheiro geral. Os endereços de operandos em armazenamento são especificados por meio de um formato que usa os conteúdos de um ficheiro geral como parte do endereço. Isto faz com que seja possível: 1. Especifique um endereço completo usando uma notação abreviada 2 . Execute manipulação endereço utilizando as instruções que empregam registos gerais de operandos 3. Modifique os endereços de programa significa sem alteração do fluxo de instrução 4. Operar independente da localização das áreas de dados, utilizando diretamente endereços recebidos a partir de outros programas [0055] O endereço usado para se referir ao armazenamento quer está contido num registo designado pelo campo R na instrução ou é calculada a partir de um endereço de base, índice e deslocamento, indicada pelas B, campos X, e D, respectivamente, na instrução. Quando a CPU está no modo de acesso de registo, um campo B ou R pode designar um registo de acesso para além de ser utilizado para especificar um endereço. Para descrever a execução das instruções, os operandos são de preferência designados por primeiro e segundo operandos e, em alguns casos, terceiro e quarto operandos. Em geral, dois operandos participar numa execução de instruções, e o resultado substitui o primeiro operando. [0056] Uma instrução é uma, duas, ou três meias palavras de comprimento e deve estar localizado no armazenamento em um limite de halfword. Fazendo referência às figuras 5A - 5F que descreve formatos de instrução, cada instrução está em um dos 25 formatos básicos: E 501, I 502, RI 503 504, RIE 505 551 552 553 554, RIL 506 507, RIS 555, RR 510, RRE 511, RRF 512 513 514, RRS, RS 516 517, RSI 520, RSL 521, RSY 522 523, RX 524, RXE 525, RXF 526, RXY 527, S 530, SI 531, SIL 556, SIY 532, SS 533 534 535 536 537, SSE 541 e 542 SSF, com três variações de RRF, dois de RI, RIL, RS, e RSY, cinco dos RIE e SS . [0057] Os nomes de formato indicam, em termos gerais, as classes de operandos que participam na operação e alguns detalhes sobre campos: • RIS indica uma operação de registo-and-imediata e uma operação de armazenamento. • RRS indica uma operação de registo-and-registo e uma operação de armazenamento. • SIL indica uma operação de armazenamento-e-imediato, com um campo de 16 bits imediato. [0058] Na I, RR, RS, formatos RSI, RX, SI, e da SS, o primeiro byte de uma instrução contém o código op. No e, RRE, RRF, S, SIL, e formatos SSE, os dois primeiros bytes de uma instrução conter o código op, exceto que, para algumas instruções no formato S, o código de operação é somente no primeiro byte. Nos formatos de RI e RIL, o código de operação é, no primeiro byte e posiciona bits 12-15 de uma instrução. No RIE, RIS, RRS, RSL, RSY, RXE, RXF, RXY e formatos Siy, o código op é no primeiro byte eo sexto byte de uma instrução. Os dois primeiros bits do primeiro ou único byte do código op especificar o comprimento e o formato da instrução, como segue: [0059] No RR, RRE, RRF, RRR, RX, RXE, RXF, RXY, RS, formatos RSY, RSI, RI, RIE e RIL, o conteúdo do registo designado pela Rl. campo são chamados o primeiro operando. O registo com o primeiro operando é por vezes referido como o "primeiro local operando", e às vezes como "registo Rl". No RR, RRE, DRR e RRR formatos, o campo R2 designa o registo com o segundo operando, eo campo R2 podem designar o mesmo registo como Rl . Nos RRF, RXF, RS, RSY, RSI, RIE e formatos, a utilização do campo R3 depende da instrução. Na RS e formatos RSY, o campo R3 podem em vez disso ser um campo M3 especificando uma máscara. O campo R designa um registo geral ou de acesso nas instruções gerais, de um registo geral nas instruções de controle, e um registo de ponto flutuante ou um registo geral nas instruções de ponto flutuante. Para registos gerais e de controlo, o registo é operando nas posições de bits 32-63 do registo de 64 bits ou ocupa todo o registo, dependendo da instrução. [0060] No formato I, o conteúdo do campo de dados imediata- a oito bits, o campo i da instrução, são utilizados diretamente como operando. No formato de SI, o conteúdo do campo de dados imediata- a oito bits, o campo de 12 de instruções, são utilizados diretamente como o segundo operando. A BI e Dl campos especificam o primeiro operando, que é um byte de comprimento. No formato SIY, o funcionamento é o mesmo, exceto que os campos DH1 e DL1 são usados em vez de um campo Dl . No formato RI para as instruções ADD halfword IMEDIATA, COMPARAR halfword IMEDIATA, CARGA halfword IMEDIATA, e multiplicar halfword imediato, o conteúdo do campo de 12 de 16 bits da instrução são usados diretamente como um binário inteiro assinado, e o campo especifica RI o primeiro operando, que é de 32 ou 64 bits de comprimento, dependendo da instrução. Para o teste de instrução sob máscara (TMHH, TMHL, TMLH, TM11), o conteúdo do campo de 12 são usados como uma máscara, e o campo R 1 especifica o primeiro operando, que é de 64 bits de comprimento. [0061] Para as instruções INSERIR IMEDIATA, e imediata, ou imediato, e carregar LÓGICO imediato, o conteúdo do campo 12 são usados como um binário inteiro sem sinal ou um valor lógico, e o campo RI especifica o primeiro operando, que é de 64 bits de comprimento. Para as instruções de ramo relativa nos formatos RI e RSI, o conteúdo do campo de 12 de 16 bits são utilizados como um binário inteiro assinado designa um número de meias palavras. Este número, quando adicionado ao endereço da instrução de ramificação, especifica o endereço do ramo. Para instruções de ramo relativa no formato RIL, o campo 12 é de 32 bits e é usado da mesma maneira. [0062] Para as instruções de ramo relativa nos formatos RI e RSI, o conteúdo do campo de 12 de 16 bits são utilizados como um binário inteiro assinado designa um número de meias palavras. Este número, quando adicionado ao endereço da instrução de ramificação, especifica o endereço do ramo. Para instruções de ramo relativa no formato RIL, o campo 12 é de 32 bits e é usado da mesma maneira. Para as instruções RIE formato COMPARAR parente imediato e ramo e COMPARAR LÓGICO parente imediato e filial, o conteúdo do campo 12 8-bit é utilizado diretamente como o segundo operando. Para as instruções RIE formato COMPARAR IMEDIATA e ramo, COMPARAR URGENTES E TRAP, COMPARAR LÓGICO IMEDIATA e ramo, e COMPARAR LÓGICO TRAP IMEDIATO E, o conteúdo do campo de 12 de 16 bits são usados diretamente como o segundo operando. Para o RIE formato instruções COMPARAR e ramo relativo, COMPARAR parente imediato e ramo, COMPARAR RELATIVA lógico e FILIAL, e COMPARAR LÓGICO parente imediato e filial, o conteúdo do campo de 14 de 16 bits são usados como um binário inteiro assinado que designa um número de meias palavras que são adicionados ao endereço da instrução para formar o endereço de ramo. [0063] Para o RIL-format instruções ADD IMEDIATA, ADD LÓGICO IMEDIATA, ADD LÓGICO COM ASSINADO IMEDIATA, COMPARAR IMEDIATA, COMPARAR LÓGICO IMEDIATA, carga imediata, e multiplicar ÚNICO imediato, o conteúdo do campo de 12 de 32 bits são usados diretamente como um segundo operando. [0064] Para as instruções RIS-formato, o conteúdo do campo de 12 de 8 bits são utilizados diretamente como o segundo operando. No formato SIL, o conteúdo do campo de 12 de 16 bits são utilizados diretamente como o segundo operando. A BI e Dl campos especificam o primeiro operando, como descrito abaixo. [0065] Na RSL, SI, SIL, SSE, e a maioria dos formatos de SS, o conteúdo do registo geral designado pelo campo BI são adicionados ao conteúdo do campo de Dl a formar o endereço do primeiro operando. Na RS, RSY, S, Siy, SS, e formatos SSE, o conteúdo do registo geral designado pelo campo B2 são adicionados ao conteúdo do campo ou campos DH2 D2 e DL2 para formar o endereço do segundo operando. Nos formatos de RX, RXE, RXF, e rxy, os conteúdos dos registos gerais designados por X2 e campos B2 são adicionados ao conteúdo do campo ou campos DH2 D2 e DL2 para formar o endereço do segundo operando. Nos formatos e RIS RRS, e num formato SS, o conteúdo do registo geral designado pelo campo B4 são adicionados ao conteúdo do campo de D4 para formar o endereço do operando de quarta. [0066] No formato SS com um campo de comprimento único, de oito bits, para as instruções E (NC), exclusivo ou (XC), mova (MVC), mova numéricos, as zonas de movimento, e OU (OC), L especifica o número de bytes operando adicional para a direita do byte designado pelo endereço do primeiro operando. Portanto, o comprimento em bytes do primeiro operando 1-256 é, correspondente a um código de comprimento em L de 0-255. Resultados de armazenamento substituir o primeiro operando e nunca são armazenados fora do campo especificado pelo endereço de e comprimento. Neste formato, o segundo operando tem o mesmo comprimento que o primeiro operando. Há variações da definição anterior que se aplicam a editar, editar e MARK, PACK ASCII, UNICODE PACK, traduzir, Tradução e ensaio, ASCII UNPACK, e UNPACK Unicode. [0067] No formato SS com dois campos de comprimento, e no formato RSL, LI especifica o número de bytes de operandos adicionais à direita do byte designado pelo endereço do primeiro operando. Portanto, o comprimento em bytes do primeiro operando é 1-16, que corresponde a um código de comprimento de 0-15 em LI . Da mesma forma, L2 especifica o número de bytes de operandos adicionais à direita do local designado pelos resultados de endereço do segundo operando substituir o primeiro operando e nunca são armazenados fora do campo especificado pelo endereço e comprimento. Se o primeiro operando é mais longo do que o segundo, o segundo operando é estendido sobre a esquerda com zeros até o comprimento do primeiro operando. Esta extensão não modifica o segundo operando no armazenamento. No formato de SS com dois campos R, como utilizadas pelo MOVE TO PRIMARY, o MOVE para o secundário, e mover-se com instruções chave, o conteúdo do registo geral especificado pelo campo RI é um valor sem sinal de 32 bits chamado o comprimento verdadeiro. Os operandos são ambos de um chamado comprimento, o comprimento efetivo. 0 comprimento efetivo é igual ao comprimento real ou 256, o que for menor. As instruções definir o código de condição para facilitar a programação de um ciclo para mover o número total de bytes especificado pelo comprimento real. O formato SS com dois campos de P também é usado para especificar um intervalo de registros e dois operadores de armazenamento para a instrução disjuntos MÚLTIPLO DE CARGA e para especificar um ou dois registros e um ou dois operadores de armazenamento para a instrução de operação Execute bloqueado. [0068] Um zero em qualquer um dos Bl, B2, X2, ou campos B4 indica a ausência do componente de endereço correspondente. Para o componente ausente, um zero é usado informando a soma intermediário, independentemente do conteúdo do registo geral 0 . Um deslocamento de zero, não tem significado especial. [0069] Bits 31 e 32 da PSW atual são os bits de modo addressing-. Bit 31 é o bit de modo estendido- endereçamento, e mordeu 32 é o bit-modo básico de endereçamento. Estes bits de controlar o tamanho do endereço efetivo produzido pela geração de endereços.
Quando os bits 31 e 32 da corrente PSW ambos são zeros, a CPU está no modo de endereçamento de 24 bits, e de instruções de 24 bits e operando endereços eficazes são gerados. Quando o bit 31 da PSW corrente é zero e o bit 32 é um, a CPU está no modo de endereçamento de 31 bits, e de instrução de 31 bits e endereços de operandos eficazes são gerados. Quando os bits 31 e 32 da PSW atual são tanto um, a CPU está no modo de endereçamento de 64 bits, e de instruções de 64 bits e operando endereços eficazes são gerados. Execução de instruções do CPU envolve geração de endereços de instruções e operandos. [0070] Quando uma instrução é buscada a partir do local designado pela atual PSW, o endereço da instrução é aumentada pôr o número de bytes de instrução, e a instrução é executada. Os mesmos passos são então repetidos usando o novo valor do endereço da instrução para buscar a próxima instrução na sequência. No modo de endereçamento de 24 bits, endereços de instrução envolver em torno de, com a meia palavra no endereço de instrução 224 - 2 a ser seguido pelo halfword no endereço de instrução 0. Assim, no modo de endereçamento de 24 bits, de realizar qualquer posição de bit 104 PSW, como resultado de atualizar o endereço de instrução, é perdido. Na 31-bit ou 64-bit modo de endereçamento, endereços de instrução semelhante envolver em torno, com o halfword no endereço instrução 231-2 ou 264-2, respectivamente, seguido pelo halfword no endereço instrução 0. A realização de posição pouco PSW 97 ou 64, respectivamente, é perdido. [0071] Um endereço operando que se refere ao armazenamento é derivado de um valor intermediário, o que quer está contido num registo designado por um campo R na instrução ou é calculada a partir da soma de três números binários: endereço de base, indice e deslocamento. O endereço de base (B) é um número de 64 bits contidos num registo geral especificado pelo programa, de um campo de quatro bits, denominada domínio B, na instrução. Endereços de base pode ser utilizado como um meio de tratar de forma independente cada área de programa e de dados. Nos cálculos de tipo array, ele pode designar a localização de uma matriz e, em tipo de registro de processamento, pode identificar o registro. O endereço de base prevê abordar todo o armazenamento. O endereço de base pode também ser usado para a indexação. [0072] O índice de (X) é um número de 64 bits contidos num registo geral designado pelo programa, de um campo de quatro bits, o chamado campo X, na instrução. Ele está incluído somente no endereço indicado pelo RX-, RXE- e instruções RXY-formato. O RX-, RXE-, RXF- e instruções RXY de formato duplo permitir a indexação; isto é, o índice pode ser usado para fornecer o endereço de um elemento dentro de uma matriz. [0073] O deslocamento (D) é um número de 12 bits ou de 20 bits contidos em um campo, o campo chamado D, na instrução. Um deslocamento de 12 bits não está assinado e prevê endereçamento relativo de até 4.095 bytes para além do local designado pelo endereço base. Um deslocamento de 20 bits está assinado e prevê endereçamento relativo de até 524.287 bytes para além do local endereço de base ou de até 524.288 bytes antes dele. Nos cálculos do tipo matriz, o deslocamento pode ser usado para especificar um dos muitos itens associados com um elemento. No processamento de registros, o deslocamento pode ser usado para identificar itens dentro de um registro. Um deslocamento de 12 bits está em posições de bits 20-31 de instruções de determinados formatos. Em instruções de alguns formatos, um segundo deslocamento de 12 bits também está na instrução, nas posições de bits 36-47. [0074] Um deslocamento de 20 bits está em instruções de apenas o formato RSY, RXY, ou SIY. Em estas instruções, o campo D consiste num campo de DL (baixo) nas posições de bits 20-31 e de um campo de DH (elevada) nas posições de bits 32-39. Quando o mecanismo de longo deslocamento está instalado, o valor numérico do deslocamento é formado, adicionando o conteúdo do campo DH sobre a esquerda do conteúdo do campo DL. Quando o mecanismo de longo deslocamento não é instalado, o valor numérico do deslocamento está formado anexando oito bits zero no lado esquerdo do conteúdo do campo de DL, e o conteúdo do campo de DH são ignorados. [0075] Na formação da soma intermediário, o endereço de base e indice são tratados como binários inteiros de 64 bits . Um deslocamento de 12 bits é tratado como um número inteiro binária sem sinal de 12 bits, 52 bits zero e são acrescentados à esquerda. Um deslocamento de 20 bits é tratado como um inteiro assinado binária de 20 bits, 44 bits de e igual ao bit de sinal são acrescentados à esquerda. Os três são adicionados como números binários de 64 bits, ignorando estouro. A soma é sempre de 64 bits e é utilizado como um valor intermédio para formar o endereço gerado. Os bits do valor intermédio são numerados 0-63. Um zero em qualquer um dos campos Bl, B2, X2, ou B4 indica a ausência do componente de endereço correspondente. Para o componente ausente, um zero é usado na formação da soma intermediário, independentemente do conteúdo do registo geral 0. Um deslocamento de zero, não tem significado especial. [0076] Quando uma descrição da instrução especifica que o conteúdo de um registo geral designado por um campo R são utilizados para endereçar um operando em armazenagem, o conteúdo de registo são utilizados como o valor intermédio 6 4 bits . [0077] Uma instrução pode designar o mesmo registo geral tanto para a computação e endereço como o local de um operando. Computação endereço é concluída antes de registros, se houver, são alterados pela operação. A menos que indicado de outra forma em uma definição de instrução individual, o endereço do operando gerado designa o byte mais à esquerda de um operando no armazenamento. [0078] O endereço do operando gerado é sempre de 64 bits, e os bits são numerados 0-63. A maneira pela qual o endereço gerado é obtido a partir do valor intermédio depende do modo de endereçamento de corrente . No modo de endereçamento de 24 bits, os bits 0-39 do valor intermédio são ignoradas, os bits 0-39 do endereço gerado são forçados a ser zeros, e os bits 40-63 dos bits de valor intermédio tornaram 40-63 do endereço gerado. No modo de endereçamento de 31 bits, os bits 0-32 do valor intermédio são ignoradas, os bits 0-32 do endereço gerado é forçado a ser igual a zero, e os bits 33-63 do valor intermédio tornar os bits 33-63 do gerado endereço. No modo de endereçamento de 64 bits, os bits 0-63 dos bits de valor intermédio tornaram 0-63 do endereço gerado. Os valores negativos podem ser usados em registros de indice e base-de endereços. Bits 0-32 desses valores são ignorados no modo de endereçamento de 31 bits, e os bits 0-39 são ignoradas no modo de endereçamento de 24 bits. [0079] Para instruções de desvio, o endereço da próxima instrução a ser executada quando a sucursal está feita é chamado o endereço de desvio. Dependendo da instrução de desvio, o formato de instrução pode ser RR, RRE, RX, RXY, RS, RSY, RSI, RI, RIE, OU RIL . Na RS, RSY, Rx, e formatos rxy, o endereço de ramo é especificado por um endereço de base, um deslocamento, e, nos formatos de RX e rxy, um índice. Nestes formatos, a geração do valor intermédio segue as mesmas regras para a geração do valor intermédio operando endereço. Nos formatos de RR e RRE, o conteúdo do registo geral designado pelo campo R2 são utilizados como o valor intermédio a partir do qual o endereço de ramo é formado. Registo geral 0 não pode ser designado como contendo um endereço de desvio. Um valor de zero no campo R2 faz com que a instrução a ser executada sem ramificação. [0080] A relação de ramo instruções estão nos formatos RSI, RI, RIE e RIL. Nos formatos de RSI, RI, RIE e para as instruções de ramo relativa, o conteúdo do campo de 12 são tratados como um inteiro assinado binária de 16 bits, que designa um número de meias palavras. No formato RIL, o conteúdo do campo de 12 são tratados como um inteiro assinado binária de 32 bits, que designa um número de meias palavras. O endereço de ramo é o número de meias palavras designados pelo campo 12 adicionada ao endereço da instrução de ramo relativa. [0081] O valor intermediário 64-bit para uma instrução de ramificação relativa no formato RSI, RI, RIE, ou RIL é a soma de dois adendos, com o excesso de posição de bit 0 ignorado. No RSI, RI, ou formato de RIE, o primeiro adendo é o conteúdo do campo de 12 com um zero bits anexados à direita e 47 bits de igual ao bit de sinal do conteúdo anexas à esquerda, exceto que, para comparar e BRANCH relativo, COMPARAR parente imediato e ramo, COMPARAR RELATIVA lógico e FILIAL e COMPARAR LÓGICO parente imediato e filial, o primeiro adendo é o conteúdo do campo 14, com pedaços anexas como descrito acima para o campo 12 . No formato RIL, adendo o primeiro é o conteúdo do campo de 12 com um zero bits anexados à direita e 31 bits igual ao bit de sinal do conteúdo anexas à esquerda. Em todos os formatos, adendo o segundo é o endereço da instrução de ramificação de 64 bits. O endereço da instrução ramo é o endereço de instrução no PSW antes que o endereço é atualizado para abordar a próxima instrução sequencial, ou é o endereço do alvo da instrução EXECUTAR EXECUTAR, se for utilizado. Se EXECUTE é utilizado no modo de endereçamento de 24 bits ou 31 bits, o endereço da instrução de ramificação é o endereço de destino 40 ou 33 com zeros, respectivamente, anexas à esquerda. [0082] O endereço ramo é sempre de 64 bits, com os bits numerados 0-63. O endereço ramo substitui os bits 64-127 da PSW atual. A maneira pela qual o endereço de ramo é obtido a partir do valor intermédio depende do modo de endereçamento. Para aquelas instruções de ramificação que alteram o modo de endereçamento, o novo modo de endereçamento é usado. No modo de endereçamento de 24 bits, os bits 0-39 do valor intermediário são ignorados, os bits 0-39 do endereço de desvio são feitos zeros, e os bits 40-63 do valor tornar-se pedaços intermediários 40-63 de o endereço de desvio. No modo de endereçamento de 31 bits, os bits 0-32 do valor intermédio são ignoradas, os bits 0-32 do endereço de ramificação são feitos zeros, e os bits 33-63 de tornar o valor de bits de intermediários 33-63 do endereço de ramo. No modo de endereçamento de 6 4 bits, os bits 0-63 dos bits de valor intermédio tornaram 0-63 do endereço de ramo. [0083] Por várias instruções de ramificação, ramificação depende de satisfazer uma condição especificada. Quando a condição não for satisfeita, o ramo não é tomado, a execução normal instrução sequencial continua, e o endereço de desvio não é usado. Quando uma filial é tomada, os bits 0-63 do endereço ramo substituir pedaços 64-127 da PSW atual. O endereço ramo não é usada para acessar o armazenamento como parte da operação de ramificação. Uma exceção especificação devido a um endereço no ramo e de acesso estranhas exceções devido à busca da instrução no local da ramificação não são reconhecidos como parte da operação de ramificação, mas em vez disso são reconhecidos como exceções associadas à execução da instrução no local da ramificação. [0084] A instrução de desvio, como FILIAL E SAVE, pode designar o mesmo registo geral para o endereço ramo computação e como a localização de um operando. Poder-endereço de computação é completada antes que o restante da operação é realizado. [0085] A palavra programa de status (PSW), descrito no Capitulo 4 "Control" contém informações necessárias para a boa execução do programa. A PSW é usada para controlar a sequenciação e para armazenar instruções e indicar o estado da CPU em relação ao programa que está a ser executada. A PSW ativo ou o controlo é chamado o PSW corrente. Instruções de desvio desempenhar as funções de tomada de decisão, controle de laço, e sub-rotina de ligação. A instrução de desvio afeta sequenciamento de instruções através da introdução de um novo endereço de instrução para o PSW atual. As instruções de ramo em relação com um campo de 12 de 16 bits permitem que a ramificação para um local em um deslocamento de até mais de 64 K - 2 bytes ou menos 64 K bytes em relação à localização da instrução de ramo, sem a utilização de um registo de base. As instruções de ramo em relação com um campo de 12 de 32 bits permitem que a ramificação para um local em um deslocamento de até mais 4G - 2 bytes ou menos 4G bytes em relação à localização da instrução de ramo, sem a utilização de um registo de base. [0086] Facilidades para tomada de decisão são fornecidos pela sucursal na condição, RAMO DE RELATIVA EM CONDIÇÃO, e FILIAL EM RELAÇÃO na condição de instruções de comprimento. Estas instruções inspecionar um código de condição que reflete o resultado de uma maioria da aritmética, lógica e operações 1/ O. O código de condição, que consiste de dois bits, prevê quatro possíveis configurações condição de código: 0, 1, 2, e 3. [0087] O significado especifico de qualquer definição depende da operação que define o código de condição. Por exemplo, o código de condição reflete condições tais como zero, diferente de zero, primeiro operando elevada, igual, excesso, e subcanal ocupado. Uma vez definido, o código de condição se mantém inalterado até que seja modificada por uma instrução que faz com que um código de condição diferente a ser definido.
[0088] de controle de Loop pode ser realizada através da utilização de FILIAL NA CONDIÇÃO, RAMO DE RELATIVA EM CONDIÇÃO, e FILIAL EM RELAÇÃO condição de longo para testar o resultado da aritmética endereço e operações de contagem. Para algumas combinações particularmente frequentes de aritmética e testes, FILIAL NO COUNT, FILIAL NO ÍNDICE DE ALTA, e filial no baixo indice de OR EQUAL são fornecidos, e equivalentes relativamente-filial destas instruções também são fornecidos. Estes ramos, sendo especializada, proporcionar maior desempenho para estas tarefas. [0089] ligação de sub-rotinas quando a mudança do modo de endereçamento não é necessária é fornecido pelo ramo e Link e FILIAL E SALVAR instruções. (Essa discussão de FILIAL E SALVAR se aplica também a filial RELATIVA E SALVAR e FILIAL RELATIVA E SALVAR LONG). Ambas as instruções de permitir não apenas a introdução de um novo endereço de instrução, mas também a preservação de um endereço de retorno e informações associadas. O endereço de retorno é o endereço da instrução após a instrução de desvio no armazenamento, exceto que ele é o endereço da instrução após uma instrução EXECUTE que tem a instrução de desvio como seu alvo. [0090] Tanto FILIAL e Link e FILIAL E SALVAR têm um campo RI . Eles formam um endereço de ramo por meio de campos que dependem da instrução. As operações das instruções são resumidas da seguinte forma: • No modo de endereçamento de 24 bits, ambas as instruções colocar o endereço de retorno em pouco posiciona 40-63 do registo geral RI e deixar pedaços 0-31 desse registo inalterado. FILIAL E LIGAÇÃO coloca o código de instrução de comprimento para a instrução e também o código de condição e uma máscara de programa a partir da PSW atual em posições de bits 32-39 do registo geral RI FILIAL E SALVAR coloca zeros nessas posições de bits. • No modo de endereçamento de 31 bits, ambas as instruções colocar o endereço de retorno em posições de bits 33-63 e um pouco na posição 32 do registo geral Rl, e eles deixam os bits 0-31 do registo inalterado. • No modo de endereçamento de 64 bits, ambas as instruções colocar o endereço de retorno em pouco posiciona 0-63 de registo Rl geral. • Em qualquer modo de endereçamento, ambas as instruções gerar o endereço de ramo sob o controlo do modo de endereçamento de corrente. 0 lugar instruções Bits 0-63 do endereço filial em posições de bits 64-127 da PSW. No formato de RR, ambas as instruções não se realizar ramificação se o campo R2 da instrução é zero. [0091] Pode ser visto que, no modo de endereçamento, FILIAL 24—bit ou 31—bit E SALVAR coloca o básico bit modo addressing-, bit 32 da PSW, na posição de 32 bits do registo geral Rl . FILIAL E LIGAÇÃO faz isso no modo de endereçamento de 31 bits. A FILIAL instruções e guarde E MODO SET e FILIAL E MODO SET são para uso quando uma mudança do modo de endereçamento é necessária durante a ligação. Estas instruções têm campos RI e R2. As operações das instruções encontram-se resumidos como segue: • FILIAL E SALVAR E MODO SET define o conteúdo do registo RI geral o mesmo que FILIAL E SALVAR. Além disso, a instrução coloca o bit de modo estendido-endereçamento, bit 31 da PSW, na posição 63 bit do registo. • FILIAL E MODO SET, se RI é diferente de zero, executa o seguinte. No modo de 24 ou 31 bits, ele coloca bit 32 da PSW na posição de 32 bits do registo geral Rl, e deixa os bits 0-31 e 33-63 do registo inalterado. Nota que pouco 63 do registo deve ser zero se o registo contém um endereço de instrução. No modo de 64 bits, os lugares de instrução mordeu 31 da PSW (um) na posição 63 bit do registo geral Rl, e deixa os bits 0-62 do registo inalterado. • Quando R2 é diferente de zero, ambas as instruções de definir o modo de endereçamento e executar ramificação como se segue. Bit 63 do registo R2 geral é colocado na posição de bit 31 da PSW. Se o bit 63 é igual a zero, o bit 32 do registrador é colocado na posição de bit 32 da PSW.
Se o bit 63 é um, PSW de 32 bits está definido para um. Em seguida, o endereço de ramo é gerado a partir do conteúdo do registo, exceto com o bit 63 do registo tratado como um zero, sob o controlo do novo modo de endereçamento. O lugar instruções Bits 0-63 do endereço filial em posições de bits 64-127 da PSW. 63 bits de registo R2 geral permanece inalterado e, portanto, pode ser uma em cima da entrada para o programa de chamada. Se R2 é o mesmo que RI, os resultados contidos no registo geral são designados como especificado para o registro Rl. INTERRUPÇÕES (CONTEXTO switch): [0092] O mecanismo de interrupção que a CPU permite alterar o seu estado como resultado de condições externas à configuração, dentro da configuração, ou dentro do próprio processador. Para permitir uma resposta rápida a condições de alta prioridade e reconhecimento imediato do tipo de condição, condições de interrupção são agrupados em seis classes: externo, de entrada / saída, verificação da máquina, programa, reinicie, e call supervisor. [0093] Uma interrupção consiste em armazenar o atual PSW como um antigo PSW, armazenar informação de identificação da causa da interrupção, e obtendo uma nova PSW. O processamento é retomado como especificado pelo novo PSW. O velho PSW armazenados em uma interrupção normalmente contém o endereço da instrução que teria sido executado seguinte teve a interrupção não ocorreu, permitindo assim a retomada do programa interrompido. Para o programa de e — supervisor de interrupções de chamada, a informação armazenada também contém um código que identifica o comprimento da última instrução executada, permitindo, assim, o programa para responder à causa da interrupção. No caso de algumas condições do programa para o qual a resposta normal é re-execução da instrução causando a interrupção, o endereço de instrução identifica diretamente a última instrução executada. [0094] Com exceção de reinicio, uma interrupção só pode ocorrer quando o processador está no estado operacional. A interrupção reinicialização pode ocorrer com a CPU em qualquer estado parado ou em funcionamento. [0095] Qualquer exceção de acesso é gerada como parte da execução da instrução com o qual está associado a exceção. Uma exceção de acesso não é gerada quando a CPU tenta pré-busca de um local disponível ou detecta alguma outra condição de acesso de exceção, mas uma instrução de desvio ou uma interrupção altera a sequência de instrução tais que a instrução não é executada. Cada instrução pode causar uma exceção de acesso a ser gerado por causa da busca de instrução. Além disso, as exceções de acesso associado com a execução de instruções podem ocorrer por causa de um acesso a um operando em armazenamento. Uma exceção de acesso devido a buscar uma instrução é indicada quando o primeiro halfword instrução não pode ser obtida sem encontrar a exceção. Quando a primeira meia palavra da instrução não tem acesso exceções, exceções de acesso pode ser indicado para halfwords adicionais de acordo com a instrução de comprimento especificado por os dois primeiros bits de instrução; No entanto, quando a operação pode ser executada sem acesso a segunda ou terceira meias palavras de instrução, é imprevisível se a exceção de acesso está indicado para a parte não utilizada. Uma vez que a indicação de exceções de acesso para a instrução fetch é comum a todas as instruções, não é coberto nas definições de instruções individuais. [0096] Exceto quando indicado na descrição individual de instruções, as seguintes regras se aplicam para exceções associadas a um acesso a um local operando. Para um operando-tipo de busca, exceções de acesso são necessariamente indicada apenas para a parte do operando que é necessário para completar a operação. Ele é imprevisível se as exceções de acesso são indicadas para aquelas porções de um operando-tipo de busca que não são necessários para completar a operação. [0097] Para um operando-tipo de armazenamento, exceções de acesso são gerados para todo o operando mesmo se a operação pode ser concluída sem a utilização da parte inacessível do operando. Em situações em que o valor de um operando-tipo de armazenamento é definido como sendo imprevisível, é imprevisível se uma exceção de acesso está indicada. Sempre que um acesso a uma localização operando pode causar uma exceção de acesso a ser gerado, o termo "acesso" está incluída na lista das exceções do programa na descrição da instrução. Esta entrada também indica quais operando pode causar a exceção a ser gerado e se a exceção é gerada em uma busca ou armazenamento de acesso a esse local operando. Exceções de acesso são gerados apenas para a parte do operando como definido para cada instrução particular. [0098] Uma exceção operação é gerado quando a CPU tenta executar uma instrução com um código de operação inválido. 0 código de operação pode ser não atribuído, ou a instrução com que código de operação não pode ser instalado na CPU. A operação é suprimida. O código de instrução de comprimento é 1, 2 ou 3. A exceção operação é indicada por um código de programa de interrupção 0001 hexagonal (ou 0081 hex se um evento por concorrente é indicado). [0099] Alguns modelos podem oferecer instruções não descritos nesta publicação, tais como as previstas assistências ou como parte de características especiais ou personalizadas. Consequentemente, os códigos de operação não descritos nesta publicação não necessariamente causar uma exceção de operação a ser gerado. Além disso, estas instruções podem causar modos de operação a ser configurado ou pode de outro modo alterar a máquina, de modo a afetar a execução das instruções subsequentes. Para evitar causar uma tal operação, uma instrução com um código de operação não descritos nesta publicação deve ser executada quando a função especifica associada com o código de operação é desejada. [100] Uma exceção especificação é gerado quando alguma das seguintes situações for verdadeira: 1. A um é introduzido numa posição de bit não atribuído da PSW (isto é, qualquer uma das posições de bit 0, 2-4, 24-30, 33-63) ou. Isso é tratado como uma exceção especificação cedo PSW. 2. A um é introduzido na posição do bit 12 do PSW. Isso é tratado como uma exceção especificação cedo PSW. 3 . A PSW é inválida em qualquer uma das seguintes maneiras: a. Bit 31 da PSW é um mordeu e 32 é zero. b. Bits 31 e 32 da PSW são zero, indicando o modo de endereçamento de 24 bits, e bits 64-103 da PSW não são todos os zeros. c. Bit 31 da PSW é zero e 32 bits é um, indicando o modo de endereçamento de 31 bits, e os bits 64-96 do PSW não são todos os zeros. Isso é tratado como uma exceção especificação cedo PSW. 4. A PSW contém um endereço de instrução estranho. 5. Um endereço operando não designa um limite integrante em uma instrução que requer tal designação integral-limite. 6. Um registo geral impar é designado por um campo de R uma instrução que requer uma designação registo de número par . 7. Um registro de ponto flutuante diferente de 0, 1, 4, 5, 8, 9, 12 ou 13 é designado para um operando estendida. 8. O multiplicador ou divisor na aritmética decimal for superior a 15 digitos e sinal. 9. 0 comprimento do campo de primeira operando é menor ou igual ao comprimento do campo do segundo operando em decimal multiplicação ou divisão. 10. Execução de MENSAGEM cifra, MENSAGEM COM CIPHER ENCADEAM, COMPUTE INTERMEDIÁRIO Message Digest, COMPUTE última mensagem digerir, ou COMPUTE mensagem de autenticação CODE é tentada, e o código de função em bits 57-63 do registo geral 0 conter um código de função não atribuido ou desinstalado. 11. Execução de MENSAGEM MENSAGEM CIPHER CIPHER ou COM ENCADEAM é tentada, e o campo RI ou R2 designa um registo impar ou registo geral 0. 12. Execução de CIPHER mensagem, mensagem CIPHER COM ENCADEAM, COMPUTE INTERMEDIÁRIO Message Digest ou COMPUTE mensagem de autenticação CODE é tentada, e o segundo comprimento de operando não é um múltiplo do tamanho do bloco de dados da função designada. Esta condição especificação-de exceção não se aplica às funções de consulta. 13. Execução de COMPARAR E FORMA palavra de código é tentada, e registros gerais 1, 2 e 3 não fazer inicialmente conter até mesmo valores. 32. Execução de comparar e trocar e STORE é tentada e qualquer uma das seguintes condições: • O código de função especifica um valor atribuído. • A característica loja especifica um valor atribuído. • O código de função é 0, e o primeiro operando não é designado em um limite de palavra. • O código de função é 1, e o primeiro operando não é designado em um limite de palavras duplas. • O segundo operando não é designada num limite integrante correspondente ao tamanho do valor da loja. 33. Execução de COMPARAR LÓGICO UNICODE LONGO ou mover UNICODE LONGO é tentada, e os conteúdos de qualquer registo geral Rl + 1 + 1 ou R3 não especificar um número par de bytes. 34. Execução de COMPARAR string lógica, corda mover ou seqüência de pesquisa é tentada, e os bits 32-55 do registo geral 0 não são todos os zeros. 35. Execução da compressão CALL é tentada, e os bits 48-51 do registo geral 0 ter qualquer um dos valores binários 0000 e 0110-1111. 36. Execução de COMPUTE INTERMEDIÁRIO Message Digest, COMPUTE última mensagem digerir, ou COMPUTE mensagem de autenticação CODE é tentada, e uma das seguintes opções for verdadeira: • O campo R2 designa um registo impar ou registo geral 0 . • Bit 56 do registo geral 0 não é zero. 37. Execução de CONVERT TO HFP BFP, converter para FIXO (BFP ou HFP), ou LOAD FP INTEIRO (BFP) é tentada, e o campo M3 não designa um modificador válido. 38. Execução de DIVIDE PARA INTEIRO é tentada, e o campo M4 não designa um modificador válido. 39. Execução de EXECUTAR é tentada, e o endereço de destino é estranho. 40. Execução de EXTRATO STACKED de Estado é tentado, e o código em pouco posiciona 56-63 do registo geral R2 é maior que 4 quando a instalação ASN-e-LX-reutilização não está instalado ou é maior do que 5, quando a unidade está instalada . 41. Execução de FIND mais à esquerda é tentada, e o campo RI designa um registo oddnumbered. 42 . Execução de invalidar DAT tabela de entrada é tentada, e os bits 44-51 do registo R2 geral não são todos os zeros. 43. Execução da carga FPC é tentada, e um ou mais bits do segundo operando correspondente aos bits não suportados no registo FPC são um. 44. Execução de carregamento da página-TABLE-entrada de endereço é tentada e campo M4 da instrução contém qualquer valor diferente de 0000-0100 binário. 45. Execução da carga PSW é tentada e Bit 12 da doubleword no endereço do segundo operando é zero. É dependente ou não essa exceção é gerada modelo. 46 . Execução de monitor de chamada é tentada, e pouco posiciona 8-11 da instrução não contêm zeros. 47. Execução de mover a página é tentada, e pouco posiciona 48-51 de registo geral 0 não contêm zeros ou os bits 52 e 53 do registo são ambos um. 48. Execução de PACK ASCII é tentada, e o campo L2 é maior do que 31. 49. Execução de PACK UNICODE é tentada, e o campo L2 é maior que 63 ou é mesmo. 50. Execução de PERFORM ponto flutuante operação é tentada, o bit 32 do registo geral 0 é zero, e um ou mais campos em pedaços 33- 63 são inválidas ou designar uma função desinstalado. 51. Execução de operação Execute BLOQUEADO é tentada, e com uma das seguintes afirmações é verdadeira: · O bit T, bit 55 do registo geral 0 é zero, e o código de função em bits 56-63 do registo é inválido. · Bits 32-54 do registo geral 0 não são todos os zeros . · No modo de acesso de registo, por códigos de função que causam uso de uma lista de parâmetros que contém uma ALET, o campo R3 é zero.
52. Execução de EXECUTAR CALENDÁRIO FUNÇÃO DA FACILIDADE é tentada, e uma das seguintes opções é verdadeira: · Bit 56 do registo geral 0 não é zero. · Bits 57-63 do registo geral 0 especificar um código de função não atribuído ou desinstalado. 53 . Execução de transferência de programas ou transferência de programa com INSTÂNCIA é tentada, e todos os seguintes são verdadeiras: • O bit de modo estendido endereçamento na PSW é zero. • O bit de modo básico de endereçamento, bit 32, no registro geral designado pelo campo R2 da instrução é zero. • Bits 33-39 do endereço de instrução no mesmo registo não são todos os zeros. 54. Execução do Programa de RESUME é tentada, e uma das seguintes opções for verdadeira: • Bits 31, 32, e 64-127 do campo PSW no segundo operando não são válidos para a colocação no PSW atual. A exceção é gerada se qualquer uma das seguintes afirmações é verdadeira: - Bits 31 e 32 são ambos zero e bits 64-103 não são todos os zeros. - Os bits 31 e 32 são iguais a zero e um, respectivamente, e os bits 64-96 não estão todos zeros. - Bits 31 e 32 são um e zero, respectivamente. - Bit 127 é um deles. • Bits 0-12 da lista de parâmetros não são todos os zeros. 55. Execução de PESQUISAR sequência de caracteres Unicode é tentada, e os bits 32-47 do registo geral 0 não são todos os zeros. 56 . Execução de Controle do Espaço SET endereço ou conjunto de endereço do Controle do Espaço RÁPIDO é tentada, e os bits 52 e 53 do endereço do segundo operando não são dois zeros. 57. Execução de SET modo de endereçamento (SAM24) é tentada, e os bits 0-39 do endereço de instrução atualizado-un no PSW, pedaços 64-103 da PSW, não são todos os zeros. 58. Execução de SET modo de endereçamento (SAM31) é tentada, e os bits 0-32 do endereço de instrução atualizado-un no PSW, bits 64-96 do PSW, não são todos os zeros. 59 . Execução de SET CLOCK programável em campo é tentada, e os bits 32-47 do registo geral 0 não são todos os zeros. 60. Execução de SET FPC é tentada, e um ou mais bits do primeiro operando correspondente aos bits não suportados no registo FPC são um. 61. Execução do SISTEMA DE INFORMAÇÃO STORE é tentada, o código de função no registo geral 0 é válido, e uma das seguintes opções é verdadeira: · Bits 36-55 do registo geral 0 e bits de 32 47 de um registo geral não são todos os zeros. · O endereço do segundo operando não está alinhado em um limite de 4K bytes. 62. Execução de TRADUZIR dois para um ou traduza dois a dois é tentada, bem como a duração, em geral, cadastre-Rl + 1 não especifica um número par de bytes. 63. Execução de UNPACK ASCII é tentada, e o campo LI é maior do que 31. 64. Execução de UNPACK UNICODE é tentada, e o campo LI é maior que 63 ou é mesmo. 65. Execução de ATUALIZAÇÃO DA ÁRVORE é tentada, e os conteúdos iniciais de registos gerais 4 e 5 não são um múltiplo de 8, no 24-bit ou 31-bit modo de endereçamento ou não são um múltiplo de 16 no modo de endereçamento de 64 bits. A execução da instrução identificado pela idade PSW é suprimida. No entanto, para exceções de especificação PSW cedo (provoca 1-3) a operação que introduz o novo PSW é concluída, mas uma interrupção ocorre imediatamente a seguir. De preferência, o código de instrução de comprimento (CIT) é 1, 2, ou 3, que indica o comprimento da instrução causando a exceção. Quando o endereço de instrução é estranho (causa 4 na página 6-33), é imprevisível se a ILC é 1, 2 ou 3. Quando a exceção é gerada por causa de uma exceção especificação PSW cedo (provoca 1-3) e a exceção foi introduzida por PSW carga, louça PSW ESTENDIDA, programa de retorno, ou uma interrupção, a ILC é 0. Quando a exceção é introduzida por modo de endereçamento SET (SAM24, SAM31), o ILC é uma, ou é 2 se SET modo de endereçamento foi alvo de EXECUTAR. Quando a exceção é introduzida por SYSTEM SET máscara ou por loja, em seguida OR sistema de máscara, o ILC é 2. [00101] interrupções Programa são usados para relatar exceções e eventos que ocorrem durante a execução do programa. A interrupção do programa faz com que o velho PSW para ser armazenado em locais reais 336-351 e um novo PSW a ser buscado a partir de locais reais 464-479. A causa da interrupção é identificada pelo código de interrupção. O código de interrupção é colocado em locais reais 142-143, o código de instrução de comprimento é colocado em posições de bits 5 e 6 do byte de localização real 141 com o resto dos bits definidos como zeros, zeros e são armazenadas a verdadeira localização 140. Para algumas causas, a informação adicional identificando a razão para a interrupção é armazenada em localizações reais 144-183. Se a instalação PER-3 é instalado, então, como parte da ação interrupção do programa, o conteúdo do registo quebra-event-endereço são colocados em locais de armazenamento reais 272-279. Exceto para eventos por exceção e cripto-operação, a condição que causa a interrupção é indicado por um valor codificado colocados em sete posições mais à direita do código de interrupção bit. Apenas uma condição de cada vez pode ser indicada. Os bits 0-7 do código de interrupção são ajustados para zero. Eventos por são indicados, definindo bit 8 do código de interrupção para um. Quando esta é a única condição, os bits 0-7 e 9-15 também estão definidas para zeros. Quando um evento PER é indicada simultaneamente com uma outra condição interrupção do programa, bit 8 é um, e os bits 0-7 e 9-15 são definidos como para a outra condição. O cripto-exceção operação é indicada por um código de interrupção de 0119 hexagonal, ou 0199 hex se um evento por também é indicada. [00102] Quando há um pouco máscara correspondente, numa interrupção do programa pode ocorrer apenas quando esse bit máscara é um deles. A máscara de programa no PSW controla quatro das exceções, as máscaras IEEE na FPC cadastre-se controlar as exceções IEEE, bit 33 no registo de controlo 0 controla se SYSTEM SET MÁSCARA faz com que uma exceção de operação especial-, bits 48-63 no registo de controlo 8 interrupções de controlo devido a monitorar eventos, e uma hierarquia de máscaras controlar interrupções devido a eventos por. Quando qualquer bit de máscara controlo é zero, a condição é ignorado; a condição não permanece pendente. [00103] Quando a nova PSW para uma interrupção de programa tem um erro de formato ou PSW—faz com que uma exceção seja gerada no processo de buscar instrução, uma série de interrupções de programa pode ocorrer. [00104] Algumas das condições indicadas como exceções do programa também pode ser gerado pelo subsistema de canal, caso em que a exceção é indicada na palavra subcanal-estado ou palavra-estado estendido. [00105] Quando uma exceção de dados faz com que uma interrupção do programa, um código de exceção de dados (DXC) é armazenado no local 147, e zeros são armazenados em locais 144-146. O DXC distingue entre os vários tipos de condições de exceção-dados. Quando a AFP-registo (registo adicional de ponto flutuante) bit de controle, bit 45 do controle de registro 0, é um, o DXC também é colocado no campo da DXC-ponto-de controlo flutuante (FPC) registe-se. O campo DXC no registo FPC permanece inalterada quando qualquer outra exceção programa é relatado. 0 DXC é um código de 8 bits, indicando a causa especifica de uma exceção de dados. [00106] DXC 2 e 3 são mutuamente exclusivos e são de maior prioridade do que qualquer outro DXC. Assim, por exemplo, DXC 2 (instrução BFP) tem precedência sobre qualquer exceção IEEE; e DXC 3 (instrução DFP) tem precedência sobre qualquer exceção IEEE ou exceção simulado IEEE. Como outro exemplo, se existirem as condições para tanto DXC 3 (instrução DFP) e DXC 1 (AFP registo), DXC 3 é relatado. Quando ambos uma exceção especificação e uma exceção de dados registo AFP aplicar, é imprevisível qual é relatado. [00107] Uma exceção tratar é gerada quando a CPU tenta fazer referência a um local principal de armazenamento de que não está disponível na configuração. Um local de armazenamento principal-não está disponível na configuração quando o local não é instalado, quando a unidade de armazenamento não está na configuração, ou quando está desligado na unidade de armazenamento. Um endereço que designa um local de armazenamento de que não está disponível na configuração é referida como inválido. A operação é suprimida quando o endereço da instrução é inválido. Do mesmo modo, a operação é suprimida quando o endereço da instrução de destino de EXECUTAR é inválido. Além disso, a unidade de operação é suprimida quando uma exceção é encontrada endereçamento de acesso a uma entrada de tabela ou tabela. As mesas e as entradas da tabela para a qual a regra se aplica são a tabela de unidade de controlo despachável, a entrada da tabela de segunda primário ASN, e entradas na lista de acesso, região primeira tabela, tabela de segunda região, a região terceira tabela, tabela de segmento, página mesa, mesa de ligação, linkage- primeira mesa, mesa de ligação de segunda, mesa de entrada, ASN primeira tabela, ASN segunda mesa, mesa de autoridade, pilha de ligação, e mesa de rastrear. Exceções Endereçamento resultar em supressão quando eles são encontrados para referências a primeira mesa da região, região segundo quadro, região terceira tabela, tabela de segmento, e tabela de página, em ambas as referências implícitas para a tradução de endereço dinâmico e referências associadas com a execução de CARGA PAGE- TABELA-entrada de endereço, CARGA endereço real, ENDEREÇO DA LOJA REAL, e proteção TEST. Da mesma forma, abordando exceções para acessos a tabela de controle despachável- unidade, a entrada de segunda-table ASN primário, lista de acesso, ASN segunda tabela, ou resultado tabela autoridade na supressão quando eles são encontrados no acesso a registar tradução realizado de forma implícita ou como parte da carga endereço da página-TABLE-ENTRADA, CARGA endereço real, ENDEREÇO DA LOJA REAL, testar o acesso, ou a proteção TEST. Exceto por algumas instruções específicas cuja execução é suprimida, a operação será cancelada para um endereço operando que pode ser traduzido, mas designa um local indisponível. Para a terminação, as mudanças podem ocorrer apenas para resultar campos. Neste contexto, o termo "campo de resultado" inclui o código de condição, registra, e quaisquer locais de armazenamento que são fornecidos e que são designados para ser mudado pela instrução. [00108] O exposto acima é útil para a compreensão da terminologia e estrutura de uma concretização do sistema de computador. Embodimemts não se limitando az/ Architecture ou para a descrição fornecida destes. Concretizações pode ser vantajosamente aplicado a outras arquiteturas de computadores de outros fabricantes de computadores com o ensino aqui. [00109] Com referência à figura 7, um sistema de computador pode estar executando um sistema operacional (OS) 701 e dois ou mais programas de aplicação 702 703.
Contexto é empregue a comutação para permitir uma OS para gerenciar os recursos usados pelos aplicativos. Em um exemplo, um sistema operacional 701 define um temporizador de interrupção e inicia uma ação de 704 alternância de contexto a fim de permitir um programa aplicativo para ser executado por um periodo determinado pelo temporizador de interrupção. A ação interruptor de contato poupa 705 Informação do Estado do sistema operacional, incluindo o contador do programa do OS apontando para uma próxima instrução OS para ser executado. A ação de comutação de contexto próxima obtém 705 Informações Estado de Programa de Aplicação # 1 702 706 para permitir que o programa de aplicação # 1 702 comece a executar instruções aos Programas aplicativos obtidos contador de programa atual. Quando o temporizador de interrupção expirar, um contexto interruptor 704 ação é iniciada para retornar o sistema de computador para o sistema operacional. [00110] arquiteturas de processador diferentes fornecem um número limitado de registos gerais (GRS), por vezes referido como registradores de propósito geral, que são explicitamente (e / ou implicitamente) identificados por instruções do conjunto de instruções arquitetado. IBM z / Arquitetura e suas arquiteturas antecessor (que remonta ao Sistema 360 original cerca de 1964) fornecem 16 registros gerais (GRS) para cada unidade de processamento central (CPU). RG pode ser usado por processadores (unidade de processamento central (CPU)) instruções de como se segue: • Como um operando de origem de uma operação aritmética ou lógica. • Como um operando destino de uma operação aritmética ou lógica. • Como o endereço de um operando de memória (uma base cadastral, registro de Índice, ou diretamente) • Como o comprimento de um operando de memória • Outros usos, tais como o fornecimento de um código de função ou outras informações para e de uma instrução. [00111] Até à introdução do mainframe z / Architecture IBM em 2000, de um registo geral de mainframe constou de 32 bits; com a introdução de z / Architecture, um ficheiro geral consistiu de 64 bits, no entanto, por motivos de compatibilidade, muitas instruções z / Architecture continuar a suportar 32 bits. [00112] Da mesma forma, outras arquiteturas, como o x86 da Intel, por exemplo, fornecer modos de compatibilidade de tal forma que uma máquina corrente, tendo, por exemplo 32 registradores bit, fornecer modos para obter instruções para acessar apenas os primeiros 8 bits ou 16 bits de GR 32 bits. [00113] Mesmo em ambientes primeiros IBM System 360, 16 registros (identificados por um campo de registo de 4 bits em uma instrução por exemplo) provou ser difícil para os programadores de montador e designers do compilador. Um programa moderadamente-size poderia exigir vários registos de base para abordar código e dados, o que limita o número de registros disponíveis para armazenar variáveis ativas. Certas técnicas têm sido utilizadas para tratar o número limitado de registos: • A concepção do programa (tão simples como a programação modular) ajudou a minimizar overutilization base-registo. • Os compiladores usaram técnicas tais como registo "coloração" para gerenciar a mudança de dinâmica de registros. • uso de registrador de base pode ser reduzido com o seguinte: • Mais novo aritmética e instruções lógicas com constantes imediatas (dentro da instrução). • instruções mais novos, com endereços operando relative-imediatos. • instruções mais novos, com deslocamentos longos. [00114] No entanto, continua a haver pressão registo constante quando há variáveis mais vivos e alcance endereçamento que podem ser acomodados pelo número de registros no CPU. [00115] z / Architecture oferece três modos de endereçamento programa selecionável: 24-, 31-, e endereçamento de 64 bits. No entanto, para programas que não exigem valores de 64 bits nem explorar memória endereçamento de 64 bits, que tem 64 bits RGs é de beneficio limitado. A seguinte divulgação descreve uma técnica de exploração de registos de 64 bits para programas que geralmente não usam endereçamento de 64 bits ou variáveis. [00116] Dentro dessa divulgação, a convenção é utilizada onde as posições de registros bits são numerados em ordem crescente da esquerda para a direita (Big Endian). Em um registo de 64 bits, o bit 0 (o bit mais à esquerda) representa o valor mais importante (263) e o bit 63 (o bit mais à direita) representa o valor minimo significativo (20). Os mais à esquerda 32 bits de tal registo (bits 0-31) são chamados a palavra alta, e os mais à direita 32 bits do registo (bits 32-63) são chamados a palavra baixa, onde uma palavra é de 32 bits.
Encaixado-ACCESS FACILIDADE: [00117] Num exemplo de z / Architecture concretização, uma facilidade de acesso interligados podem estar disponíveis que proporciona os meios pelos quais uma carga, de actualização, e operação de armazenamento podem ser executadas com actualização de interbloqueio em uma única instrução (em oposição ao uso de um comparar tipo de atualização -e-swap). A instalação também fornece uma instrução para tentar carregar a partir de dois locais de armazenamento distintos de forma interligada-fetch. A instalação fornece as seguintes instruções • CARGA E ADD
• CARGA E ACRESCENTAR LÓGICO
• CARGA E E
• CARGA E EXCLUSIVA OU
• CARGA E OU • CARGA PAIR disjuntos LOAD / LOJA EM CONDIÇÃO FACILIDADE: [00118] Em um exemplo z / Architecture concretização, uma instalação de carga / store-on-condição pode fornecer os meios pelos quais selecionado operações podem ser executadas somente quando um campo de condição-code-máscara da instrução corresponde ao código de condição atual no PSW. A instalação fornece as seguintes instruções.
• CARGA SOBRE A CONDIÇÃO
• LOJA ON CONDIÇÃO
DlSTINCT-operandos FACILIDADE: [00119] Num exemplo de z / Architecture concretização, um mecanismo distintas-operandos podem ser fornecer formas alternativas de aritmética seleccionado e instruções lógicas, em que o registo resultado pode ser diferente de qualquer um dos registos de código. A instalação oferece formas alternativas para as seguintes instruções.
• ADD
• ADICIONAR IMEDIATA
• ADICIONAR LÓGICO
• Adicione LÓGICO COM ASSINADO IMEDIATA
• E
• EXCLUSIVE OR
• OR
• SHIFT esquerda ÚNICO
• SHIFT esquerda ÚNICO LÓGICO
• Shift direita ÚNICO
• Shift direita ÚNICO LÓGICO
• SUBTRACT
• SUBTRACT LÓGICO
POPULAÇÃO—COUNT FACILIDADE [00120] Em um exemplo z / Architecture concretização, uma academia de população de contagem pode fornecer a instrução Contagem da População, que fornece uma contagem de um bits em cada byte de um registo geral.
Referências STORAGE-operando: [00121] Para certas instruções especiais, as referências buscar para vários operandos pode aparecer a ser interligada contra determinados acessos por outras CPUs e por programas de canais. Tal buscar referência é chamada de referência intertravado-fetch. Os buscar acessos associados a uma referência intertravado-fetch não ocorrem necessariamente um imediatamente após o outro, mas loja de acessos por outros CPUs pode não ocorrer nos mesmos locais como o intertravado-fetch de referência entre os acessos de buscar a referência intertravado buscar. A armazenagem de buscar operando referência para a instrução LOADPAIR disjuntos pode ser uma referência intertravado-fetch. Seja ou não LOADPAIR disjuntos é capaz de buscar ambos os operadores por meio de um intertravado fetch é indicada pelo código de condição. Para certas instruções especiais, a referência atualização é intertravado contra determinados acessos por outros programas CPUs e canais. Tal referência atualização é chamado uma referência intertravado-update. O buscar e armazenar acessos associados com uma referência intertravado-update não ocorrem necessariamente um imediatamente após o outro, mas toda a loja de acessos por outros programas CPUs e dos canais ea buscar e armazenar acessos associados com referências intertravado-atualização por outro CPUs são impedidos de ocorrendo no mesmo local entre a buscar e acessa a loja de uma referência atualização intertravado. [00122] Um sistema multi-processador pode incorporar vários meios para interligar referências operando de armazenamento. Uma embodiement processador teria a obtenção de propriedade exclusiva da linha ou linhas de cache no sistema durante as referências. Outra concretização exigiría que os acessos de armazenamento são restritos a mesma linha de cache, por exemplo, exigindo que os operandos sendo acessados a partir da memória estão em um limite integral que seria dentro de uma linha de cache. Neste caso, qualquer de 64 bits (8 bytes) operando sendo acessado em uma linha de cache de 128 bytes é certamente totalmente dentro da linha de cache se ele estiver em um limite de 64 bits integral. BLOCO Referências concorrente: [00123] Para algumas referências, os acessos para todos os bytes (8 bits) dentro de um halfword (2 bytes), palavra (4 bytes), doubleword (8 bytes), ou quadword (16 bytes) são especificados para parecer ser de componente simultâneo tal como observado por outros CPU e programas de canal. O halfword, palavra, doubleword, ou quadword é referido nesta secção como um bloco. Quando é especificada uma referência do tipo buscar a aparecer para ser concorrente dentro de um bloco, sem acesso à loja para o bloco por outro programa CPU ou canal é permitido durante o tempo em que os bytes contidos no bloco estão sendo procurados. Quando é especificada uma referência do tipo loja para parecem ser concorrente dentro de um bloco, sem acesso ao bloco, quer buscar ou loja, é permitido por outro programa CPU ou canal durante o tempo em que os bytes dentro do bloco estão sendo armazenados. [00124] O termo refere-se à serialização instrução uma instrução que faz com que uma ou mais funções de serialização a ser executada. A operação de serialização termo refere-se a uma unidade de operação de uma instrução, ou dentro de um funcionamento da máquina, tais como uma interrupção que faz com que uma função de serialização é executada. ESPECÍFICA-OPERAND serialização: [00125] Certas instruções pode causar-operando especifico de serialização para ser realizado em um operando da instrução. Como observado por outros CPUs e pelo subsistema de canal, uma operação-operando-serialização especifico consiste em completar todo o armazenamento conceitualmente anterior acessa pela CPU antes de acessos conceitualmente subsequentes para o operando de armazenamento especifico da instrução pode ocorrer. Na conclusão de uma instrução que causam operando especifico de serialização, loja da instrução é concluida como observados por outros programas CPUs e canais. Específicos do operando serialização é executada pela execução das seguintes instruções: • ADICIONAR IMEDIATA (ASI, AGSI) e adicionar LOGICALWITH ASSINEI IMEDIATA, para o primeiro operando, quando a facilidade de acesso intertravado está instalado e o primeiro operando está alinhado num limite, que é integral com o tamanho do operando. • CARGA E ADD, CARGA E ACRESCENTAR LÓGICO, carregar e E, CARGA E EXCLUSIVA OU, OU DE CARGA E, para o segundo operando. ATUALIZAÇÃO Encaixado: [00126] IBM z / Arquitetura e suas arquiteturas de multiprocessadores antecessor (que datam de 360 Sistema posteriores) implementaram algumas instruções "intertravado-update". Uma instrução intertravado-update garante que a CPU na qual a instrução é executada tem acesso exclusivo a um local de memória do tempo a memória é buscada até que seja armazenado de volta. Isso garante que várias CPUs de uma configuração multi-processador, tentando acessar o mesmo local não irá observar resultados errados. [00127] A primeira instrução intertravado-update foi TESTE E SET (TS), introduzido em S / 360 sistemas de multiprocessamento. Sistema 370 introduziu a comparar e SWAP (CS) e compare (CDS) instruções de casal e SWAP. ESA / 390 adicionado a comparar e trocar e PURGE (CSP) instrução (uma forma especializada usada em gerenciamento de memória virtual). z / Architecture adicionado a 64-bit Compare e SWAP (CSG) e comparar e trocar e PURGE (CSPG), eo 128-bit Compare (CDSG) instruções de casal e SWAP. O z / Architecture mecanismo de longo deslocamento acrescentou o Compare e SWAP (CSY) e compare (CDSY) instruções de casal e SWAP. O z / Architecture facilidade de comparar e trocar e-store acrescentou a comparar e trocar e STORE instrução. Mnemônicos, como (TS) para a instrução de teste e definir são usadas por programadores de montador para identificar a instrução. A notação montador é discutido na z / Architecture referência e não é significativa para o ensinamento do presente invento. [00128] Usando as instruções arte intertravado-atualização anterior, as formas mais elaboradas de acesso serializado pode ser efectuada, incluindo os protocolos de bloqueio, bloqueado operações aritméticas e lógicas para posições de memória, e muito mais, mas a um custo de complexidade e ciclos de CPU adicionais. Há uma necessidade constante de uma ampla variedade de paradigmas de atualização-interligadas que operam como uma unidade de operação atômica. Concretizações aqui abordar três desses paradigmas. [00129] A divulgação descreve dois novos conjuntos de instruções que implementam técnicas de atualização Encaixado, e melhorias para um terceiro conjunto de instruções existentes que são definidos para operar usando atualização interligados quando os operandos sejam devidamente alinhados: Carregar e executar a operação: [00130] Este grupo de instruções carrega um valor de uma posição de memória (o segundo operando) em um registro geral (o primeiro operando), realiza uma operação aritmética ou boolean no valor em um cadastro geral (o terceiro operando), e lugares o resultado da operação de volta para a posição de memória. O buscar e armazenar do segundo operando parece ser uma atualização de bloco intertravado concorrente para outros processadores.
Carregue Pair Disjoint: [00131] Este grupo de instruções tenta carregar dois valores distintos, de localizações de memória separados (o primeiro e o segundo operandos) num par / par impar de registadores gerais (designado como o terceiro operando). Seja ou não as duas localizações de memória distintas são acedidos de uma maneira interligada (isto é, sem um dos valores a ser mudado por um outro processador central) é indicado pelo código de condição. ADD [lógico com ASSINADOS] Melhorias imediatas: [00132] O zlO arte Sistema prévia introduzido várias instruções para executar além de locais de memória usando uma constante de imediato na instrução: ADD IMEDIATA (ASI, AGSI) e ADD LÓGICO COM ASSINADO IMEDIATA (ALSI, ALGSI). Tal como inicialmente definido, a memória acessos por estas instruções não foram interligados atualização. Quando a facilidade intertravado-update está instalado e operando memória para estas instruções está alinhado em um limite integral, a buscar / adição / loja do operando é agora definida para ser um bloco intertravado atualização concorrente. [00133] Outras arquiteturas implementar soluções alternativas para esse problema. Por exemplo, a arquitetura Intel Pentium define uma instrução de prefixo bloqueio que afeta intertravado-atualização para certas instruções subseqüentes. No entanto, a técnica de bloqueio-prefixo aumenta a complexidade da arquitetura que é desnecessário. A solução aqui descrita efeitos interligados actualização em uma unidade de operação atômica - sem a necessidade de uma instrução de prefixo. INSTRUÇÕES Encaixado-de armazenamento de acesso: [00134] Os seguintes são exemplos de instruções de acesso Encaixado-armazenamento. CARGA E ADD (RSY FORMATO) [00135] Quando a instrução é executada pelo sistema de computador, o segundo operando é adicionado ao terceiro operando, e a soma é colocado no local do segundo operando.
Subsequentemente, os conteúdos originais do segundo operando (antes da adição) são colocados inalterada no local do primeiro operando. Para LAA OpCode, os operadores são tratados como sendo inteiros binários de 32 bitsigned. Para Laag OpCode, os operadores são tratados como sendo de 64 bits assinados inteiros binários. A busca do segundo operando para fins de carregamento e a loja para a localização do segundo operando parecem ser uma referência atualização intertravado bloco concorrente como observado por outros processadores. Uma operação de serialização operando-específica é realizada. O deslocamento é tratado como um inteiro assinado binária de 20 bits. 0 segundo operando de LAA deve ser designado em um limite de palavra. O segundo operando de Laag deve ser designado em um limite de palavras duplas. Caso contrário, uma exceção é gerada especificação. Código resultante Estado: 0 Resultado zero; nenhum estouro 1 Resultado inferior a zero; nenhum estouro Resultado 2 maior do que zero; nenhum estouro 3 Overflow Exceções do programa: • Access (buscar e armazenar, operando 2) • estouro de ponto fixo • Operação (se a facilidade de acesso intertravado não está instalado) • Especificação Notas de programação: 1 . Salvo no caso em que os campos RI e R3 designar o mesmo registo, registo geral R3 mantém-se inalterado. 2. A operação de carga e de ADD, CARGA andadd lógico, CARGA E AND, OR CARGA ANDEXCLUSIVE, e CARGA E OU pode ser expressa da seguinte forma.
temperatura operand_2; operand_2 operand_2 OP operand_3; operand_l temporário; PO representa a operação lógica aritmética ou sendo realizada pela instrução. CARGA E ACRESCENTAR LÓGICO (FORMATO RSY) [00136] Quando a instrução é executada pelo sistema de computador, o segundo operando é adicionado ao terceiro operando, e a soma é colocado no local do segundo operando. Subsequentemente, os conteúdos originais do segundo operando (antes da adição) são colocados inalterada no local do primeiro operando. Para OpCode Laal, os operadores são tratados como sendo inteiros binários de 32 bitunsigned. Para LAALG OpCode, os operadores são tratados como sendo de 64 bits binários inteiros não assinados. A busca do segundo operando para fins de carregamento e a loja para a localização do segundo operando parecem ser uma referência atualização intertravado bloco concorrente como observado por outros processadores. Uma operação de serialização operando-específica é realizada. O deslocamento é tratado como um inteiro assinado binária de 20 bits. O segundo operando de Laal deve ser designado em um limite de palavra. O segundo operando de LAALG deve ser designado em um limite de palavras duplas. Caso contrário, uma exceção é gerada especificação. Código resultante Estado: 0 Resultado zero; não carregue 1 Resultado não zero; não carregue 2 Resultado zero; transportar 3 Resultado não zero; transportar Exceções do programa: • Access (buscar e armazenar, operando 2) • Operação (se a facilidade de acesso intertravado não está instalado) • Especificação Programação Nota: Consulte as notas de programação para CARGA E ADD. CARGA E E (FORMATO RSY) [00137] [00138] Quando a instrução é executada pelo sistema de computador, a E do segundo operando e terceiro operando é colocado no local do segundo operando. Posteriormente, os conteúdos originais do segundo operando (antes da operação AND) são colocados inalterada na localização de primeira operando. Para LAN OpCode, os operadores são 32 bits. Para LANG OpCode, os operadores são 64 bits. A conjuntivo e é aplicado ao bit de operandos a pouco. O conteúdo de uma posição de bit na sequência é ajustado para um, se as posições de bit correspondentes em ambos os operandos conter os; Caso contrário, o bit resultado é definido como zero. A busca do segundo operando para fins de carregamento e a loja para a localização do segundo operando parecem ser uma referência atualização intertravado bloco concorrente como observado por outros processadores. Uma operação de serialização operando-especifica é realizada. 0 deslocamento é tratado como um inteiro assinado binária de 20 bits. O segundo operando da LAN deve ser designado em um limite de palavra. O segundo operando de LANG deve ser designado em um limite de palavras duplas. Caso contrário, uma exceção é gerada especificação. Código resultante Estado: 0 Resultado de zero 1 Resultado não zerar 2 - 3 - Exceções do programa: • Access (buscar e armazenar, operando 2) • Operação (se a facilidade de acesso intertravado não está instalado) • Especificação Programação Nota: Consulte as notas de programação para CARGA E ADD. CARGA E EXCLUSIVA OU (FORMATO RSY) [00139] Quando a instrução é executada pelo sistema de computador, o OU-exclusivo do segundo operando e terceiro operando é colocado no local do segundo operando. Posteriormente, os conteúdos originais do segundo operando (antes da operação OU EXCLUSIVO) são colocados inalterada na localização de primeiro operando. Para OpCode LAX, os operadores são 32 bits. Para LAXG OpCode, os operadores são 64 bits. A exclusiva conjuntivo ou da sua aplicação para o bit de operandos a pouco. O conteúdo de uma posição de bit na sequência é ajustado para um, se os bits nas posições de bits correspondentes dos dois operandos são diferentes; Caso contrário, o bit resultado é definido como zero. A busca do segundo operando para fins de carregamento e a loja para a localização do segundo operando parecem ser uma referência atualização intertravado bloco concorrente como observado por outros processadores. Uma operação de serialização operando-específica é realizada. O deslocamento é tratado como um inteiro assinado binária de 20 bits. O segundo operando de LAX deve ser designado em um limite de palavra. O segundo operando de LAXG deve ser designado em um limite de palavras duplas. Caso contrário, uma exceção é gerada especificação. Código resultante Estado: 0 Resultado de zero 1 Resultado não zerar 2 - 3 - Exceções do programa: • Access (buscar e armazenar, operando 2) • Operação (se a facilidade de acesso intertravado não está instalado) • Especificação Programação Nota: Consulte as notas de programação para CARGA E ADD. CARGA E OU (FORMATO RSY) [00140] Quando a instrução é executada pelo sistema de computador, o OR do segundo operando e terceiro operando é colocado no local do segundo operando. Posteriormente, os conteúdos originais do segundo operando (antes da operação OR) são colocados inalterada na localização de primeira operando. Para OpCode LAO, os operadores são 32 bits. Para LAOG OpCode, os operadores são 64 bits. A conjuntivo ou da sua aplicação para o bit de operandos a pouco. O conteúdo de uma posição de bit na sequência é ajustado para um, se a correspondente posição de bit em um ou ambos os operandos contém um; Caso contrário, o bit resultado é definido como zero. A busca do segundo operando para fins de carregamento e a loja para a localização do segundo operando parecem ser uma referência atualização intertravado bloco concorrente como observado por outros processadores. Uma operação de serialização operando-específica é realizada. O deslocamento é tratado como um inteiro assinado binária de 20 bits. O segundo operando de LAO deve ser designado em um limite de palavra. O segundo operando de LAOG deve ser designado em um limite de palavras duplas. Caso contrário, uma exceção é gerada especificação. Código resultante Estado: 0 Resultado de zero 1 Resultado não zerar 2 - 3 - Exceções do programa: • Access (buscar e armazenar, operando 2) • Operação (se a facilidade de acesso intertravado não é instalado) • Especificação Programação Nota: Consulte as notas de programação para CARGA E ADD. CARGA PAIR disjuntos (SSF FORMATO) [00141] Quando a instrução é executada pelo sistema de computador, o registo R3 geral designa o registo mesmo numeradas de um par de registradores par / impar. O primeiro operando é colocado inalterado no registro de número par do terceiro operando, e o segundo operando é colocado inalterada no registrador impar do terceiro operando. O código de condição indica se os primeiro e segundo operandos parecem ser obtido por meio de um bloco de intertravamento concomitante buscar. Para LPD OpCode, o primeiro e o segundo operadores são palavras de armazenamento, e o terceiro operando é em bits 32-63 de registos gerais R3 e R3 + 1; bits de 0-31 dos registradores mantêm-se inalterados. Para LPDG OpCode, as primeiras e segundas palavras duplas operandos são em armazenamento, e o terceiro é operando em bits 0-63 de registos gerais R3 e R3 + 1. Quando, como observado por outros CPU, os primeiro e segundo operandos parecem ser buscada por meio de blocos intertravados buscar-concorrente, código de condição Ois set. Quando os primeiro e segundo operandos não parecem ser obtido por meio de um bloco de atualização de interbloqueio concorrente, o código de condição 3 está definida. O terceiro operando é carregado independentemente do código de condição. O deslocamento dos primeiro e segundo operandos é tratado como um número inteiro binária sem sinal de 12 bits. 0 primeiro e segundo operandos de LPD deve ser designado em um limite de palavra. O primeiro e segundo operandos de LPDG deve ser designado em um limite de palavras duplas. Geral registro R3 deve designar o registo mesmo contados. Caso contrário, uma exceção é gerada especificação. Código resultante Estado: 0 Register par carregado por meio de buscar intertravado 1 - 2 - 3 par Register não carregado por meio de buscar intertravado Exceções do programa: • Access (fetch, operandos 1 e 2) • Operação (se a facilidade de acesso intertravado não está instalado) • Especificação Notas de programação: 1 . A definição do código de condição é dependente de armazenamento acessa por outros CPUs na configuração. 2. Quando o código de condição resultante é 3, o programa pode ramificar de volta para reexecutar a instrução LOADPAIR disjuntos. No entanto, após repetidas tentativas frustradas de alcançar um intertravado buscar, o programa deve utilizar um meio alternativo de serialização acesso aos operandos de armazenamento. Recomenda-se que o programa de reexecutar o disjuntos CARGA PAIR não mais de 10 vezes antes de ramificar para o caminho alternativo. 3. O programa deve ser capaz de acomodar uma situação em que o código de condição 0 nunca é definido. INSTRUÇÕES DE CARGA / LOJA ON-condicionado: [00142] A seguir estão exemplo Load / Store-on-condição instruções: CARGA SOBRE A CONDIÇÃO (RRF, RSY FORMATO) [00143] Quando a instrução é executada pelo sistema de computador, o segundo operando é colocado inalterada no primeiro local operando se o código de condição tem um dos valores especificados por M3; caso contrário, o primeiro operando permanece inalterado. Para LOC e LROC, os primeiro e segundo operandos são 32 bits, e por LGOC OpCode e LGROC OpCode, os primeiro e segundo operandos são 64 bits. O campo M3 é usado como uma máscara de quatro bits. Os quatro códigos de condição (0, 1, 2 e 3) correspondem, esquerda para a direita, com os quatro bits da máscara, como se segue: [00144] O código de condição actual é usado para seleccionar o bit de máscara correspondente. Se o bit de máscara seleccionada pelo código de condição é um, o carregamento é realizado. Se o bit de máscara seleccionada é zero, a carga não é executada. O deslocamento para LOC e LGOC é tratado como a20 bits assinado inteiro binário. Para LOC e LGOC, quando a condição especificado pelo campo M3 não for atendida (isto é, a operação de carga não é executada), é dependente se uma exceção acesso, ou por detecção de zero endereço é gerado para o segundo operando modelo. Código Estado: O código permanece inalterado.
Exceções do programa: • Access (fetch, operando 2 do LOC e LGOC) • Operação (se a instalação de carga / store-on-condição não está instalado) Notas de programação: 1. Quando o campo M3 conter zeros, a instrução atua como um NOP. Quando o campo M3 contém todos aqueles e não existe condição de exceção, a operação de carregamento é realizada sempre. No entanto, estes não são o meio preferencial de implementação de uma carga NOP ou incondicional, respectivamente. 2. Para LOC e LGOC, quando a condição especificada pelo campo M3 não é cumprida, é modelo dependente se o segundo operando é trazido para o cache. 3 . CARGA SOBRE A CONDIÇÃO fornece uma função semelhante à de um ramo separado ON instrução CONDIÇÃO seguido por uma instrução CARGA, exceto que CARGA SOBRE A CONDIÇÃO não fornece um registro de índice. Por exemplo, as duas sequências de instruções seguintes são equivalentes. Nos modelos que implementam ramificação preditivo, a combinação da filial por instruções de condição e de carga pode executar um pouco melhor do que a carga sobre a instrução condição quando a CPU é capaz de prever com sucesso a condição de filial. No entanto, em modelos onde a CPU não é capaz de prever com sucesso a condição filial, por exemplo, quando a condição é mais aleatória, a carga sobre instrução condição pode proporcionar uma melhoria significativa do desempenho. LOJA ON CONDIÇÃO {RSY FORMATO) [00145] Quando a instrução é executada pelo sistema de computador, o primeiro operando é colocado inalterada no segundo local, operando se o código de condição tem um dos valores especificados por M3; caso contrário, o segundo operando permanece inalterado. Para STOC OpCode, os primeiro e segundo operandos são 32 bits, e por STGOC OpCode, os primeiro e segundo operandos are64 pedaços. O campo M3 é usado como uma máscara de quatro bits. Os quatro códigos de condição (0, 1, 2 e 3) correspondem, esquerda para a direita, com os quatro bits da máscara, como se segue: O código de condição atual é usado para selecionar o bit de máscara correspondente. Se o bit de máscara selecionada pelo código de condição é um, o armazenamento é realizado. Se o bit de máscara selecionada é zero, a loja não é realizada. Sequenciamento de instruções normais prossegue com a instrução sequencial seguinte. O deslocamento é tratado como um inteiro assinado binária de 20 bits. Quando a condição especificado pelo campo M3 não for atendida (isto é, operação de armazenamento não é executada), que é um modelo dependente se qualquer um ou todos dos seguintes ocorrer para o segundo operando: (a) uma exceção de acesso é gerada, (b) um evento de armazenamento de alteração PER é gerado, (c) um PER evento de detecção de zer o-address-é gerado, ou (d) o bit de mudança está definido. Código Estado: O código permanece inalterado.
Exceções do programa: • Access (loja, operando 2) • Operação (se a instalação de carga / store-on-condição não está instalado) Notas de programação: 1. Quando o campo M3 conter zeros, a instrução actua como um NOP. Quando o campo M3 contém todos aqueles e sem condição de exceção existe, a operação de armazenamento é sempre executada. No entanto, estes não são o meio preferencial de implementação de uma loja NOP ou incondicional, respectivamente. 2. Quando a condição especificada pelo campo M3 isnot atingidas, é modelo dependente se o segundo operando é trazido para o cache. 3. LOJA EM CONDIÇÃO fornece uma função semelhante à de um ramo separado ON instrução CONDIÇÃO seguido por uma instrução de armazenamento, exceto que LOJA EM CONDIÇÃO não fornece um registro de Índice. Por exemplo, as duas sequências de instruções seguintes são equivalentes. Nos modelos que implementam ramificação preditivo, a combinação da filial por instruções de condição e loja pode executar um pouco melhor do que a LOJA ON instrução condição quando a CPU é capaz de prever com sucesso a condição de filial. No entanto, nos modelos em que o processador não é capaz de prever com sucesso a condição de derivação, por exemplo, quando a condição é mais aleatória, a instrução de armazenamento ONCONDITION pode proporcionar uma melhoria significativa no desempenho. INSTRUÇÕES DlSTINCT-operandos-unidade: [00146] Os seguintes são exemplos de instruções Distinct-operando instalações: ADD (RR, RRE, RRF, RX, RXY FORMATO) , ADD IMEDIATA (RIL, RIE, SIY FORMATO) [00147] Quando a instrução é executada pelo sistema de computador, para ADD (A, AG, AGF, AGFR, AGR, AR, e AY OpCodes) e para ADD IMEDIATA (AFI, AGFI, AGSI, e OpCodes ASI), a segunda operando é adicionado ao primeiro operando, e a soma é colocado no local do primeiro operando. Para ADD (AGRK e ARK) e para ADD IMEDIATA (AGHIK e AHIK OpCodes), o segundo operando é adicionado tothe terceiro operando, ea soma é colocado no primeiro local operando. [00148] Para ADD (A, AR, ARK, e AY OpCodes) e para ADD IMEDIATA (OpCodes AFI), os operandos ea soma são tratados como assinados de 32 bits binários inteiros. Para ADD (AG, AGR, e OpCodes AGRK) , eles são tratados como de 64 bits assinados inteiros binários. [00149] Para ADD (AGFR, AGF OpCodes) e para ADD IMEDIATA (AGFI OpCode), o segundo operando é tratado como um inteiro assinado binário de 32 bits, eo primeiro operando ea soma são tratados como de 64 bits assinados inteiros binários . Para ADICIONAR IMEDIATA (ASI OpCode), o segundo operando é tratado como um inteiro assinado binário de 8 bits, e do primeiro operando ea soma são tratados como inteiros binários de 32 bitsigned. Para ADICIONAR IMEDIATA (AGSI OpCode), o segundo operando é tratado como um inteiro assinado binário de 8 bits, e do primeiro operando ea soma são tratados como de 64 bits assinados inteiros binários. Para ADDIMMEDIATE (AHIK OpCode), o primeiro e terceiro operandos são tratados como assinados de 32 bits binários inteiros, eo segundo operando é tratado como um binário inteiro assinado de 16 bits. Para ADICIONAR IMEDIATA (AGHIK OpCode), o primeiro e terceiro operandos são tratados como 64-bit assinado inteiros binários, e o segundo operando é tratado como um inteiro binário de 16 bitsigned. [00150] Quando há um excesso, o resultado é obtido permitindo que qualquer transportar para a posição de sinal-bit e ignorando qualquer transportar para fora da posição sign-bit, e código de condição 3 está definido. Se a máscara de fixo-ponto-estouro é um, numa interrupção do programa para ponto fixo de estouro ocorre. [00151] Quando a facilidade de acesso intertravado está instalado e o primeiro operando de ADD IMEDIATA (ASI, AGSI) está alinhado em um limite integrante correspondente ao seu tamanho, então a buscar e armazenar do primeiro operando são realizadas como uma atualização intertravado como observados por outros CPUs, e uma operação-operando-serialização especifico é executado. Quando a facilidade de acesso intertravado não está instalado, ou quando o primeiro operando de ADD IMEDIATA (ASI, AGSI) não está alinhado em um limite integrante correspondente ao seu tamanho, então a buscar e armazenar do operando não são executadas como uma atualização intertravado. [00152] O deslocamento para A é tratado como um inteiro binário de 12 bitunsigned. O deslocamento para AY, AG, AGF, AGSI e ASI, é tratado como um binário inteiro assinado de 20 bits. Código resultante Estado: 0 Resultado zero; nenhum estouro 1 Resultado inferior a zero; nenhum estouro Resultado 2 maior do que zero; nenhum estouro 3 Overflow [00153] excepções do programa: • Access (buscar e armazenar, operando 1 de AGSI e ASI somente; buscar, operando 2 de A, AY, AG, e AGF apenas) • estouro de ponto fixo • Operação (AY, se o mecanismo de longo deslocamento não está instalado; AFI e AGFI, se a instalação extendediramediate não está instalado; AGSI e ASI, se a instalação gerais-instruções-extensão não está instalado; ARK, AGRK, AHIK, e AGHIK, se a instalação distintas-operandos não está instalado) Notas de programação: 1. Acede ao primeiro operando de ADD IMEDIATA (AGSI e ASI) consiste em buscar um firstoperand de armazenamento e, posteriormente, armazenando o valor atualizado. Quando a facilidade de acesso interligados não está instalado, ou quando o primeiro operando não está alinhada num limite integrante correspondente ao seu tamanho, a busca e armazenamento de acessos para o primeiro operando não ocorrem necessariamente um imediatamente após o outro. Sob tais condições, ADD IMEDIATA (AGSI e ASI) não pode ser usado com segurança para atualizar um local de armazenamento em caso existe a possibilidade de que um outro CPU ou o subsistema de canal pode também ser a atualização da localização. Quando a facilidade de acesso intertravado está instalado e o primeiro operando está alinhado em um limite integrante correspondente ao seu tamanho, o operando é acessado usando uma atualização de bloco intertravado concorrente . 2 . Para certas linguagens de programação que ignoram condições de estouro de operações aritméticas, a definição do código de condição 3 obscurece o sinal do resultado. No entanto, para ADD imediato, o sinal de campo 12 (o que é conhecido no momento da geração de código) podem ser utilizados na criação de uma máscara ramo que irá determinar com precisão o sinal resultante. [00154] ADICIONAR LÓGICO (RR, RRE, RX, RXY Format) ADICIONAR LÓGICO IMEDIATA (RIL Format) [00155] Quando a instrução é executada pelo sistema de computador, para ADD LÓGICO (AL, ALG, ALGF, ALGFR, ALGR, ALR, e ALY OpCodes) e para ADD LÓGICO IMEDIATA (ALGFI e ALFI OpCodes), o segundo operando é adicionada para o primeiro operando, e a soma é colocado no local firstoperand. [00156] para ADD LÓGICO (ALGRK e ALRK OpCodes), o segundo operando é adicionado ao terceiro operando, e a soma é colocado no local do primeiro operando. Para ADD LÓGICO (AL, ALR, ALRK, e ALY OpCodes) e para ADD LÓGICO IMEDIATA (ALFI OpCode), os operandos ea soma são tratados como de 32 bits binários inteiros não assinados . Para ADD LÓGICO (ALG, ALGR, e ALGRK OpCodes), eles são tratados como de 64 bits binários inteiros não assinados. Para ADICIONAR LÓGICO (ALGFR, ALGF OpCodes) e para ADD LÓGICO IMEDIATA (ALGFI OpCode), o segundo operando é tratado como um binário inteiro não assinado de 32 bits, eo primeiro operando ea soma são tratados como de 64 bits binários inteiros não assinados. [00157] 0 deslocamento para a AL é tratado como um binário inteiro não assinado de 12 bits. O deslocamento para ALY, ALG, ALGF e é tratado como um inteiro assinado binária de 20 bits. Código resultante Estado: 0 Resultado zero; não carregue 1 Resultado não zero; não transportar 2 Resultado zero; transportar 3 Resultado não zero; transportar Exceções do programa: • Access (fetch, operando 2 de AL, ALY, ALG, e só ALGF) • Operação (ALY, se o mecanismo de longo deslocamento não está instalado; ALFI e ALGFI, se a instalação extendedimmediate não está instalado; ALRK e ALGRK, se a instalação distintas-operandos não está instalado) [00158] ADICIONAR lógico com IMEDIATA ASSINADO (SIY, RIE Format) [00159] Quando a instrução é executada pelo sistema de computador, para ALGSI OpCode e ALSI OpCode, o segundo operando é adicionado ao primeiro operando, e a soma é colocado no local firstoperand. Para ALGHSIK e ALHSIK, Opcodes o segundo operando é adicionado ao terceiro operando, e a soma é colocado no local do primeiro operando. Para ALSI OpCode, o primeiro operando e a soma são tratados como de 32 bits binários inteiros não assinados. Para ALGSI OpCodes, o primeiro operando e a soma são tratados como de 64 bits binários inteiros não assinados. Para tanto ALSI e ALGSI, o segundo operando é tratado como um inteiro assinado binário de 8 bits. Para ALHSIK OpCode, o primeiro e terceiro operandos são tratados como de 32 bits binários inteiros não assinados. Para ALGHSIK OpCode, o primeiro e terceiro operandos são tratados como de 64 bits binários inteiros não assinados.
Para tanto ALGHSIK e ALHSIK, o segundo operando é tratado como um inteiro assinado binária de 16 bits. [00160] Quando a facilidade de acesso intertravado está instalado e o primeiro operando está alinhado em um limite integrante correspondente ao seu tamanho, o operando é acessado usando uma atualização de bloco intertravado concorrente. Para ALGSI e ALSI, o segundo operando é adicionado ao primeiro operando, e a soma é colocado na primeira localização operando. Para ALGHSIK e ALHSIK, o segundo operando é adicionado ao terceiro operando, e a soma é colocado no local do primeiro operando. Para ALSI, o primeiro operando e a soma são tratados como de 32 bits binários inteiros não assinados. Para ALGSI, o primeiro operando e a soma são tratados como inteiros binários de 64 bitunsigned. Para tanto ALSI e ALGSI, o segundo operando é tratado como um inteiro assinado binário de 8 bits. Para ALHSIK, o primeiro e terceiro operandos são tratados como de 32 bits binários inteiros não assinados. Para ALGHSIK, o primeiro e terceiro operandos são tratados como inteiros binários de 64 bitunsigned. Para tanto ALGHSIK e ALHSIK, o segundo operando é tratado como um inteiro de binário 16-bitsigned. Quando a facilidade de acesso intertravado está instalado e o primeiro operando está alinhado em um limite integrante correspondente ao seu tamanho, então a buscar e armazenar do primeiro operando é realizada como uma atualização intertravado como observado por outros processadores, e um operando-serialização especifico operação é executada. Quando a facilidade de acesso intertravado não está instalado, ou quando o primeiro operando de ADD LÓGICO WITHSIGNED IMEDIATA (ALSI, ALGSI) não está alinhado em um limite integrante correspondente ao seu tamanho, então a buscar e armazenar do operando não são executadas como uma atualização intertravado. Quando o segundo operando contém um valor negativo, o código de condição é definido como se de uma operação SUBTRACTLOGICAL foi realizada. CodeO condição nunca é definido quando o segundo operando é negativo. O deslocamento é tratado como um inteiro assinado binária de 20 bits. Código resultante Estado: 0 Resultado zero; não carregue 1 Resultado não zero; não carregue 2 Resultado zero; transportar 3 Resultado não zero; transportar E (RR, RRE, RRF, RX, RXY, SI, SIY, SS FORMATO) (00161] Quando a instrução é executada pelo sistema de computador, para N, CN, NG, NGR, NI, niy, NR, e NY OpCodes, a E do primeiro e segundo operandos é colocado na primeira localização operando. Para NGRK e NRK, a E do segundo e do terceiro operandos é colocado na primeira localização operando. A conjuntivo e é aplicado ao bit de operandos a pouco. O conteúdo de uma posição de bit na sequência é ajustado para um, se as posições de bit correspondentes em ambos os operandos conter os; Caso contrário, o bit resultado é definido como zero. Para E (NC OpCode), cada operando é processado esquerda para a direita. Quando os operandos se sobrepõem, o resultado obtido é como se os operandos foram processados um byte de cada vez e cada byte resultado foram armazenadas imediatamente após buscar os bytes de operandos necessários. Para E (NI e niy OpCodes), o primeiro operando é um byte de comprimento, e apenas um byte é armazenado. Para E (N, NR, NRK, e NY), os operadores são 32bits, e para E (NG, NGR, e NGRK OpCodes), são 64 bits. Os deslocamentos para N, NI, e ambos os operadores de NC são tratados como de 12 bits binários inteiros não assinados. O deslocamento para NY, niy, e NG é tratado como a20 bits assinado inteiro binário. Código resultante Estado: 0 Resultado de zero 1 Resultado não zerar 2 - 3 - Exceções do programa: • Access (fetch, operando 2, N, NY, NG, e NC; buscar e armazenar, operando 1, NI, niy, e NC) • Operação (niy e NY, se a instalação de longo deslocamento não está instalado; NGRK e NRK, se a instalação de operandos distintos não está instalado) EXCLUSIVE OR (RR, RRE, RRF, RX, RXY, SI, SIY, SS FORMATO) [00162] Quando a instrução é executada pelo sistema de computador, para X, XC, XG, XGR, XI, XIY, XR, e XY OpCodws, OR exclusiva dos primeiro e segundo operandos é colocado no local do primeiro operando. Para XGRK e XRK OpCodws, OR exclusiva dos segundo e terceiro operandos é colocado no local do primeiro operando. A conjuntivo OU EXCLUSIVO é aplicada ao bit de operandos a pouco. O conteúdo de uma posição de bit na sequência é ajustado para um, se os bits nas posições de bits correspondentes dos dois operandos são diferentes; Caso contrário, o bit resultado é definido como zero. Para EXCLUSIVE OR (XC OpCodws), cada operando é processado esquerda para a direita. Quando os operandos se sobrepõem, o resultado obtido é como se os operandos foram processados um byte de cada vez e cada byte resultado foram armazenadas imediatamente após buscar os bytes de operandos necessários. Para EXCLUSIVE OR (XI, XIY OpCodws), o primeiro operando é um byte de comprimento, e somente um byte é armazenado. Para EXCLUSIVE OR (X, XR, XRK, e XY OpCodws), os operadores são de 32 bits, e por EXCLUSIVE OR (XG, XGR, e XGRK OpCodws), são 64 bits. Os deslocamentos para X, XI, e ambos os operadores de XC são tratados como de 12 bits binários inteiros não assinados. O deslocamento para XY, XIY, e XG é tratado como a20 bits assinado inteiro binário. Código resultante Estado: 0 Resultado de zero 1 Resultado não zerar 2 - 3 - Exceções do programa: • Access (fetch, operando 2, X, XY, XG, e XC; buscar e armazenar, operando 1, XI, XIY, e XC) • Operação (XIY e XY, se o mecanismo de longo deslocamento não está instalado; XGRK e XRK, se a instalação de operandos distintos não está instalado) Notas de programação: 1 . - 2. EXCLUSIVE OR pode ser usado para inverter um pouco, uma operação particularmente útil em testes e configuração programada interruptores binários. 3. Um campo EXCLUSIVE-ORed com si torna-se allzeros.4. Para OU EXCLUSIVO (XR ou XGR) , a sequência de um 0U-EXCLUSIVO B, B OU-EXCLUSIVO A, ou B-AEXCLUSIVE resulta na troca dos conteúdos de A e B, sem o uso de um register . 5 geral adicional. Acede ao primeiro operando de EXCLUSIVE OR (XI) e OU EXCLUSIVO (XC) consistem na busca de um byte de primeira operando a partir do armazenamento e, posteriormente, armazenando o valor atualizado. Estes buscar e armazenamento de acessos para um byte especial não ocorrem necessariamente um imediatamente após o outro. Assim, exclusivos ou não pode ser usado com segurança para atualizar um local no armazenamento, se existe a possibilidade de que outra CPU ou um pro-grama de canal também pode estar atualizando o local. OR (RR, RRE, RRF, RX, RXY, SI, SIY, SS FORMATO) [00163] Quando a instrução é executada pelo sistema de computador, de O, CO, OG, OGR, OI, OpCodes oiy, OU, e OY, a ou da primeira e segunda operandos é colocado na primeira localização operando. Para OGRK e ork, o quer do segundo e terceiro operandos é colocado no local do primeiro operando. A conjuntivo ou da sua aplicação para o bit de operandos a pouco. O conteúdo de uma posição de bit na sequência são ajustados para um, se a correspondente posição de bit em um ou ambos os operandos contém um; Caso contrário, o bit resultado é definido como zero. Para OR (OC OpCode), cada operando é processado esquerda para a direita. Quando os operandos se sobrepõem, o resultado obtido é como se os operandos foram processados um byte de cada vez e cada byte resultado foram armazenadas imediatamente após buscar os bytes de operandos necessários. Para OU (01, oiy OpCodes), o primeiro operando é um byte de comprimento, e somente um byte é armazenado. Para OR (O, OR, ORK e OY OpCodes), os operadores são 32bits, e por OR (OG, OGR, e OGRK OpCodes), são deslocamentos 64bits.The para O, 01, e ambos os operadores de OC são tratados como de 12 bits binários inteiros não assinados. O deslocamento para OY, oiy, e OG é tratado como a20 bits assinado inteiro binário. Código resultante Estado: 0 Resultado de zero 1 Resultado não zerar 2 - 3 - SHIFT esquerda ÚNICO (RS, RSY FORMATO) [00164] Quando a instrução é executada pelo sistema de computador, para SLA OpCode, a parte numérica de 31 bits do primeiro operando assinado é deslocada para a esquerda do número de bits especificado pelo endereço do segundo operando, e o resultado é colocado no localização de primeira operando. Bits 0-31 de registerRl geral permanecem inalteradas. Para Slak OpCode, a parte numérica de 31 bits do terceiro operando assinado é deslocada para a esquerda do número de bits especificado pelo endereço do segundo operando, e o resultado, com o bit de sinal do terceiro operando anexado à sua esquerda, é colocado em a localização do primeiro operando. Bits 0-31 de registo RI geral permanecem inalterados, e o terceiro operando permanece inalterado no registo R3 geral. Para ESCÓRIA OpCode, a parte numérica 63 bits do terceiro operando assinado é deslocada para a esquerda do número de bits especificado pelo endereço do segundo operando, e o resultado, com o bit de sinal do terceiro operando anexado à sua esquerda, é colocado em a localização do primeiro operando. O terceiro operando permanece inalterado em geral registar R3.The endereço do segundo operando não é usado para tratar os dados; seus seis bits mais à direita indicam o número de posições de bits a ser deslocada. A parte restante do endereço é ignorado. Para SLA OpCode, o primeiro operando é tratado como um inteiro binário de 32 bitsigned em posições de bits 32-63 do registo geral RI . O sinal do primeiro operando permanece inalterado. Todos os 31 bits numéricos do operando participar do desvio à esquerda. Para Slak, o primeiro e terceiro operandos são tratados AS32-bit assinado inteiros binários nas posições de bits 32-63 de registos gerais RI e R3, respectivamente. O sinal do primeiro operando é ajustado igual ao sinal do terceiro operando. Todos os 31 bits numéricos do terceiro operando participar do desvio à esquerda. Para escória, o primeiro e terceiro operandos são tratados as64-bit assinado inteiros binários nas posições de bits 0-63 de registos gerais RI e R3, respectivamente. O sinal do primeiro operando é ajustado igual ao sinal do terceiro operando. Todos os 63 bits numéricos do terceiro operando participar do desvio à esquerda. Para SLA, escória, ou Slak, zeros são fornecidos para as posições de bits desocupados à direita. Se um ou mais bits, ao contrário o bit de sinal é deslocado para fora da posição de bit 33, para o SLA ou Slak, ou posição de bit 1, para a escória, ocorre um excesso, e o código de condição 3 está definida. Se o bit de máscara de fixo-ponto-estouro é um, numa interrupção do programa para ponto fixo de estouro ocorre. Código resultante Estado: 0 Resultado zero; nenhum estouro 1 Resultado inferior a zero; nenhum estouro Resultado 2 maior do que zero; nenhum estouro 3 Overflow · -Ponto fixo estouro • Operação (Slak, se a instalação distintas-operandos não está instalado) LEFT SHIFT ÚNICOS lógica (RS, RSY FORMATO) [00165] Quando a instrução é executada pelo sistema de computador, para SLL OpCode, o primeiro operando de 32 bits é deslocado para a esquerda do número de bits especificado pelo endereço do segundo operando, e o resultado é colocado no local do primeiro operando. Bits 0-31 de registo RI geral permanecem inalteradas. Para SLLK, o terceiro operando de 32 bits é deslocado para a esquerda do número de bits especificado pelo endereço do segundo operando, e o resultado é colocado no local do primeiro operando. Bits 0— 31 de registo RI geral permanecem inalterados, eo terceiro operando permanece inalterado no registo R3 geral. Para SLLG OpCode, o terceiro operando de 64 bits é deslocado para a esquerda do número de bits especificado pelo endereço do segundo operando, e o resultado é colocado no local do primeiro operando. O terceiro operando permanece inalterado em geral registar R3.The endereço do segundo operando não é usado para tratar os dados; seus seis bits mais à direita indicam o número de posições de bits a ser deslocada. A parte restante do endereço é ignorado. Para SLL, o primeiro operando está em posições de bits 32-63 do registo geral RI . Todos os 32 bits do operando participar no deslocamento para a esquerda. Para SLLK, os primeiro e terceiro operandos são nas posições de bits 32-63 de registos gerais RI e R3, respectivamente. Todos os 32 bits do terceiro operando participar no deslocamento para a esquerda. Para SLLG, os primeiro e terceiro operandos são em pouco positionsO-63 de registos gerais RI e R3, respectivamente. Todos os 64 bits do terceiro operando participar do desvio à esquerda. Para SLL, SLLG, ou SLLK OpCodes, zeros são fornecidos para as posições de bits desocupados à direita. Código Estado: O código permanece inalterado.
Exceções do programa: • Operação (SLLK, se a instalação distintas-operandos não está instalado) Shift direita ÚNICO (RS, RSY FORMATO) (00166] Quando a instrução é executada pelo sistema de computador, para SRA OpCode ,, a parte numérica de 31 bits do primeiro operando assinado é deslocada para a direita o número de bits especificado pelo endereço do segundo operando, e o resultado é colocado em a localização do primeiro operando. Bits 0-32 de registo RI geral permanecem inalteradas. Para SRAK OpCode, a parte numérica de 31 bits do terceiro operando assinado é deslocada para a direita o número de bits especificado pelo endereço do segundo operando, e o resultado, com o bit de sinal do terceiro operando anexado à sua esquerda, é colocado na localização de primeira operando. Bits 0-32 de registo RI geral permanecem inalteradas. Para Shift direita ÚNICO (SRAG OpCode,), a parte de 63 bitnumeric do terceiro operando assinado for deslocado para a direita o número de bits especificado pelo endereço do segundo operando, eo resultado, com o bit de sinal do terceiro operando anexado em seu esquerda, é colocado na localização do primeiro operando. O terceiro operando permanece inalterado em geral registar R3.The endereço do segundo operando não é usado para tratar os dados; seus seis bits mais à direita indicam o número de posições de bits a ser deslocada. A parte restante do endereço é ignorado. Para SRA, O primeiro operando é tratado como um inteiro binário de 32 bitsigned em posições de bits 32-63 do registo geral RI. O sinal do primeiro operando permanece inalterado. Todos os 31 bits numéricos do operando participar do deslocamento para a direita. Para SRAK, o primeiro e terceiro operandos são tratados AS32-bit assinado inteiros binários nas posições de bits 32-63 de registos gerais Rl e R3, respectivamente. O sinal do primeiro operando é ajustado igual ao sinal do terceiro operando. Todos os 31 bits numéricos do terceiro operando participar do deslocamento para a direita. Para SRAG, o primeiro e terceiro operandos são tratados as64-bit assinado inteiros binários nas posições de bits 0-63 de registos gerais Rl e R3, respectivamente. O sinal do primeiro operando é ajustado igual ao sinal do terceiro operando. Todos os 63 bits numéricos do terceiro operando participar do deslocamento para a direita. Para SRA, SRAG, ou SRAK, bits deslocados para fora de bit position63 não são inspecionados e são perdidas . Bits igual ao sinal são fornecidos para as posições de bits desocupados na esquerda. Código resultante Estado: 0 Resultado de zero 1 Resultado inferior a zero 2 maior do que zero Resultado 3 - Exceções do programa: • Operação (SRAK, se a instalação distintas-operandos não está instalado) Notas de programação: 1 . Uma mudança de direito de uma posição de bit é equivalente a divisão por 2, com arredondamento para baixo. Quando um número par está deslocada para a direita numa posição, o resultado é equivalente a dividir o número por 2. Quando um número impar é deslocada para a direita numa posição, o resultado é equivalente a dividir o próximo número inferior por 2. Por exemplo, 5 deslocado direito por uma posição pouco produz 2, ao passo que os rendimentos-3 -5 . 2. Para Shift direita ÚNICO (SRA e SRAK), mudar valores 31-63 causa toda a parte numérica de ser deslocado para fora do registo, deixando um resultado de -1 ou zero, dependendo se ou não o conteúdo inicial foi negativa . Para Shift direita ÚNICO (SRAG), a quantidade de deslocamento de 63 provoca o mesmo efeito.
Shift direita ÚNICOS lógica (RS, RSY FORMATO) [00167] Quando a instrução é executada pelo sistema de computador, para OpCode SRL ,, o primeiro operando de 32 bits é deslocado para a direita o número de bits especificado pelo endereço do segundo operando, e o resultado é colocado no local do primeiro operando . Bits 0—31 de registo RI geral permanecem inalteradas. Para SRLK OpCode ,, o terceiro operando de 32 bits é deslocado para a direita o número de bits especificado pelo endereço do segundo operando, e o resultado é colocado no local do primeiro operando. Bits 0-31 de registo RI geral permanecem inalterados, eo terceiro operando permanece inalterado no registo R3 geral. Para SRLG OpCode ,, o terceiro operando de 64 bits é deslocado para a direita o número de bits especificado pelo endereço do segundo operando, e o resultado é colocado no local do primeiro operando. O terceiro operando permanece inalterado em geral registar R3.The endereço do segundo operando não é usado para tratar os dados; seus seis bits mais à direita indicam o número de posições de bits a ser deslocada. A parte restante do endereço é ignorado. Para SRL, o primeiro operando está em posições de bits 32-63 do registo geral RI. Todos os 32 bits do operando participar do deslocamento para a direita. Para SRLK, os primeiro e terceiro operandos são em pouco positions32-63 de registos gerais RI e R3, respectivamente. Todos os 32 bits do terceiro operando participar do deslocamento para a direita. Para SRLG, os primeiro e terceiro operandos são em pouco positionsO-63 de registos gerais RI e R3, respectivamente. Todos os 64 bits do terceiro operando participar do deslocamento para a direita. Para SRL, SRLG, ou SRLK, bits deslocados para fora de position63 bits não são inspecionados e são perdidas.
Zeros são fornecidos para as posições de bits desocupados na esquerda. Código Estado: O código permanece inalterado.
Exceções do programa: * Operação (SRLK, se a instalação distintas-operandos não está instalado) SUBTRACT (RR, RRE, RRF, RX, RXY FORMATO) [00168] Quando a instrução é executada pelo sistema de computador, para S, SG, SGF, SGFR, SGR, SR, e SY, o segundo operando é subtraído do primeiro operando, e a diferença é colocado no local do primeiro operando . Para SGRK e SRK, o terceiro operando é subtraído a partir do segundo operando, e a diferença é colocado no local do primeiro operando. Para S, SR, a SRK, e SY, os operandos ea diferença são tratados como assinados de 32 bits binários inteiros. Para SG, SGR e SGRK, eles são tratados como inteiros binários de 64 bitsigned. Para SGFR e SGF, o segundo operando é tratado como um inteiro assinado binária de 32 bits, e o primeiro operando a diferença e são tratados como de 64 bits binários inteiros assinados. Quando há um excesso, o resultado é obtido permitindo que qualquer transportar para a posição de sinal-bit e ignorando qualquer transportar para fora da posição sign-bit, e código de condição 3 está definido. Se a máscara de fixo-ponto-estouro é um, numa interrupção do programa para ponto fixo de estouro ocorre. O deslocamento para S é tratado como um inteiro de binário 12-bitunsigned. O deslocamento para SY, SG, e SGF é tratado como um binário inteiro assinado de 20 bits. Código resultante Estado: 0 Resultado zero; nenhum estouro 1 Resultado inferior a zero; nenhum estouro Resultado 2 maior do que zero; nenhum estouro 3 Overflow Exceções do programa: • Access (fetch, operando 2 de S, SY, SG, e SGF
Somente) • estouro de ponto fixo • Operação (SY, se o mecanismo de longo deslocamento não está instalado; SRK, SGRK, se as distintas-operandos facilidade não está instalado) Notas de programação: 1 . Para SR e SGR, quando RI e R2 designam o mesmo registo, subtraindo é equivalente a limpar o registo. 2. Subtraindo um número máximo negativo de si mesmo dá um resultado zero e nenhum estouro. SUBTRACT LÓGICO (RR, RRE, RRF, RX, RXY FORMATO), subtrair LÓGICO IMEDIATA (RIL FORMATO) [00169] Quando a instrução é executada pelo sistema de computador, para SUBTRAIR LÓGICO (SL, SLG, SLGF, SLGFR, SLGR, sir, SLY) e para SUBTRAIR LOCIGAL imediato, o segundo operando é subtraído do primeiro operando, e a diferença é colocado no local do primeiro operando. Para SUBTRAIR LÓGICO (SLGRK e SLRK), o terceiro operando é subtraído a partir do segundo operando, e a diferença é colocado no local do primeiro operando. Para SUBTRACT LÓGICO (SL, SLR, SLRK, e MANHOSO) e para SUBTRACT LÓGICO IMEDIATA (SLFI), os operandos ea diferença são tratados como de 32 bits binários inteiros não assinados. Para SUBTRACTLOGICAL (SLG, SLGR, e SLGRK), eles são tratados como de 64 bits binários inteiros não assinados. Para SUBTRACTLOGICAL (SLGFR, SLGF) e para SUBTRACTLOGICAL IMEDIATA (SLGFI), o segundo operando é tratado como um binário inteiro não assinado de 32 bits, eo primeiro operando ea diferença são tratados como de 64 bits binários inteiros não assinados. O deslocamento para SL é tratado como um inteiro de binário 12-bitunsigned. O deslocamento para MANHOSO, SLG, e SLGF é tratado como um binário inteiro assinado de 20 bits. Código resultante Estado: 0 - 1 Resultado não zero; pedir emprestado 2 Resultado zero; não emprestar 3 Resultado não zero; não emprestar Exceções do programa: • Access (fetch, operando 2 de SL, manhoso, SLG, e SLGF apenas) * Operação (MANHOSO, se o mecanismo de longo deslocamento não está instalado; SLFI e SLGFI, se a instalação de imediato estendida não está instalado; SLRK e SLGRK, se a instalação distintas-operandos não é instalado) Notas de programação: 1. subtração lógica é realizada por adição de complemento de um do segundo operando e um valor de um para o primeiro operando. A utilização de complemento de um e o valor de um em vez de complemento do segundo operando resulta num transporte em que o segundo operando é zero a dois . 2. SUBTRACT difere lógica a partir SUBTRACT apenas no significado do código de condição e na falta de interrupção para transbordar. 3. A diferença zero é sempre acompanhada por um carry out do bit posição 0 para SLGR, SLGFR, SLG, e SLGF ou posição de bit 32 para SLR, SL, e manhoso, e, portanto, não pedir emprestado. 4. A configuração padrão para SUBTRACT LÓGICO condição-código também pode ser interpretada como indicando a presença ou ausência de um transporte, POPULAÇÃO COUNT INSTRUÇÃO: [00170] A seguir está uma instrução exemplo Contagem da População: POPULAÇÃO COUNT (RRE FORMATO) [00171] Quando a instrução é executada pelo sistema de computador, uma contagem do número de bits de cada um dos oito bytes de registo R2 geral é colocado no byte correspondente do registo RI geral. Cada byte do registo geral RI é um número inteiro binário de 8 bits na gama de 0-8 . Código resultante Estado: 0 Resultado de zero 1 Resultado não zerar 2 - 3 - • Operação (se a instalação de população de contagem não está instalado) Notas de programação: 1. O código de condição é definido com base em todos os 64 bits do registo geral RI.2. O número total de um bits num registo geral pode ser calculado como se mostra abaixo.
Neste exemplo, registro geral 15 contém o número de bits a serem contados; o resultado contendo o número total de bits em um registro geral de 15 é colocado no registo geral 8. (Cadastro Geral 9 é utilizado como um registo de trabalho e contém valores residuais na conclusão.) 2. Se houver uma alta probabilidade de que os resultados das instruções POPCNT são iguais a zero, o programa pode inserir uma instrução de ramificação condicional pode ser inserido para ignorar a adição e deslocando as operações com base no código de condição definida por POPCNT. 3. Utilizando técnicas semelhantes à mostrada na nota de programação 2, pode ser determinado o número de um bits de uma palavra, halfword, ou bytes não contíguas do segundo operando. [00172] Numa concretização, referindo-se a FIG 6A e 6B, uma operação aritmética / lógica instrução 608 é executada, em que a instrução compreende um operando interligados memória, a aritmética / instrução lógica que compreende um campo de código de operação (OP), um primeiro campo de registo ( RI) especificando um primeiro operando em um primeiro registo, um segundo campo de registo (332 ) especificando uma segunda registrar o segundo registo especificando localização de um segundo operando na memória, e um campo de terceiro registo (R3) especificando um terceiro registo, a execução de a aritmética / instrução lógica compreende: a obtenção de 601 por um processador, um segundo operando a partir de uma localização na memória indicada pelo segundo registo, o segundo operando consistindo de um valor (o valor pode ser guardado 607 numa zona de armazenamento temporário numa concretização); a obtenção de um terceiro 602 operando a partir do terceiro registo; executar um código de operação 603 definido operação aritmética ou uma operação lógica com base no segundo operando obtido e o terceiro operando obtido para produzir um resultado; 604 armazenando o resultado produzido no local na memória; e poupando 605 o valor do segundo operando obtido no primeiro registo, em que o valor não é alterada por meio da execução da instrução. [00173] Numa concretização, um código de condição é guardado 606, o código de condição que indica o resultado é zero ou o resultado não é zero. [00174] Numa concretização, o código de operação definido operação aritmética 652 é uma aritmética ou ADD lógico, e o código de operação definido operação lógica é qualquer um de um E, um OU-EXCLUSIVO, ou um OR, e a execução compreende: responsivo ao resultado da operação lógica sendo negativo, poupando o código de condição que indica o resultado for negativo; responsivo para o resultado da operação lógica sendo positivo, poupando o código de condição que indica o resultado é positivo; e em resposta ao resultado da operação lógica ser um transbordamento, poupando o código de condição que indica o resultado é um estouro. [00175] Numa concretização, o tamanho seja especificado por operando o código de operação, em que um ou mais primeiros códigos de operação especificar operandos 32 bit e um ou mais códigos de operação segundo especificam operandos 64 bits. [00176] Numa concretização, a média aritmética / instrução lógica 608 compreende, ainda, o código de operação que consiste em duas áreas separadas de código de operação (PO, PO) , um primeiro campo de deslocamento (DH2) e um segundo campo de deslocamento (DL2), em que a localização na memória é determinada pela adição de conteúdo do segundo registo de deslocamento para um valor assinado, o valor assinado deslocamento compreendendo um valor de sinal estendido o primeiro campo de deslocamento concatenado com o segundo campo de deslocamento. [00177] Numa concretização, a execução compreende ainda: que responde ao código de operação sendo um primeiro código de operação e do segundo operando não ser num limite de 32 bits, gerando uma exceção especificação 653; e em resposta ao código de operação sendo um segundo código de operação e do segundo operando não ser num limite de 64 bits, gerando uma exceção especificação. [00178] Numa concretização, o processador é um processador de um sistema multi-processador, e a execução compreende ainda: a obtenção do segundo operando compreendendo prevenir outros processadores do sistema multi-processador de aceder à localização na memória entre a referida obtenção de o segundo operando e armazenar um resultado, na segunda localização na memória; e sobre disse armazenando o resultado produzido, permitindo que outros processadores do sistema multi-processador para acessar o local na memória. [00179] Embora as concretizações preferidas tenham sido ilustradas e descritas aqui, é para ser entendido que as concretizações não estão limitados à construção precisas aqui divulgadas, e é reservado o direito a todas as alterações e modificações abrangidas pelo âmbito da invenção tal como definido nas reivindicações anexas.
Claims (21)
1. Método implementado por computador para executar uma instrução aritmética / lógica com um operando de memória interligado, a instrução aritmética / lógica incluindo um campo opcode, um primeiro campo de registro especificando um primeiro operando em um primeiro registro, um segundo campo de registro especificando um segundo registro, o segundo registro especificando localização de um segundo operando na memória, e um terceiro campo de registro especificando um terceiro registro, a execução da instrução aritmética / lógica caracterizado pelo fato de que: obtenção por um processador de um segundo operando a partir de um local na memória especificado pelo segundo registro, o segundo operando consistindo de um valor; obtenção de um terceiro operando a partir do terceiro registro; executar uma operação aritmética de opcode definida ou uma operação lógica baseada no segundo operando obtido e o terceiro operando obtido para produzir um resultado; armazenar o resultado produzido no local em memória; e salvar o valor do segundo operando obtido no primeiro registro.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda salvar um código de condição, o código de condição que indica que o resultado é zero ou que o resultado não é zero.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que a operação aritmética de opcode definida é uma aritmética ou lógica ADD, e em que a operação lógica de opcode definida é qualquer uma de um E, um OU-EXCLUSIVO, ou um ou, ainda compreende: em resposta ao resultado da operação lógica ser negativo, salvar o código de condição que indica que o resultado é negativo; em resposta ao resultado da operação lógica a ser positivo, salvar o código de condição que indica que o resultado é positivo; e em resposta ao resultado da operação lógica de ser um estouro, salvar o código de condição que indica o resultado é um estouro.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que o tamanho do operando é especificado pelo opcode, em que um ou mais primeiros opcodes especificam operandos de 32 bit e um ou mais segundo opcodes especificam operandos de 64 bit.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que a instrução aritmética / lógica inclui ainda o opcode que consiste em dois campos de opcode separados, um primeiro campo de deslocamento e um segundo campo de deslocamento, onde a localização em memória é determinada pela adição de conteúdo do segundo registro a um valor de deslocamento assinado, o valor de deslocamento assinado compreendendo um valor de sinal estendido do primeiro campo de deslocamento concatenado com o segundo campo de deslocamento.
6. Método, de acordo com a reivindicação 5, G3.2râ.0te02TX ZSudO ]3€kJLo fato de que ainda compreende: em resposta ao opcode ser um primeiro opcode e o segundo operando não ser em um limite de 32 bits, gerando uma exceção de especificação; e em resposta ao opcode ser um segundo opcode e o segundo operando não ser em um limite de 64 bits, gerando uma exceção de especificação.
7. Método de acordo com a reivindicação 6, caracterizado pelo fato de que o processador é um processador em um sistema multi-processador, caracterizado pelo fato de que ainda compreende: obtenção do segundo operando compreendendo prevenção de outros processadores do sistema multi-processador de acessar o local em memória entre a referida obtenção do segundo operando e armazenar o resultado na segunda localização na memória, e após o referido armazenamento do resultado produzido, permitir que outros processadores do sistema multi-processador acessem o local na memória.
8. Produto programa de computador para executar uma operação instrução aritmética / lógica com um operando de memória interligado, a instrução aritmética / lógica que inclui um campo de opcode, um primeiro campo de registro especificando um primeiro operando em um primeiro registro, um segundo campo de registro especificando um segundo registro, o segundo registro especificando localização de um segundo operando na memória, e um terceiro campo de registro especificando um terceiro registro, o produto de programa de computador compreendendo uma midia de armazenamento tangível legível por um circuito de processamento e que armazena instruções para execução pelo circuito de processamento para execução de uma método para a execução de instrução aritmética / lógica caracterizado pelo fato de que: obtenção por um processador de um segundo operando a partir de um local na memória especificado pelo segundo registro, o segundo operando consistindo de um valor; obtenção de um terceiro operando a partir do terceiro registro; executar uma operação aritmética de opcode definida ou uma operação lógica baseada no segundo operando obtido e o terceiro operando obtido para produzir um resultado; armazenar o resultado produzido no local em memória; e salvar o valor do segundo operando obtido no primeiro registro -
9. Produto de programa de computador, de acordo com a reivindicação 8, caracterizado pelo fato de que compreende ainda salvar um código de condição, o código de condição que indica que o resultado é zero ou que o resultado não é zero.
10. Produto de programa de computador, de acordo com a reivindicação 9, caracterizado pelo fato de que a operação aritmética de opcode definida é uma aritmética ou lógica ADD, e em que a operação lógica de opcode definida é qualquer uma de um E, um OU-EXCLUSIVO, ou um ou, ainda compreende: em resposta ao resultado da operação lógica ser negativo, salvar o código de condição que indica que o resultado é negativo; em resposta ao resultado da operação lógica a ser positivo, salvar o código de condição que indica que o resultado é positivo; e em resposta ao resultado da operação lógica de ser um estouro, salvar o código de condição que indica o resultado é um estouro.
11. Produto de programa de computador, de acordo com a reivindicação 10, caracterizado pelo fato de que o tamanho do operando é especificado pelo opcode, em que um ou mais primeiros opcodes especificam operandos de 32 bit e um ou mais segundo opcodes especificam operandos de 64 bit.
12. Produto de programa de computador, de acordo com a reivindicação 11, caracterizado pelo fato de que a instrução aritmética / lógica inclui ainda o opcode que consiste em dois campos de opcode separados, um primeiro campo de deslocamento e um segundo campo de deslocamento, onde a localização em memória é determinada pela adição de conteúdo do segundo registro a um valor de deslocamento assinado, o valor de deslocamento assinado compreendendo um valor de sinal estendido do primeiro campo de deslocamento concatenado com o segundo campo de deslocamento.
13. Produto de programa de computador, de acordo com a reivindicação 12, caracterizado pelo fato de que ainda compreende: em resposta ao opcode ser um primeiro opcode e o segundo operando não ser em um limite de 32 bits, gerando uma exceção de especificação; e em resposta ao opcode ser um segundo opcode e o segundo operando não ser em um limite de 64 bits, gerando uma exceção de especificação.
14. Produto de programa de computador, de acordo com a reivindicação 8, caracterizado pelo fato de que o processador é um processador em um sistema multi-processador, caracterizado pelo fato de que ainda compreende: obtenção do segundo operando compreendendo prevenção de outros processadores do sistema multi-processador de acessar o local em memória entre a referida obtenção do segundo operando e armazenar o resultado na segunda localização na memória, e após o referido armazenamento do resultado produzido, permitir que outros processadores do sistema multi-processador acessem o local na memória.
15. Sistema de computador para executar uma operação instrução aritmética / lógica tendo um operando de memória interligado, a instrução aritmética / lógica incluindo um campo de opcode, um primeiro campo de registro especificando um primeiro operando em um primeiro registro, um segundo campo de registro especificando um segundo registro, o segundo registro especificando uma localização do segundo operando na memória, e um terceiro campo de registro especificando um registro terceiro caracterizado pelo fato de que compreende: uma memória, e um processador em comunicação com a memória, o processador compreendendo um elemento de busca de instruções para buscar instruções da memória e um ou mais elementos de execução para a execução de instruções buscadas, onde o sistema de computador é configurado para realizar um método para executar a instrução aritmética / lógica que inclui: obtenção por um processador de um segundo operando a partir de um local na memória especificado pelo segundo registro, o segundo operando consistindo de um valor; obtenção de um terceiro operando a partir do terceiro registro; executar uma operação aritmética de opcode definida ou uma operação lógica baseada no segundo operando obtido e o terceiro operando obtido para produzir um resultado; armazenar o resultado produzido no local em memória; e salvar o valor do segundo operando obtido no primeiro registro.
16. Sistema de computador, de acordo com a reivindicação 15, caracterizado pelo fato de que compreende ainda salvar um código de condição, o código de condição que indica que o resultado é zero ou que o resultado não é zero.
17. Sistema de computador, de acordo com a reivindicação 16, caracterizado pelo fato de que a operação aritmética de opcode definida é uma aritmética ou lógica ADD, e em que a operação lógica de opcode definida é qualquer uma de um E, um OU-EXCLUSIVO, ou um ou, ainda compreende: em resposta ao resultado da operação lógica ser negativo, salvar o código de condição que indica que o resultado é negativo; em resposta ao resultado da operação lógica a ser positivo, salvar o código de condição que indica que o resultado é positivo; e em resposta ao resultado da operação lógica de ser um estouro, salvar o código de condição que indica o resultado é um estouro.
18. Sistema de computador, de acordo com a reivindicação 17, caracterizado pelo fato de que o tamanho do operando é especificado pelo opcode, em que um ou mais primeiros opcodes especificam operandos de 32 bit e um ou mais segundo opcodes especificam operandos de 64 bit.
19. Sistema de computador, de acordo com a reivindicação 18, caracterizado pelo fato de que a instrução aritmética / lógica inclui ainda o opcode que consiste em dois campos de opcode separados, um primeiro campo de deslocamento e um segundo campo de deslocamento, onde a localização em memória é determinada pela adição de conteúdo do segundo registro a um valor de deslocamento assinado, o valor de deslocamento assinado compreendendo um valor de sinal estendido do primeiro campo de deslocamento concatenado com o segundo campo de deslocamento.
20. Sistema de computador, de acordo com a reivindicação 19, caracterizado pelo fato de que ainda compreende: em resposta ao opcode ser um primeiro opcode e o segundo operando não ser em um limite de 32 bits, gerando uma exceção de especificação; e em resposta ao opcode ser um segundo opcode e o segundo operando não ser em um limite de 64 bits, gerando uma exceção de especificação.
21. Método de acordo com a reivindicação 20, caracterizado pelo fato de que o processador é um processador em um sistema multi-processador, caracterizado pelo fato de que ainda compreende: obtenção do segundo operando compreendendo prevenção de outros processadores do sistema multi-processador de acessar o local em memória entre a referida obtenção do segundo operando e armazenar o resultado na segunda localização na memória, e após o referido armazenamento do resultado produzido, permitir que outros processadores do sistema multi-processador acessem o local na memória.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/820,768 US20110314263A1 (en) | 2010-06-22 | 2010-06-22 | Instructions for performing an operation on two operands and subsequently storing an original value of operand |
Publications (1)
Publication Number | Publication Date |
---|---|
BRPI1103258A2 true BRPI1103258A2 (pt) | 2016-01-12 |
Family
ID=43498494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BRPI1103258A BRPI1103258A2 (pt) | 2010-06-22 | 2011-06-22 | instruções para realizar uma operação em dois operandos e subsequentemente armazenar o valor original do operando |
Country Status (13)
Country | Link |
---|---|
US (1) | US20110314263A1 (pt) |
EP (1) | EP2419821A1 (pt) |
JP (1) | JP5039905B2 (pt) |
KR (1) | KR101464809B1 (pt) |
CN (1) | CN102298515A (pt) |
AU (1) | AU2010355816A1 (pt) |
BR (1) | BRPI1103258A2 (pt) |
CA (1) | CA2786045A1 (pt) |
MX (1) | MX2012014532A (pt) |
RU (1) | RU2012149548A (pt) |
SG (1) | SG186102A1 (pt) |
WO (1) | WO2011160725A1 (pt) |
ZA (1) | ZA201108701B (pt) |
Families Citing this family (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5357475B2 (ja) * | 2008-09-09 | 2013-12-04 | ルネサスエレクトロニクス株式会社 | データプロセッサ |
US8572635B2 (en) | 2010-06-23 | 2013-10-29 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification |
US8615645B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
US8468284B2 (en) | 2010-06-23 | 2013-06-18 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification to a guest operating system |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
CN104126173A (zh) * | 2011-12-23 | 2014-10-29 | 英特尔公司 | 不会引起密码应用的算术标志的三输入操作数向量add指令 |
US9335993B2 (en) | 2011-12-29 | 2016-05-10 | International Business Machines Corporation | Convert from zoned format to decimal floating point format |
US9329861B2 (en) | 2011-12-29 | 2016-05-03 | International Business Machines Corporation | Convert to zoned format from decimal floating point format |
WO2013101128A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Using a single table to store speculative results and architectural results |
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 |
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 |
US9280347B2 (en) | 2012-03-15 | 2016-03-08 | International Business Machines Corporation | Transforming non-contiguous instruction specifiers to contiguous instruction specifiers |
US9459868B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a dynamically determined memory boundary |
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 |
US9710266B2 (en) * | 2012-03-15 | 2017-07-18 | International Business Machines Corporation | Instruction to compute the distance to a specified memory boundary |
US9715383B2 (en) | 2012-03-15 | 2017-07-25 | International Business Machines Corporation | Vector find element equal instruction |
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 |
US20130339656A1 (en) * | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Compare and Replace DAT Table Entry |
US9400650B2 (en) * | 2012-09-28 | 2016-07-26 | Intel Corporation | Read and write masks update instruction for vectorization of recursive computations over interdependent data |
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 |
US9804840B2 (en) | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
US9778932B2 (en) | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
US9582279B2 (en) * | 2013-03-15 | 2017-02-28 | International Business Machines Corporation | Execution of condition-based instructions |
US9513907B2 (en) * | 2013-08-06 | 2016-12-06 | Intel Corporation | Methods, apparatus, instructions and logic to provide vector population count functionality |
US9495155B2 (en) * | 2013-08-06 | 2016-11-15 | Intel Corporation | Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment |
US9600286B2 (en) | 2014-06-30 | 2017-03-21 | International Business Machines Corporation | Latent modification instruction for transactional execution |
US9710271B2 (en) | 2014-06-30 | 2017-07-18 | International Business Machines Corporation | Collecting transactional execution characteristics during transactional execution |
US9448939B2 (en) | 2014-06-30 | 2016-09-20 | International Business Machines Corporation | Collecting memory operand access characteristics during transactional execution |
US9348643B2 (en) | 2014-06-30 | 2016-05-24 | International Business Machines Corporation | Prefetching of discontiguous storage locations as part of transactional execution |
US9336047B2 (en) | 2014-06-30 | 2016-05-10 | International Business Machines Corporation | Prefetching of discontiguous storage locations in anticipation of transactional execution |
US9582413B2 (en) | 2014-12-04 | 2017-02-28 | International Business Machines Corporation | Alignment based block concurrency for accessing memory |
US20160179548A1 (en) * | 2014-12-22 | 2016-06-23 | Intel Corporation | Instruction and logic to perform an inverse centrifuge operation |
US10310854B2 (en) | 2015-06-30 | 2019-06-04 | International Business Machines Corporation | Non-faulting compute instructions |
US10061539B2 (en) | 2015-06-30 | 2018-08-28 | International Business Machines Corporation | Inaccessibility status indicator |
US11275590B2 (en) | 2015-08-26 | 2022-03-15 | Huawei Technologies Co., Ltd. | Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory |
US9846579B1 (en) | 2016-06-13 | 2017-12-19 | Apple Inc. | Unified integer and floating-point compare circuitry |
US10761979B2 (en) * | 2016-07-01 | 2020-09-01 | Intel Corporation | Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value |
US10296342B2 (en) * | 2016-07-02 | 2019-05-21 | Intel Corporation | Systems, apparatuses, and methods for cumulative summation |
US9852202B1 (en) | 2016-09-23 | 2017-12-26 | International Business Machines Corporation | Bandwidth-reduced coherency communication |
US10127015B2 (en) * | 2016-09-30 | 2018-11-13 | International Business Machines Corporation | Decimal multiply and shift instruction |
US10713048B2 (en) * | 2017-01-19 | 2020-07-14 | International Business Machines Corporation | Conditional branch to an indirectly specified location |
US10564965B2 (en) * | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Compare string processing via inline decode-based micro-operations expansion |
CN109754061B (zh) * | 2017-11-07 | 2023-11-24 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN111258635B (zh) * | 2018-11-30 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258652B (zh) * | 2018-11-30 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258770B (zh) * | 2018-11-30 | 2023-10-10 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258640B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258645B (zh) * | 2018-11-30 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258643B (zh) * | 2018-11-30 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258647B (zh) * | 2018-11-30 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258642B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258638B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258646B (zh) * | 2018-11-30 | 2023-06-13 | 上海寒武纪信息科技有限公司 | 指令拆解方法、处理器、指令拆解装置及存储介质 |
CN111258644B (zh) * | 2018-11-30 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258639B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258637B (zh) * | 2018-11-30 | 2022-08-05 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
US10884664B2 (en) | 2019-03-14 | 2021-01-05 | Western Digital Technologies, Inc. | Executable memory cell |
US10884663B2 (en) * | 2019-03-14 | 2021-01-05 | Western Digital Technologies, Inc. | Executable memory cells |
US20200401412A1 (en) * | 2019-06-24 | 2020-12-24 | Intel Corporation | Hardware support for dual-memory atomic operations |
CN112905528A (zh) * | 2021-02-09 | 2021-06-04 | 深圳市众芯诺科技有限公司 | 基于物联网的智能家居芯片 |
CN113835927B (zh) * | 2021-09-23 | 2023-08-11 | 武汉深之度科技有限公司 | 一种指令执行方法、计算设备及存储介质 |
CN114116005B (zh) * | 2021-11-29 | 2022-12-23 | 海飞科(南京)信息技术有限公司 | 基于aigpu架构的立即数数据存储方法 |
CN114816526B (zh) * | 2022-04-19 | 2022-11-11 | 北京微核芯科技有限公司 | 基于操作数域复用的多操作数指令的处理方法及其装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2835103B2 (ja) * | 1989-11-01 | 1998-12-14 | 富士通株式会社 | 命令指定方法及び命令実行方式 |
JPH096614A (ja) * | 1995-06-21 | 1997-01-10 | Sanyo Electric Co Ltd | データ処理装置 |
KR100379837B1 (ko) * | 2000-06-30 | 2003-04-11 | 주식회사 에이디칩스 | 확장명령어 축약장치 |
EP1470476A4 (en) * | 2002-01-31 | 2007-05-30 | Arc Int | CONFIGURABLE DATA PROCESSOR WITH MULTI-LENGTH INSTRUCTION KIT ARCHITECTURE |
JP3948615B2 (ja) | 2002-07-05 | 2007-07-25 | 富士通株式会社 | プロセッサ及び命令制御方法 |
WO2006018822A1 (en) * | 2004-08-20 | 2006-02-23 | Koninklijke Philips Electronics, N.V. | Combined load and computation execution unit |
US7437537B2 (en) * | 2005-02-17 | 2008-10-14 | Qualcomm Incorporated | Methods and apparatus for predicting unaligned memory access |
US7627723B1 (en) * | 2006-09-21 | 2009-12-01 | Nvidia Corporation | Atomic memory operators in a parallel processor |
US20090182988A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Compare Relative Long Facility and Instructions Therefore |
-
2010
- 2010-06-22 US US12/820,768 patent/US20110314263A1/en not_active Abandoned
- 2010-11-08 EP EP10776352A patent/EP2419821A1/en not_active Withdrawn
- 2010-11-08 WO PCT/EP2010/067047 patent/WO2011160725A1/en active Application Filing
- 2010-11-08 AU AU2010355816A patent/AU2010355816A1/en not_active Abandoned
- 2010-11-08 SG SG2012087854A patent/SG186102A1/en unknown
- 2010-11-08 CA CA2786045A patent/CA2786045A1/en not_active Abandoned
- 2010-11-08 RU RU2012149548/08A patent/RU2012149548A/ru unknown
- 2010-11-08 MX MX2012014532A patent/MX2012014532A/es not_active Application Discontinuation
-
2011
- 2011-05-27 KR KR1020110050924A patent/KR101464809B1/ko not_active IP Right Cessation
- 2011-06-15 JP JP2011133183A patent/JP5039905B2/ja not_active Expired - Fee Related
- 2011-06-22 CN CN201110168746XA patent/CN102298515A/zh active Pending
- 2011-06-22 BR BRPI1103258A patent/BRPI1103258A2/pt not_active Application Discontinuation
- 2011-11-25 ZA ZA2011/08701A patent/ZA201108701B/en unknown
Also Published As
Publication number | Publication date |
---|---|
CN102298515A (zh) | 2011-12-28 |
SG186102A1 (en) | 2013-01-30 |
RU2012149548A (ru) | 2014-05-27 |
US20110314263A1 (en) | 2011-12-22 |
KR101464809B1 (ko) | 2014-11-27 |
JP5039905B2 (ja) | 2012-10-03 |
JP2012009021A (ja) | 2012-01-12 |
EP2419821A1 (en) | 2012-02-22 |
AU2010355816A1 (en) | 2012-07-05 |
MX2012014532A (es) | 2013-04-03 |
WO2011160725A1 (en) | 2011-12-29 |
ZA201108701B (en) | 2012-08-29 |
KR20110139100A (ko) | 2011-12-28 |
CA2786045A1 (en) | 2011-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BRPI1103258A2 (pt) | instruções para realizar uma operação em dois operandos e subsequentemente armazenar o valor original do operando | |
KR101231556B1 (ko) | 선택된 비트들의 회전 후 연산 기능 및 그 명령어 | |
KR101231562B1 (ko) | 캐시 속성 추출 기능 및 이를 위한 명령어 | |
RU2562430C2 (ru) | Увеличение числа доступных для команд регистров общего назначения | |
US20140164741A1 (en) | Modify and Execute Next Sequential Instruction Facility and Instructions Therefore | |
US9996472B2 (en) | Extract target cache attribute facility and instruction therefor | |
WO2009087158A2 (en) | Compare and branch facility and instruction therefore | |
US20090182988A1 (en) | Compare Relative Long Facility and Instructions Therefore | |
KR101285072B1 (ko) | 실행 관련 명령어 | |
US20090182985A1 (en) | Move Facility and Instructions Therefore | |
US20090182982A1 (en) | Rotate Then Insert Selected Bits Facility and Instructions Therefore |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B03A | Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette] | ||
B11A | Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing | ||
B04C | Request for examination: application reinstated [chapter 4.3 patent gazette] | ||
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B11B | Dismissal acc. art. 36, par 1 of ipl - no reply within 90 days to fullfil the necessary requirements |