BRPI0906424B1 - recurso de atributo de cache extraído e instrução consequente - Google Patents

recurso de atributo de cache extraído e instrução consequente Download PDF

Info

Publication number
BRPI0906424B1
BRPI0906424B1 BRPI0906424-9A BRPI0906424A BRPI0906424B1 BR PI0906424 B1 BRPI0906424 B1 BR PI0906424B1 BR PI0906424 A BRPI0906424 A BR PI0906424A BR PI0906424 B1 BRPI0906424 B1 BR PI0906424B1
Authority
BR
Brazil
Prior art keywords
cache
instruction
address
bit
operand
Prior art date
Application number
BRPI0906424-9A
Other languages
English (en)
Inventor
Dan Greiner
Timothy Slegel
Original Assignee
International Business Machines Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corporation filed Critical International Business Machines Corporation
Publication of BRPI0906424A2 publication Critical patent/BRPI0906424A2/pt
Publication of BRPI0906424B1 publication Critical patent/BRPI0906424B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Abstract

RECURSO DE ATRIBUTO DE CACHE EXTRAÍDO E INSTRUÇÃO CONSEQUENTE. Em um método de operação, um sistema de computador é fornecido uma facilidade e instrução de máquina cache de uma arquitetura de computador para especificar um nível de cache de cache alvo e um atributo de cache alvo de interesse para obter um atributo de cache de um ou mais caches alvos. O atributo de cache solicitado do cache alvo em um registro.

Description

Campo da Invenção
[0001] A presente invenção refere-se a um sistema de computador e, mais particularmente, a funcionalidade de instrução de processador de sistema de computador.
Antecedentes da Invenção
[0002] Marcas Registradas: IBM® é uma marca registrada de International Business Machines Corporation, Armonk, Nova Iorque, USA S/390, Z900 e z990 e outros nomes de produto podem ser marcas registradas ou nomes de produto de International Business Machines Corporation ou outras empresas.
[0003] Começando com máquinas conhecidas como IBM® System 360 nos anos 60 até a atualidade, a IBM desenvolveu uma arquitetura que se tornou conhecida como "mainframe", cujos princípios de operação relatam a arquitetura da máquina descrevendo as instruções que podem ser executadas quando da implementação pelo "mainframe"das instruções que foram inventadas pelos inventores da IBM e adotadas, devido à sua significante contribuição em melhorar o estado da máquina de computação representada pelo "mainframe", como contribuições significantes pela inclusão nos Princípios de Operação da IBM como indicado ao longo dos anos. A Sexta Edição do Princípios de Operação da z/Architecture® IBM®, que foi publicada em abril de 2007, se tornou referência publicada padrão como SA22-7832-05 e está incorporada nos servidores de mainframe z9® da IBM. Os Princípios de Operação da Z/Architecture® IBM, Publicação SA22-7832-05 estão incorporados por referência em sua totalidade neste documento.
[0004] Em referência à figura 1A, componentes representativos de um sistema de computador hospedeiro 50 da técnica anterior são representados. Outros arranjos de componentes podem também ser empregados em um sistema de computador, os quais são bem conhecidos na técnica. O computador hospedeiro 50 representativo compreende uma ou mais CPUs 1 em comunicação com o armazenamento principal (Memória de Computador 2), bem como interfaces E/S para armazenar dispositivos 11 e redes 10 para comunicação com outros computadores ou SANs e semelhantes. A CPU 1 é compatível com uma arquitetura tendo um conjunto de instruções de arquitetura e funcionalidade de arquitetura. A CPU 1 pode ter Tradução Dinâmica de Endereços (DAT) 3 para transformação de endereços de programa (endereços virtuais) em endereço real de memória. Uma DAT tipicamente inclui um buffer de tradução look-aside (TLB) 7 para armazenamento temporário (caching) de traduções, de modo que acessos posteriores ao bloco de memória de computador 2 não requeira atrasos de tradução de endereço. Tipicamente, uma memória cache 9 é empregada entre a Memória de Computador 2 e o Processador 1. A memória cache 9 pode ser hierárquica tendo uma memória cache grande disponível para mais de uma CPU e memórias cache menores e mais rápidas (nivel inferior) entre a memória cache grande e cada CPU. Em algumas implementações, as memórias cache de nivel inferior são divididas para prover memórias cache de nivel inferior separadas para busca e carregamento (fetching)de instruções e acessos de dados. Em uma concretização, uma instrução é buscada e carregada da memória 2 por uma unidade de busca e carregamento de instrução 4 através de uma memória cache 9. A instrução é decodificada em uma unidade de decodificação de instrução (6) e enviada (com outras instruções em algumas concretizações) a unidades de execução de instrução 8. Tipicamente, várias unidades de execução 8 são empregadas, por exemplo, uma unidade de execução aritmética, uma unidade de execução de virgula flutuante e uma unidade de execução de instrução de ramificação. A instrução é executada pela unidade de execução, acessando operandos de registros definidos de instruções ou memória conforme necessário. Se um operando tiver que ser acessado (carregado ou armazenado) da memória 2, uma unidade de armazenamento de carga 5 tipicamente usa o acesso sob controle da instrução sendo executada. Instruções podem ser executadas em circuitos de hardware ou em microcódigo interno (firmware) ou por uma combinação de ambos.
[0005] Na figura IB, um exemplo de um sistema computador hospedeiro emulado 21 da técnica anterior é provido, o gual emula a sistema computador hospedeiro 50 de uma arguitetura Host. No sistema computador hospedeiro emulado 21, o processador Host (CPU) 1 é um processador Host emulado (ou processador Host virtual) e compreende um processador de emulação 27 tendo uma arquitetura de conjunto de instrução nativo diferente daquela do Processador 1 do computador hospedeiro 50. O sistema computador hospedeiro emulado 21 tem memória 22 acessível ao processador de emulação 27. Na concretização exemplificativa, a Memória 27 é dividida em uma porção de Memória de computador hospedeiro 2 e uma porção de Rotinas de Emulação 23. A Memória de computador hospedeiro 2 está disponível para programas do computador hospedeiro emulado 21 de acordo com Arquitetura de computador hospedeiro. O processador de emulação 27 executa instruções nativas de um conjunto de instruções de arquitetura de uma arquitetura diferente daquela do processador emulado 1, as instruções nativas obtidas de memória de Rotinas de Emulação 23, e pode acessar uma instrução de Host para execução de um programa na Memória de computador hospedeiro 2 empregando uma ou mais instrução (s) obtida em uma rotina de Sequência & Acesso/Decodificação que pode decodificar a instrução(s) de Host acessada para determinar uma rotina de execução de instrução nativa para emular a função da instrução de Host acessada. Outras facilidades que são definidas para a arquitetura do sistema de computador hospedeiro 50 podem ser emuladas por Rotinas de Facilidades de Arquitetura, incluindo facilidades, tais como memória cache de processador e suporte de Registros de Uso Geral, Registros de Controle, Tradução Dinâmica de Endereços e Subsistema de E/S, por exemplo. As Rotinas de Emulação podem também aproveitar a função disponível no processador de emulação 27 (tais como registros gerais e tradução dinâmica de endereços virtuais) para melhorar o desempenho das Rotinas de Emulação. Hardware Especial e Motores de Descarga podem também ser providos para auxiliar o Processador 27 na emulação da função do computador hospedeiro 50.
[0006] Em um mainframe, instruções de máquina de arquitetura são usadas por programadores, hoje, normalmente, programadores "C" muitas vezes por meio de um aplicativo programador. Essas instruções armazenadas no meio de armazenamento podem ser executadas nativamente em um Servidor IBM de z/Arquitecture ou, alternativamente, em máquinas executando outras arquiteturas. Elas podem ser emuladas nos servidores de mainframe da IBM existentes e futuros e em outras máquinas da IBM (por exemplo, Servidores pSeries® e Servidores xSeries®). Elas podem ser executadas em máquinas rodando Linux em uma ampla variedade de máquinas usando hardware fabricado por IBM®, Intel®, AMD™, Sun Microsystems e outras. Além de execução em tal hardware sob a Z/Architecture®, Linux pode ser usado, bem como máquinas que usam emulação por Hercules, UMX, ESI (Fundamental Software, Inc) ou Platform Solutions, Inc. (PSI), em que, geralmente, a execução é em um modo de emulação. Em 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 tipicamente executa software de emulação 23 compreendendo firmware ou um sistema operacional nativo para executar a emulação do processador emulado. O software de emulação 23 é responsável por busca e carregamento e execução de instruções da arquitetura do processador emulado. O software de emulação 23 mantém um contador de programa emulado para controlar os limites de instrução. O software de emulação 23 pode buscar e carregar uma ou mais instruções de máquina emuladas de uma vez e converter a uma ou mais instruções de máquina emuladas a um grupo correspondente de instruções de máquina nativas para execução pelo processador nativo 27. Essas instruções convertidas podem ser armazenadas temporariamente, tal que uma conversão mais rápida possa ser realizada. Porém, o software de emulação deve manter as regras de arquitetura da arquitetura do processador emulado, de modo a garantir que sistemas operacionais e aplicativos gravados no processador emulado operem corretamente. Além disso, o software de emulação deve prover recursos identificados pela arquitetura de processador emulado 1 incluindo, mas não limitado a, registros de controle, registros de uso geral, registros de virgula flutuante, função de tradução dinâmica de endereços incluindo tabelas de segmento e tabelas de página, por exemplo, mecanismos de interrupção, mecanismos de comutação de contexto. Relógios de Data e Hora (TOD) e interfaces de arquitetura para subsistemas de E/S, tal que um sistema operacional ou um programa de aplicativo projetado para rodar no processador emulado, podem ser rodados no processador nativo tendo o software de emulação.
[0008] Uma instrução especifica sendo emulada é decodificada, e uma sub-rotina chamada para executar a função da instrução individual. Uma função de software de emulação 23 emulando uma função de um processador emulado 1 é implementada, por exemplo, em uma unidade ou sub-rotina "C", ou algum outro método de provisão de uma unidade para o hardware especifico, como será de conhecimento daqueles versados na técnica após compreensão da descrição da concretização preferida. Várias patentes de emulação de software e hardware emulação incluindo, mas não limitadas a, US5551013 para "Multiprocessor for hardware emulation"de Beausoleil et al., e US6009261: "Preprocessing of stored target routines for emulating incompatible instructions on a target processor" de Scalzi et al; e US5574873: Decoding guest instruction to directly access emulation routines that emulate the guest instructions, de Davidian et al; US6308255: Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system, de Gorishek et al; e US6463582: Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method, de Lethin et al; e US5790825: Method for emulating guest instructions on a host computer through dynamic recompilation of host instruction, de Eric Traut: e muitas outras, ilustram a variedade de formas conhecidas de alcançar a emulação de urn formato de instrução de arquitetura para uma máquina diferente para uma máquina alvo disponível para aqueles versados na técnica, bem como aquelas técnicas de software especiais usadas por aquelas referenciadas acima.
Sumário da Invenção
[0009] Em uma concretização da invenção, um processador de um sistema de processamento busca, carrega e executa uma instrução de máquina de extração de atributo de memória cache definida para uma arquitetura de computador, uma instrução de máquina de memória cache compreendendo um código de operação (opcode) , um identificador de operação (um campo de registro), o identificador de operação identificando um local de operando (um registro). A instrução determina, a partir de um campo de deslocamento da instrução, um nivel de memória cache e um atributo de memória cache a ser extraido da memória cache no nivel de memória cache determinado, o atributo de memória cache é um resumo de memórias cache em cada nivel de memória cache do processador ou atributos de memória caches no nivel de memória cache especificado associado ao processador. Os atributos determinados são extraídos da memória cache e salvos no local de operando.
[0010] Em uma concretização, o atributo de memória cache a ser extraido é qualquer um de: uma topologia de memória cache resumindo uma ou mais memórias cache; um tamanho parcial da memória cache alvo; um tamanho total da memória cache alvo; ou um nivel de conjunto associativo da memória cache alvo.
[0011] Em outra concretização, o resumo de topologia da memória cache extraida compreende uma ou mais resumos, cada resumo para uma memória cache em um nivel especificado pelo identificador de nivel de memória cache, em que um resumo para uma memória cache no nivel de memória cache correspondente consiste em qualquer um de: se existe uma memória cache; se uma memória cache é privada ao processador executando a instrução; se uma memória cache pode ser compartilhada por outros processadores do sistema de processamento; se uma memória cache consiste em uma memória cache de instrução separada e uma memória cache de dados separados; se a memória cache é uma memória cache de instrução somente; se a memória cache é uma memória cache de dados somente; e se a memória cache é uma memória cache de dados e instrução unificada.
[0012] A invenção busca prover nova funcionalidade de instrução consistente com arquitetura existente que alivie a dependência de recursos de arquitetura, tais como registros gerais, melhore a funcionalidade e desempenho de versões de software que empregam a nova instrução.
Breve Descrição dos Desenhos
[0013] O assunto de acordo com a invenção é particularmente destacado e distintamente reivindicado nas reivindicações na conclusão da especificação. O acima exposto e outros objetos, características e vantagens da invenção são evidentes através da descrição detalhada a seguir considerada em conjunto com os desenhos anexos, em que :
[0014] A figura 1A é um diagrama representando um sistema computador hospedeiro exemplificative da técnica anterior;
[0015] A figura 1B é um diagrama representando um sistema computador hospedeiro emulado exemplificativo da técnica anterior;
[0016] A figura 1C é um diagrama representando um sistema de computador exemplificativo da técnica anterior;
[0017] A figura 2 é um diagrama representando uma rede de computador exemplificativa da técnica anterior;
[0018] A figura 3 é um diagrama representando elementos de um sistema de computador da técnica anterior;
[0019] As figuras 4A-4C apresentam elementos detalhados de um sistema de computador da técnica anterior;
[0020] As figuras 5A-5F apresentam formato de instrução de máquina de um sistema de computador;
[0021] A figura 6 apresenta um formato de instrução exemplificativo de uma concretização da invenção;
[0022] A figura 7 apresenta um identificador de atributo de acordo com uma concretização da invenção; e
[0023] A figura 8 apresenta um fluxo de uma função exemplificativa de uma concretização da invenção. Descrição
Detalhada
[0024] Em uma concretização, a invenção pode ser praticada por software (geralmente referido como Código Interno Licenciado, Firmware, Microcódigo, Milicódigo, Pico- código e semelhantes, qualquer um dos quais deve ser consistente com a presente invenção) . Em referência à figura 1A, o código de programa de software que incorpora a presente invenção é tipicamente acessado pelo processador também conhecido como uma CPU (Unidade de Processamento Central) 1 do sistema 50 a partir de meios de armazenamento de longo prazo 7, tais como uma unidade de CD-ROM, unidade de banda magnética ou disco rigido. O código de programa de software pode ser incorporado em qualquer uma de uma variedade de midias conhecidas para uso com um sistema de processamento de dados, tal como um disco flexivel, disco rigido ou CD- ROM. O código pode ser distribuído em tais midias ou pode ser distribuído a usuários a partir da memória de computador 2 ou armazenamento de um sistema de computador em uma rede 10 a outros sistemas de computador para uso por usuários desses outros sistemas.
[0025] Alternativamente, o código de programa pode ser incorporado na memória 2 e acessado pelo processador 1 usando o barramento de processador. Tal código de programa inclui um sistema operacional que controla a função e interação dos vários componentes de computador e um ou mais programas de aplicativo. 0 código de programa é normalmente paginado a partir de meios de armazenamento compactos 11 a memória de alta velocidade 2, o que estiver disponível para processamento pelo processador 1. As técnicas e métodos para incorporação do código de programa de 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 serão discutidos em detalhes neste documento. 0 código de programa, quando criado e armazenado em um meio tangivel (incluindo, mas não limitado a módulos de memória eletrônica (RAM), memória flash, Discos Compactos (CDs), DVDs, fita Magnética e semelhantes, é geralmente referido como um "produto de programa de computador". 0 meio de produto de programa de computador é tipicamente legivel por um circuito de processamento preferivelmente em um sistema de computador para execução pelo circuito de processamento.
[0026] A figura 1C ilustra uma estação de trabalho ou sistema de hardware de servidor representativo, em que a presente invenção pode ser praticada. O sistema 100 da figura 1C compreende um sistema de computador representativo 101, tal como um computador pessoal, uma estação de trabalho ou um servidor, incluindo dispositivos periféricos opcionais. A estação de trabalho 101 inclui uma ou mais processadores 106 e um barramento empregados para conectar e permitir a comunicação entre o processador(s) 106 e os outros componentes do sistema 101 de acordo com técnicas conhecidas. O barramento conecta o processador 106 à memória 105 e armazenamento de longo prazo 107, que podem incluir um disco rigido (incluindo quaisquer meios magnéticos, CD, DVD e Memória Flash, por exemplo) ou uma unidade de banda magnética por exemplo. O sistema 101 pode também incluir um adaptador de interface de usuário, que conecta o microprocessador 106 através do barramento a um ou mais dispositivos de interface, tais como um teclado 104, mouse 103, uma impressora/scanner 110 e/ou outros dispositivos de interface, que podem ser qualquer dispositivo de interface de usuário, tal como uma tela sensivel ao toque, teclado de entrada digitalizado etc. O barramento também conecta um dispositivo de exibição 102, tal como um monitor ou tela LCD, ao microprocessador 106 através de um adaptador de tela.
[0027] O sistema 101 pode se comunicar com outros computadores ou redes de computadores por meio de um adaptador de rede capaz de comunicação 108 com uma rede 109. Exemplos de adaptadores de rede são canais de comunicação, token ring, Ethernet ou modems. Alternativamente, a estação de trabalho 101 pode se comunicar usando uma interface sem fio, tal como um cartão CDPD (dados de pacote digital de celular). A estação de trabalho 101 pode ser associada com tais outros computadores em uma Rede de Área Local (LAN) ou a Rede de Longa Distância (WAN), ou a estação de trabalho 101 pode ser um cliente em um arranjo cliente/servidor com outro computador etc. Todas essas configurações, bem como o hardware e software de comunicação apropriados, são conhecidos na técnica.
[0028] A figura 2 ilustra uma rede de processamento de dados 200 em que a presente invenção pode ser praticada. A rede de processamento de dados 200 pode incluir uma pluralidade de redes individuais, tais como uma rede sem fio e uma rede a cabo, cada uma das quais pode incluir uma pluralidade de estações de trabalho individuais 101 201 202 203 204. Adicionalmente, como os versados na técnica irão notar, uma ou mais LANs podem ser incluidas, em que uma LAN pode compreender uma pluralidade de estações de trabalho inteligentes acopladas a um processador hospedeiro.
[0029] Ainda em referência à figura 2, as redes podem também incluem servidores ou computadores mainframe, tais como um computador gateway (servidor cliente 206) ou servidor de aplicativo (servidor remoto 208, que pode acessar um repositório de dados e pode também ser acessado diretamente de uma estação de trabalho 205). Um computador gateway 206 serve como um ponto de entrada em cada rede 207. Um gateway é necessário ao conectar um protocolo de rede a outro. O gateway 206 pode ser preferivelmente acoplado a outra rede (a Internet 207, por exemplo) por meio de um link de comunicação. O gateway 206 pode também ser diretamente acoplado a uma ou mais estações de trabalho 101 201 202 203 204 usando um link de comunicação. O computador gateway pode ser implementado utilizando um Servidor IBM eServer™ zSeries® z9® disponível de IBM Corp.
[0030] Código de programação de software que incorpora a presente invenção é tipicamente acessado pelo processador 106 do sistema 101 a partir de meios de armazenamento de longo prazo 107, tais como uma unidade de CD-ROM ou disco rigido. O código de programação de software pode ser incorporado em qualquer uma de uma variedade de midias conhecidas para uso com um sistema de processamento de dados, tais como um disco flexivel, disco rigido ou CD- ROM. O código pode ser distribuído em tais midias ou pode ser distribuído a usuários 210, 211 a partir da memória ou armazenamento de um sistema de computador em uma rede a outros sistemas de computador para uso por usuários de tais outros sistemas.
[0031] Alternativamente, o código de programação 111 pode ser incorporado na memória 105 e acessado pelo processador 106 usando o barramento de processador. Tal código de programação inclui um sistema operacional que controla a função e interação dos vários componentes de computador e uma ou mais programas de aplicativo 112. O código de programa é normalmente paginado a partir de meios de armazenamento compactos 107 à memória de alta velocidade 105 onde esta disponível para processamento pelo processador 106. As técnicas e métodos para incorporação de código de programação de 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 serão discutidos em detalhes neste documento. O código de programa, quando criado e armazenado em um meio tangivel (incluindo, mas não limitado a módulos de memória eletrônica (RAM), memória flash, Discos Compactos (CDs), DVDs, fita Magnética e semelhantes) é geralmente referido como um "produto de programa de computador". O meio de produto de programa de computador é tipicamente legivel por um circuito de processamento preferivelmente em um sistema de computador para execução pelo circuito de processamento.
[0032] A memória cache que está mais prontamente disponível para o processador (normalmente mais rápida e menor do que outras memórias cache do processador) é a memória cache mais baixa (L1 ou nivel um) e o armazenamento principal (memória principal) é a memória cache de nivel mais alto (L3 se existirem 3 niveis). A memória cache mais baixa é geralmente dividida em uma memória cache de instrução (I-Cache) portando instruções de máquina a serem executadas e uma memória cache de dados (D-Cache) portando operandos de dados.
[0033] Em referência à figura 3, uma concretização de processador exemplificativa é apresentada para o processador 106. Tipicamente, um ou mais niveis de memória cache 303 são empregados a blocos de memória de buffer a fim de melhorar o desempenho do processador. A memória cache 303 é um buffer de alta velocidade portando linhas de memória cache de dados de memória que são prováveis de serem usados. Linhas de memória cache tipicas são 64, 128 ou 256 bytes de dados de memória. Memórias cache separadas são geralmente empregadas para armazenamento temporário de instruções do que para armazenamento temporário de dados. A coerência de memória cache (sincronização de cópias de linhas na Memória e nas Memórias Cache) é geralmente provida por vários algoritmos "Snoop"bem conhecidos na técnica. O armazenamento principal 105 de um sistema de processador é geralmente referido como uma memória cache. Em um sistema de processador tendo 4 niveis de memória cache 303, o armazenamento principal 105 é geralmente referido como a memória cache de nivel 5 (L5), visto que é tipicamente mais rápida e somente abriga uma porção do armazenamento não volátil (DASD, Fita etc.) que é disponível para um sistema de computador. O armazenamento principal 105 "armazena temporariamente" páginas de dados paginadas dentro e fora do armazenamento principal 105 pelo sistema operacional.
[0034] Um contador de programa (contador de instrução) 311 rastreia o endereço da instrução atual a ser executada. Um contador de programa em um processador de z/Arquitecture é de 64 bits e pode ser truncado para 31 ou 24 bits para suportar limites de endereçamentos anteriores. Um contador de programa é tipicamente incorporado em uma PSW (palavra de status de programa) de um computador, tal que ele persista durante a comutação de contexto. Dessa forma, um programa em progresso, tendo um valor de contador de programa, pode ser interrompido, por exemplo, pelo sistema operacional (comutação de contexto do ambiente de programa para o ambiente do sistema operacional). A PSW do programa mantém o valor de contador de programa enquanto o programa não está ativo, e o contador de programa (na PSW) do sistema operacional é usado enquanto o sistema operacional está em execução. Tipicamente, o contador de programa é incrementado por uma quantidade igual ao número de bytes da instrução atual. Instruções RISC (Computação de Conjunto Reduzido de Instruções) são tipicamente de comprimento fixo enquanto instruções CISC (Computação de Conjunto Complexo de Instruções) são tipicamente de comprimento variável. Instruções da z/Arquitecture são instruções CISC tendo um comprimento de 2, 4 ou 6 bytes. O contador de programa 311 é modificado seja pela operação de comutação de contexto ou a operação de tomada de ramificação da instrução de ramificação, por exemplo. Em uma operação de comutação de contexto, o valor de contador de programa atual é salvo em uma Palavra de Status de Programa (PSW) junto com outras informações de estado sobre o programa sendo executado (tais como códigos de condição) , e um novo valor de contador de programa é carregado apontando para uma instrução de um novo módulo de programa a ser executado. Uma operação de tomada de ramificação é executada a fim de permitir ao programa tomar decisões ou circuito dentro do programa pelo carregamento do resultado da Instrução de Ramificação no Contador de Programa 311.
[0035] Tipicamente, uma unidade de busca e carregamento de instrução 305 é empregada para buscar e carregar instruções em nome do Processador 106. A unidade de busca e carregamento busca e carrega "instruções seguintes sequenciais", instruções alvo de Instruções Tomadas de Ramificação ou primeiras instruções de um programa após uma comutação de contexto. Unidades modernas de busca e carregamento de instrução geralmente empregam técnicas de pré-busca e carregamento (prefetch)para especulativamente pré-buscar e carregar instruções com base na probabilidade de as instruções pré-buscadas e carregadas serem usadas. Por exemplo, uma unidade de pré-busca e carregamento pode buscar e carregar 16 bytes de instrução que incluem a próxima instrução sequencial e bytes adicionais de instruções sequenciais adicionais.
[0036] As instruções buscadas e carregadas são então, executadas pelo processador 106. Em uma concretização, as instruções buscadas e carregadas são passadas para uma unidade de encaminhamento 306 da unidade de busca e carregamento. A unidade de encaminhamento decodifica as instruções e encaminha informações sobre as instruções decodificadas para as unidades adequadas 307, 308, 310. Uma unidade de execução 307 irá tipicamente receber informações sobre instruções aritméticas decodificadas da unidade de busca e carregamento de instrução 305 e irá executar operações aritméticas em operandos de acordo com o código operacional da instrução. Operandos são fornecidos à unidade de execução 307 preferivelmente a partir da memória 105, registros de arquitetura 309 ou de um campo imediato da instrução sendo executada. Os resultados da execução, quando armazenados, são armazenados na memória 105, nos registros 309 ou em outros hardwares de máquina (tais como registros de controle, registros de PSW e semelhantes).
[0037] Um processador 106 tipicamente tem uma ou mais unidades de execução 307 308 310 para execução da função da instrução. Em referência à figura 4A, uma unidade de execução 307 pode se comunicar com registros gerais de arquitetura 309, uma unidade de decodificação/ encaminhamento 306, uma unidade de armazenamento de carga 310 e outras unidades de processador 401 por meio de lógica de interface 407. Uma unidade de execução 307 pode empregar vários circuitos de registro 403 404 405 para manter 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, tal como e, ou e exclusivo-ou (XOR), girar e comutar. Preferivelmente, a ALU suporta operações especializadas que são dependentes de projeto. Outros circuitos podem fornecer outras facilidades de arquitetura 408 incluindo códigos de condição e lógica de suporte de recuperação, por exemplo. Tipicamente, o resultado de uma operação de ALU é mantido em um circuito de registro de saida 406 que pode encaminhar o resultado a uma variedade de outras funções de processamento. Existem vários arranjos de unidades de processador, a presente descrição é somente destinada a fornecer um entendimento representativo de uma concretização.
[0038] Uma instrução ADD, por exemplo, seria executada em uma unidade de execução 307 tendo funcionalidade lógica e aritmética enquanto uma instrução de virgula flutuante, por exemplo, seria executada em uma Execução de Virgula Flutuante tendo capacidade de Virgula Flutuante especializada. Preferivelmente, uma unidade de execução opera em operandos identificados por uma instrução executando uma função definida por código operacional nos operandos. Por exemplo, uma instrução ADD pode ser executada por uma unidade de execução 307 em operandos encontrados em dois registros 309 identificados pelos campos de registro da instrução.
[0039] A unidade de execução 307 executa a adição aritmética em dois operandos e armazena o resultado em um terceiro operando, em que o terceiro operando pode ser um terceiro registro ou um dos dois registros fonte. A unidade de execução preferivelmente utiliza uma Unidade Lógica Aritmética (ALU) 402 que seja capaz de executar uma variedade de funções lógicas, tais como Alterar, Girar, e, ou e XOR, bem como uma variedade de funções algébricas, incluindo qualquer uma de adição, subtração, multiplicação, divisão. Algumas ALUs 402 são concebidas para operações escalares e algumas para vírgula flutuante. Os dados podem ser Big Endian (em que o byte menos significativo está no endereço de byte mais alto) ou Little Endian (em que o byte menos significativo está no endereço de byte mais baixo) dependendo da arquitetura. A z/Arquitecture da IBM é Big Endian. Campos assinados podem ser sinal e dimensão, complemento de 1 ou complemento de 2 dependendo da arquitetura. Uma variedade de complementos de 2 é vantajosa, tal que a ALU não precise projetar e subtrair a capacidade uma vez que tanto um valor negativo como um valor positivo no complemento de 2 requer somente uma adição dentro da ALU. Os números são comumente descritos de forma abreviada, em que um campo de 12 bits define um endereço de um bloco de 4,096 bytes e é comumente descrito como um bloco de 4 Kbytes (Kilo-byte), por exemplo.
[0040] Em referência à figura 4B, informações de instrução de ramificação para execução de uma instrução de ramificação são tipicamente enviadas para uma unidade de ramificação 308 que geralmente emprega um algoritmo de previsão de ramificação, tal como uma tabela de histórico de ramificação 432 para prever o resultado da ramificação antes de outras operações condicionais serem concluídas. O alvo da instrução de ramificação atual será buscado e carregado e especulativamente executado antes de as operações condicionais serem concluídas. Quando as operações condicionais são concluídas, as instruções de ramificação especulativamente executadas são concluídas ou descartadas com base nas condições da operação condicional e no resultado especulado. Uma instrução de ramificação tipica pode testar códigos de condição e ramificar para um endereço alvo se os códigos de condição cumprirem o requerimento de ramificação da instrução de ramificação, um endereço alvo pode ser calculado com base em vários números incluindo aqueles encontrados nos campos de registro ou um campo imediato da instrução, por exemplo. A unidade de ramificação 308 pode empregar uma ALU 426 tendo uma pluralidade de circuitos de registro de entrada 427 428 429 e um circuito de registro de saida 430. A unidade de ramificação 308 pode se comunicar com registros gerais 309, decodificar a unidade de encaminhamento 306 ou outros circuitos 425, por exemplo.
[0041] A execução de um grupo de instruções pode ser interrompida por uma variedade de razões, incluindo uma comutação de contexto iniciada por um sistema operacional, uma exceção ou erro de programa causando uma comutação de contexto, um sinal de interrupção E/S causando uma comutação de contexto ou atividade multissegmentada de uma pluralidade de programas (em um ambiente multissegmentado), por exemplo. Preferivelmente, uma ação de comutação de contexto salva informações de estado sobre um programa atualmente em execução e, então, carrega informações de estado sobre outro programa sendo invocado. Informações de estado podem ser salvas em registros de hardware ou na memória, por exemplo. Informações de estado preferivelmente compreendem um valor de contador de programa apontando para uma instrução seguinte a ser executada, códigos de condição, informações de tradução de memória e conteúdo de registro de arquitetura. Uma atividade de comutação de contexto pode ser exercida por circuitos de hardware, programas de aplicativo, programas de sistema operacional ou código de firmware (microcódigo, pico-código ou código interno licenciado (LIC)) sozinho ou em combinação.
[0042] Um processador acessa operandos de acordo com métodos de instrução definidos. A instrução pode fornecer um operando imediato usando o valor de uma porção da instrução, pode fornecer um ou mais campos de registro explicitamente apontando para registros de propósito geral ou registros de propósito especial (registros de virgula flutuante, por exemplo). A instrução pode utilizar registros implicados identificados por um campo de código operacional como operandos. A instrução pode utilizar locais de memória para operandos. Um local de memória de um operando pode ser fornecido por um registro, um campo imediato ou uma combinação de registros e campo imediato como exemplificado pela facilidade de deslocamento longo da z/Arquitecture, em que a instrução define um registro base, um registro de indice e um campo imediato (campo de deslocamento) que são adicionados juntos para fornecer o endereço do operando na memória, por exemplo. 0 local neste documento tipicamente implica um local na memória principal (armazenamento principal) salvo indicação em contrário.
[0043] Em referência à figura 4C, um processador acessa o armazenamento usando uma unidade de carga/armazenamento 310. A unidade de carga/armazenamento 310 pode executar uma operação de carregamento pela obtenção do endereço do operando alvo na memória 303 e pelo carregamento do operando em um registro 309 ou outro local de memória 303, ou pode executar uma operação de armazenamento obtendo o endereço do operando alvo na memória 303 e armazenando os dados obtidos de um registro 309 ou outro local de memória 303 no local de operando alvo na memória 303. A unidade de carga/armazenamento 310 pode ser especulativa e pode acessar a memória em uma sequência que esteja fora da ordem em relação à sequência de instrução, no entanto, a unidade de carga/armazenamento 310 deve manter a aparência para programas cujas instruções foram executadas na ordem. Uma unidade de carga/armazenamento 310 pode se comunicar com registros gerais 309, unidade de decodificação/ encaminhamento 306, interface de memória/memória cache 303 ou outros elementos 455 e compreende vários circuitos de registro, ALUs 458 e lógica de controle 463 para calcular endereços de armazenamento e para fornecer sequenciamento para manter as operações na ordem. Algumas operações podem estar fora da ordem, mas a unidade de carga/armazenamento provê funcionalidade para fazer as operações fora da ordem aparecerem para o programa como tendo sido executadas na ordem, como é bem conhecido na técnica.
[0044] Preferivelmente, endereços que um programa de aplicativo visualiza" são geralmente referidos como endereços virtuais. Endereços virtuais são geralmente referidos como "endereços lógicos" e "endereços efetivos". Esses endereços virtuais são virtuais porque eles são redirecionados para o local de memória fisica por uma de uma variedade de tecnologias de Tradução Dinâmica de Endereço (DAT) incluindo, mas não limitadas a, simplesmente prefixar um endereço virtual com um valor de compensação, traduzir o endereço virtual através de uma ou mais tabelas de tradução, as tabelas de tradução preferivelmente compreendendo pelo menos uma tabela de segmento e uma tabela de página sozinha ou em combinação, preferivelmente, a tabela de segmento tendo uma entrada apontando para a tabela de página. Na z/Arquitecture, uma hierarquia de tradução é fornecida incluindo uma primeira tabela de região, uma segunda tabela de região, uma terceira tabela de região, uma tabela de segmento e uma tabela de página opcional. 0 desempenho da tradução de endereço é geralmente melhorado utilizando uma buffer de tradução look-aside (TLB) que compreende mapeamento de entradas de um endereço virtual para uma memória local fisica associada. As entradas são criadas quando a DAT 312 traduz um endereço virtual usando as tabelas de tradução. A utilização subsequente do endereço virtual pode, então, utilizar a entrada da TLB rápida em vez dos acessos de tabela de tradução sequencial lentos. 0 conteúdo de TLB pode ser gerenciado por uma variedade de algoritmos de substituição incluindo LRU (Menos Utilizados Recentemente).
[0045] No caso em que o Processador é um processador de um sistema de multiprocessador, cada processador tem responsabilidade de manter recursos compartilhados, tais como E/S, memórias cache, TLBs e memória, bloqueados por coerência. Tipicamente, tecnologias "snoop"serão utilizadas na manutenção da coerência da memória cache. Em um ambiente snoop,cada linha de memória cache pode ser marcada como estando em qualquer um de um estado compartilhado, um estado exclusivo, um estado alterado, um estado inválido e semelhantes a fim de facilitar o compartilhamento.
[0046] Unidades E/S 304 fornecem o processador com meios de conexão a dispositivos periféricos incluindo Fita, Disco, Impressoras, Telas e redes, por exemplo. Unidades E/S são geralmente apresentadas ao programa de computador por unidades de software. Em mainframes, tais como o z/Series da IBM®, Adaptadores de Canal e Adaptadores de Sistemas Abertos são unidades E/S do mainframe que proveem a comunicação entre o sistema operacional e dispositivos periféricos.
Armazenamento:
[0047] Um sistema de computador inclui informações no armazenamento principal, bem como endereçamento, proteção, e registro de referência e alteração. Alguns aspectos de endereçamento incluem o formato de endereços, o conceito de espaços de endereço, os vários tipos de endereços e a forma em que um tipo de endereço é traduzido para outro tipo de endereço. Parte do armazenamento principal inclui locais de armazenamento permanentemente atribuídos. O armazenamento principal provê o sistema com armazenamento de dados de acesso rápido diretamente endereçável. Ambos os dados e programas devem ser carregados no armazenamento principal (a partir de dispositivos de entrada) antes de serem processados.
[0048] O armazenamento principal pode incluir um ou mais armazenamentos de buffer de acesso rápido menores, algumas vezes, chamado de memórias cache. Uma memória cache é tipicamente fisicamente associada com uma CPU ou um processador E/S. Os efeitos, exceto de desempenho, da construção fisica e utilização de meios de armazenamento distintos não são geralmente observáveis pelo programa.
[0049] Memórias cache separadas podem ser mantidas para instruções e para operandos de dados. As informações dentro de uma memória cache são mantidas em bytes contíguos em um limite integral chamado de bloco de memória cache ou linha de memória cache (ou linha, abreviado). Um modelo pode fornecer uma instrução EXTRACT CACHE ATTRIBUTE que retorna o tamanho de uma linha de memória cache em bytes. Um modelo pode também fornecer instruções PREFETCH DATA e PREFETCH DATA RELATIVE LONG que realizam a pré-busca e carregamento de armazenamento na memória cache de dados ou instrução ou a liberação de dados da memória cache.
[0050] O armazenamento é visualizado como uma cadeia horizontal longa de bits. Para a maioria das operações, os acessos a armazenamento prosseguem em uma sequência da esquerda para a direita. A cadeia de bits é subdividida em unidades de oito bits. Uma unidade de oito bits é chamada de um byte, que é o bloco de construção básico de todos os formatos de informações. Cada local de byte no armazenamento é identificado por um número inteiro não negativo único, que é o endereço daquele local de byte ou, simplesmente, o endereço de byte. Os locais de byte adjacentes possuem endereços consecutivos, iniciando com 0 na esquerda e prosseguindo em uma sequência da esquerda para a direita. Endereços são números inteiros binários não assinados e são de 24, 31 ou 64 bits.
[0051] As informações são transmitidas entre o armazenamento e uma CPU ou um subsistema de canal de um byte, ou um grupo de bytes, de uma vez. Salvo indicação em contrário, um grupo de bytes no armazenamento é endereçado pelo byte mais à esquerda do grupo. O número de bytes no grupo é implicado ou explicitamente especificado pela operação a ser executada. Quando usado em uma operação de CPU, um grupo de bytes é chamado de campo. Dentro de cada grupo de bytes, os bits são numerados em uma sequência da esquerda para a direita. Os bits mais à esquerda são geralmente referidos como os bits de "ordem superior" e os bits mais à direita, como os bits de "ordem inferior". Os números de bits não são endereços de armazenamento, no entanto. Somente bytes podem ser endereçados. Para operar em bits individuais de um byte no armazenamento, é necessário acessar todo o byte. Os bits em um byte são numerados de 0 a 7, da esquerda para a direita. Os bits em um endereço podem ser numerados de 8-31 ou 40-63 para endereços de 24 bits, ou de 1-31 ou 33-63 para endereços de 31 bits; eles são numerados de 0-63 para endereços de 64 bits. Dentro de qualquer outro formato de comprimento fixo de vários bytes, os bits que fazem o formato são consecutivamente numerados iniciando em 0. Para fins de detecção de erro e, preferivelmente, para correção, um ou mais bits de verificação podem ser transmitidos com cada byte ou com um grupo de bytes. Tais bits de verificação são gerados automaticamente pela máquina e não podem ser diretamente controlados pelo programa. As capacidades de armazenamento são expressas em número de bytes. Quando o comprimento de um campo de operando de armazenamento é implicado pelo código de operação de uma instrução, o campo é dito ter um comprimento fixo, que pode ser de um, dois, quatro, oito ou dezesseis bytes. Campos maiores podem ser implicados para algumas instruções. Quando o comprimento de um campo de operando de armazenamento não é implicado, mas é explicitamente definido, o campo é dito ter um comprimento variável. Operandos com comprimento variável podem variar em comprimento por incrementos de um byte. Quando as informações são colocadas no armazenamento, os conteúdos de somente aqueles locais de bytes são substituídos, os quais são incluídos no campo designado, ainda que a largura do percurso físico para armazenamento possa ser maior do que o comprimento do campo sendo armazenado.
[0052] Certas unidades de informações devem estar em um limite integral no armazenamento. Um limite é chamado de integral para uma unidade de informação quando seu endereço de armazenamento é um múltiplo do comprimento da unidade em bytes. Nomes especiais são dados aos campos de 2, 4, 8 e 16 bytes em um limite integral. Uma meia palavra é 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. Uma palavra quadrangular é um grupo de 16 bytes consecutivos em um limite de 16 bytes. Quando endereços de armazenamento designam meias palavras, palavras, palavras duplas e palavras quadrangulares, a representação binária do endereço contém um, dois, três ou quatro bits zero mais à direita, respectivamente. Instruções devem estar em limites integrais de dois bytes. Os operandos de armazenamento da maior parte das instruções não possuem requerimentos de alinhamento de limite.
[0053] Em modelos que implementam memórias cache separadas para operandos de dados e instruções, um atraso significativo pode ser experimentado se o programa é armazenado em uma linha de memória cache da qual instruções são subsequentemente buscadas e carregadas, independentemente se o armazenamento altera as instruções que são subsequentemente buscadas e carregadas.
Instruções:
[0054] Tipicamente, operação da CPU é controlada por instruções em armazenamento que são executadas sequencialmente, uma por vez, da esquerda para a direita em uma sequência ascendente de endereços de armazenamento. Uma alteração na operação sequencial pode ser causada por ramificação, LOAD PSW, interrupções, ordens de SIGNAL PROCESSOR ou intervenção manual.
[0055] Preferivelmente, uma instrução compreende duas partes principais: • Um código de operação (opcode), que especifica a operação a ser executada; • Opcionalmente, a designação dos operandos que participam.
[0056] Formatos de instrução da z/Arquitecture são mostrados nas figuras 5A-5F. Uma instrução pode simplesmente prover um opcode 501, ou um código de operação e uma variedade de campos, incluindo operandos imediatos ou especificadores de registro para localizar operandos nos registros ou na memória. 0 opcode pode indicar ao hardware que recursos implicados (operandos etc.) devem ser usados, tais como um ou mais Registros de Uso Geral (GPRs) específicos. Os operandos podem ser agrupados em três classes: operandos localizados nos registros, operandos imediatos e operandos no armazenamento. Os operandos podem ser tanto explicitamente como implicitamente designados. Operandos de registro podem ser localizados, em general, em virgula flutuante, acesso ou registros de controle, com o tipo de registro identificado pelo código de operação. 0 registro contendo o operando é especificado identificando o registro em num campo de quatro bits, chamado de campo R, na instrução. Para algumas instruções, um operando é localizado em um registro implicitamente designado, o registro sendo implicado pelo código de operação. Operandos imediatos estão contidos dentro da instrução, e o campo de 8-bits, 16-bits ou 32-bits contendo o operando imediato é chamado de campo I. Operandos no armazenamento podem ter um comprimento implicado; ser especificado por uma máscara de bits; ser especificado por uma especificação de comprimento de quatro bits ou oito bits, chamada de campo I, na instrução; ou ter um comprimento especificado pelos conteúdos de um registro geral. Os endereços de operandos no armazenamento são especificados por meio de um formato que utiliza os conteúdos de um registro geral como parte do endereço. Isso torna possivel: • Especificar um endereço completo usando uma notação abreviada; • Executar manipulação de endereço usando instruções que empregam registros gerais para operandos; • Modificar endereços por meio de programa sem alteração do fluxo de instrução; • Operar independentemente do local de áreas de dados usando diretamente endereços recebidos de outros programas.
[0057] O endereço usado para se referir a armazenamento está contido em um registro designado pelo campo R na instrução ou é calculado a partir de um endereço de base, indice e deslocamento, especificado pelos campos B, X e D, respectivamente, na instrução. Quando a CPU está no modo de registro de acesso, um campo B ou R pode designar um registro de acesso além de ser usado para especificar um endereço. Para descrever a execução de instruções, operandos são preferivelmente designados como primeiro e segundo operandos e, em alguns casos, terceiro e quarto operandos. Em geral, dois operandos participam em uma execução de instrução, e o resultado substitui o primeiro operando.
[0058] Uma instrução tem uma, duas ou três meias palavras de comprimento e deve estar localizada no armazenamento em um limite de meia palavra. Em referência às figuras 5A-5F representando formatos de instrução, cada instrução está em um dos 25 formatos básicos: E 501, 1 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 SSE 542, com três variações de RRF, duas de RI, RIL, RS e RSY, cinco de RIE e SS.
[0059] Os nomes de formato indicam, em termos gerais, as classes de operandos que participam da operação e alguns detalhes sobre campos: • RIS representa uma operação de registro-e-imediato e uma operação de armazenamento. • RRS representa uma operação de registro-e-registro e uma operação de armazenamento. • SIL representa uma operação de armazenamento-e- imediato, com um campo imediato de 16-bits.
[0060] Nos formatos I, RR, RS, RSI, RX, SI e SS, o primeiro byte de uma instrução contém o código de operação. Nos formatos E, RRE, RRF, S, SIL e SSE, os primeiros dois bytes de uma instrução contêm o código de operação, exceto que para algumas instruções no formato S, o código de operação está somente no primeiro byte. Nos formatos RI e RIL, o código de operação está no primeiro byte e posições de bits 12-15 de uma instrução. Nos formatos RIE, RIS, RRS, RSL, RSY, RXE, RXF, RXY e SIY, o código de operação está no primeiro byte e no sexto byte de uma instrução. Os primeiros dois bits do primeiro ou somente o byte do código de operação especificam o comprimento e formato da instrução, como segue:
[0061] Nos formatos RR, RRE, RRF, RRR, RX, RXE, RXF, RXY, RS, RSY, RSI, RI, RIE e RIL, os conteúdos do registro designado pelo campo R1 são chamados de primeiro operando. O registro contendo o primeiro operando é geralmente referido como o '"primeiro local de operando, " e algumas vezes como "registro Rl". Nos formatos RR, RRE, RRF e RRR, o campo R2 designa o registro contendo o segundo operando, e o campo R2 pode designar o mesmo registro que Rl. Nos formatos RRF, RXF, RS, RSY, RSI e RIE, o uso do campo R3 depende da instrução. Nos formatos RS e RSY, o campo R3 pode, em vez disso, ser um campo M3 especificando uma máscara. O campo R designa um registro geral ou de acesso nas instruções gerais, um registro geral nas instruções de controle e um registro de vírgula flutuante ou um registro geral nas instruções de vírgula flutuante. Para registros gerais e de controle, os operandos de registro estão nas posições de bits 32-63 do registro de 64-bits ou ocupa o registro inteiro, dependendo da instrução.
[0062] No formato I, os conteúdos do campo de dados imediato de oito-bits, o campo l da instrução, são diretamente usados como o operando. No formato SI, os conteúdos do campo de dados imediato de oito-bits, o campo 12 da instrução, são usados diretamente como o segundo operando. Os campos B1 e Dl campos especificam o primeiro operando, que tem um byte de comprimento. No formato SIY, a operação é a mesma, exceto que os campos DH1 e DL1 são usados em vez de um campo Dl. No formato RI para as instruções ADD MEIA PALAVRA IMMEDIATE, COMPARE MEIA PALAVRA IMMEDIATE, LOAD MEIA PALAVRA IMMEDIATE, e MULTIPLY MEIA PALAVRA IMMEDIATE, os conteúdos do campo 12 de 16 bits da instrução são usados diretamente como um número inteiro binário assinado, e o campo R1 especifica o primeiro operando, que tem 32 ou 64 bits de comprimento, dependendo da instrução. Para a instrução TEST UNDER MASK (TMHH, TMHL, TMLH, TMLL), os conteúdos do campo 12 são usados como uma máscara, e o campo RI especifica o primeiro operando, que tem 64 bits de comprimento.
[0063] Para as instruções INSERT IMMEDIATE, AND IMMEDIATE, OR IMMEDIATE, e LOAD LOGICAL IMMEDIATE, OS conteúdos do campo 12 são usados como um número inteiro binário não assinado ou um valor lógico, e o campo R1 especifica o primeiro operando, que tem 64 bits de comprimento. Para as instruções de ramificação relativas nos formatos R1 e RSI, os conteúdos do campo 12 de 16 bits são usados como um número inteiro binário assinado designando um número de meias palavras. Esse número, quando adicionado ao endereço da instrução de ramificação, especifica o endereço de ramificação. Para instruções de ramificação relativas no formato RIL, o campo 12 tem 32 bits e é usado da mesma forma.
[0064] Para as instruções de ramificação relativas nos formatos RI e RSI, os conteúdos do campo 12 de 16 bits são usados como um número inteiro binário assinado designando um número de meias palavras. Esse número, quando adicionado ao endereço da instrução de ramificação, especifica o endereço de ramificação. Para instruções de ramificação relativas no formato RIL, o campo 12 tem 32 bits e é usado da mesma forma. Para as instruções de formato RIE COMPARE IMMEDIATE AND BRANCH RELATIVE e COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE, os conteúdos do campo 12 de 8-bits é usado diretamente como o segundo operando. Para as instruções de formato RIE COMPARE IMMEDIATE AND BRANCH, COMPARE IMMEDIATE AND TRAP, COMPARE LOGICAL IMMEDIATE AND BRANCH, e COMPARE LOGICAL IMMEDIATE AND TRAP, os conteúdos do campo 12 de 16 bits são usados diretamente como o segundo operando. Para as instruções de formato RIE COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE, e COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE, os conteúdos do campo 14 de 16-bits são usados como um número inteiro binário assinado designando um número de meias palavras que são adicionadas ao endereço da instrução para formar o endereço de ramificação.
[0065] Para as instruções de formato RIL ADD IMMEDIATE, ADD LOGICAL IMMEDIATE, ADD LOGICAL WITH SIGNED IMMEDIATE, COMPARE IMMEDIATE, COMPARE LOGICAL IMMEDIATE, LOAD IMMEDIATE e MULTIPLY SINGLE IMMEDIATE, OS conteúdos do campo 12 de 32 bits são usados diretamente como o segundo operando.
[0066] Para as instruções de formato RIS, os conteúdos do campo 12 de 8 bits são usados diretamente como o segundo operando. No formato SIL, os conteúdos do campo 12 de 16 bits são usados diretamente como o segundo operando. Os campos B1 e Dl especificam o primeiro operando, como descrito abaixo.
[0067] Nos formatos RSL, SI, SIL, SSE e na maioria SS, os conteúdos do registro geral designado pelo campo B1 são adicionados aos conteúdos do campo Dl para formar o endereço do primeiro operando. Nos formatos RS, RSY, S, SIY, SS e SSE, os conteúdos do registro geral designado pelo campo B2 são adicionados aos conteúdos do campo D2 ou campos DH2 e DL2 para formar o endereço do segundo operando. Nos formatos RX, RXE, RXF e RXY, os conteúdos dos registros gerais designados pelos campos X2 e B2 são adicionados aos conteúdos do campo D2 ou campos DH2 e DL2 para formar o endereço do segundo operando. Nos formatos RIS e RRS, e em um formato SS, os conteúdos do registro geral designado pelo campo B4 são adicionados aos conteúdos do campo D4 para formar o quarto endereço de operando.
[0068] No formato SS com um campo único com comprimento de 8 bits, para as instruções AND(NC), EXCLUSIVE OR (XC), MOVE (MVC), MOVE NUMERICS, MOVE ZONES e OR (OC) , L especifica o número de bytes de operando adicionais à 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. Os resultados de armazenamento substituem o primeiro operando e nunca são armazenados fora do campo especificado pelo endereço e comprimento. Nesse formato, o segundo operando tem o mesmo comprimento que o primeiro operando. Existem variações da definição acima que se aplicam a EDIT, EDIT AND MARK, PACK ASCII, PACK UNICODE, TRANSLATE, TRANSLATE AND TEST, UNPACK ASCH e UNPACK UNICODE.
[0069] No formato SS com dois campos de comprimento, e no formato RSL, LI especifica o número de bytes de operando adicionais à direita do byte designado pelo endereço do primeiro operando. Portanto, o comprimento em bytes do primeiro operando é 1-16, correspondente a um código de comprimento em LI de 0-15. Da mesma forma, L2 especifica o número de bytes de operando adicionais à direita do local designado pelo endereço do segundo operando. Os resultados substituem o primeiro operando e nunca são armazenados fora do campo especificado pelo endereço e comprimento. Se o primeiro operando é maior do que o segundo, o segundo operando é estendido na esquerda com zeros até o comprimento do primeiro operando. Essa extensão não modifica o segundo operando em armazenamento. No formato SS com dois campos R, como usado pelas instruções MOVE TO PRIMARY, MOVE TO SECONDARY e MOVE WITH KEY, os conteúdos do registro geral especificado pelo campo R1 são um valor não assinado de 32 bits chamado de comprimento real. Os operandos são ambos de um comprimento chamado de comprimento efetivo. O comprimento efetivo é igual ao comprimento real ou 256, o que for menor. As instruções definem o código de condição para facilitar a programação de um circuito para mover o número total de bytes especificado pelo comprimento real. 0 formato SS com dois campos R é também usado para especificar uma faixa de registros e dois operandos de armazenamento para a instrução LOAD MULTIPLE DISJOINT e para especificar um ou dois registros e um ou dois operandos de armazenamento para a instrução PERFORM LOCKED OPERATION.
[0070] 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 informando a soma intermediária, independentemente dos conteúdos do registro geral 0. Um deslocamento de zero não tem nenhum significado especial.
[0071] Os bits 31 e 32 da PSW atual são os bits de modo de endereçamento. O bit 31 é o bit de modo de endereçamento estendido e o bit 32 é o bit de modo de endereçamento básico. Esses bits controlam o tamanho do endereço efetivo produzido por geração de endereço. Quando os bits 31 e 32 da PSW atual são ambos zeros, a CPU está no modo de endereçamento de 24-bits, e endereços efetivos de operando e instrução de 24-bits são gerados. Quando o bit 31 da PSW atual é zero e o bit 32 é um, a CPU está no modo de endereçamento de 31-bits, e endereços efetivos de operandos e instrução de 31-bits são gerados. Quando os bits 31 e 32 da PSW atual são ambos um, a CPU está no modo de endereçamento de 64-bits, e endereços efetivos de operandos e instrução de 64-bits são gerados. A execução de instruções pela CPU envolve a geração dos endereços de instruções e operandos.
[0072] Quando uma instrução é buscada e carregada do local designado pela PSW atual, o endereço de instrução é aumentado pelo número de bytes na instrução, e a instrução é executada. As mesmas etapas são, então, repetidas usando o novo valor do endereço de instrução para buscar e carregar a instrução seguinte na sequência. No modo de endereçamento de 24-bits, endereços de instrução se envolvem, com a meia palavra no endereço de instrução 224-2 sendo seguida pela meia palavra no endereço de instrução 0. Dessa forma, no modo de endereçamento de 24-bits, qualquer execução da posição de bit de PSW 104, como um resultado de atualização do endereço de instrução, é perdida. No modo de endereçamento de 31-bits ou 64-bits, endereços de instrução se envolvem da mesma forma, com a meia palavra no endereço de instrução 231- 2 ou 264-2, respectivamente, seguida pela meia palavra no endereço de instrução 0. Uma execução da posição de bit de PSW 97 ou 64, respectivamente, é perdida.
[0073] Um endereço de operando que se refere a armazenamento é derivado de um valor intermediário, que está contido em um registro designado por um campo R na instrução ou é calculado a partir da soma de três números binários: endereço base, indice e deslocamento. 0 endereço base (B) é um número de 64-bits contido em um registro geral especificado pelo programa em um quarto campo de bits, chamado de campo B, na instrução. Endereços base podem ser usados como um meio de endereçar independentemente cada programa e área de dados. Em cálculos do tipo matriz, ele pode designar o local de uma matriz e, em processamento do tipo registro, pode identificar o registro. 0 endereço base provê o endereçamento de todo o armazenamento. 0 endereço base pode também ser usado para indexação.
[0074] O indice (X) é um número de 64 bits contido em um registro geral designado pelo programa em um campo de quatro bits, chamado de campo X, na instrução. Está incluido somente no endereço especificado pelas instruções de formato RX-, RXE- e RXY-. As instruções de formato RX-, RXE-, RXF-, e RXY- permitem dupla indexação: ou seja, o indice pode ser usado para prover o endereço de um elemento dentro de uma matriz.
[0075] O deslocamento (D) é um número de 12-bits ou 20-bits contido em um campo, chamado de campo D, na instrução. Um deslocamento de 12-bits é não assinado e provê endereçamento relativo de até 4.095 bytes além do local designado pelo endereço base. Um deslocamento de 20-bits é assinado e provê endereçamento relativo de até 524.287 bytes Além do local de endereço base ou de até 524.288 bytes antes disso. Em cálculos do tipo matriz, o deslocamento pode ser usado para especificar um de 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á nas 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.
[0076] Um deslocamento de 20 bits está em instruções somente do formato RSY, RXY ou SIY. Nessas instruções, o campo D consiste em um campo DL (baixo) nas posições de bits 20-31 e em um campo DH (alto) nas posições de bits 32-39. Quando a facilidade de deslocamento longo é instalada, o valor numérico do deslocamento é formado anexando os conteúdos do campo DH à esguerda dos conteúdos do campo DL. Quando a facilidade de deslocamento longo não está instalada, o valor numérico do deslocamento é formado anexando oito bits zero na esquerda dos conteúdos do campo DL, e os conteúdos do campo DH são ignorados.
[0077] Na formação da soma intermediária, o indice endereço base são tratados como números inteiros binários de 64 bits. Um deslocamento de 12 bits é tratado como um número inteiro não assinado de 12 bits, e 52 bits zero são anexados na esquerda. Um deslocamento de 20 bits é tratado como um número inteiro binário assinado de 20 bits, e 44 bits igual ao bit assinado são anexados na esquerda. Os três são adicionados como números binários de 64 bits, ignorando extravasamento. A soma é sempre de 64 bits e é usada como um valor intermediário para formar o endereço gerado. Os bits do valor intermediário são numerados de 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ária, independentemente dos conteúdos de registro geral 0. Um deslocamento de zero não tem nenhum significado especial.
[0078] Quando uma descrição de instrução especifica que os conteúdos de um registro geral designado por um campo R são usados para endereçar um operando no armazenamento, os conteúdos de registro são usados como o valor intermediário de 64-bits.
[0079] Uma instrução pode designar o mesmo registro geral tanto para cálculo de endereço e como o local de um operando. O cálculo de endereço é concluido antes de os registros, se houver, serem alterados pela operação. Salvo indicação em contrário em uma definição de instrução individual, o endereço de operando gerado designa o byte mais à esquerda de um operando em armazenamento.
[0080] O endereço de operando gerado é sempre de 64 bits, e os bits são numerados de 0-63. A forma com que o endereço gerado é obtido do valor intermediário depende do modo de endereçamento atual. No modo de endereçamento de 24 bits, bits 0-39 do valor intermediário são ignorados, bits 0-39 do endereço gerado são forçados a ser zero, e bits 40- 63 do valor intermediário se tornam bits 40-63 do endereço gerado. No modo de endereçamento de 31-bits, os bits 0-32 do valor intermediário são ignorados, os bits 0-32 do endereço gerado são forçados a ser zero, e os bits 33-63 do valor intermediário se tornam bits 33-63 do endereço gerado. No modo de endereçamento de 64 bits, os bits 0-63 do valor intermediário se tornam bits 0-63 do endereço gerado. Valores negativos podem ser usados em registros de endereço base e de indice. Os bits 0-32 desses valores são ignorados no modo de endereçamento de 31-bits, e os bits 0-39 são ignorados no modo de endereçamento de 24 bits.
[0081] Para instruções de ramificação, o endereço da instrução seguinte a ser executada quando a ramificação é tomada é chamado do endereço de ramificação. Dependendo da instrução de ramificação, o formato de instrução pode ser RR, RRE, RX, RXY, RS, RSY, RSI, RI, RIE ou RIL. Nos formatos RS, RSY, RX e RXY, o endereço de ramificação é especificado por um endereço de base, um deslocamento e, nos formatos RX e RXY, um índice. Nesses formatos, a geração do valor intermediário segue as mesmas regras que para a geração do valor intermediário de endereço de operando. Nos formatos RR e RRE, os conteúdos do registro geral designado pelo campo R2 são usados como o valor intermediário a partir do qual o endereço de ramificação é formado. 0 registro geral 0 não pode ser designado como contendo um endereço de ramificação. Um valor de zero no campo R2 faz com que a instrução seja executada sem ramificação.
[0082] As instruções de ramificação relativas estão nos formatos RSI, RI, RIE e RIL. Nos formatos RSI, RI e RIE para as instruções de ramificação relativas, os conteúdos do campo 12 são tratados como um número inteiro binário assinado de 16 bits designando um número de meias palavras. No formato RIL, os conteúdos do campo 12 são tratados como um número inteiro binário assinado de 32 bits designando um número de meias palavras. O endereço de ramificação é o número de meias palavras designado pelo campo 12 adicionado ao endereço da instrução de ramificação relativa.
[0083] O valor intermediário de 64 bits para uma instrução de ramificação relativa no formato RSI, RI, RIE ou RIL é a soma de dois anexos, com extravasamento da posição de bit 0 ignorado. No formato RSI, RI ou RIE, o primeiro anexo são Oos conteúdos do campo 12 com um bit zero anexado na direita e 47 bits iguais ao bit de sinal dos conteúdos anexados na esquerda, exceto que para COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE e COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE, o primeiro anexo são os conteúdos do campo 14, com bits anexados como descrito acima para o campo 12. No formato de RIL, o primeiro anexo são os conteúdos do campo 12 com um bit zero anexado na direita e 31 bits iguais ao bit de sinal dos conteúdos anexado na esquerda. Em todos os formatos, o segundo anexo é o endereço de 64-bits da instrução de ramificação. 0 endereço da instrução de ramificação é o endereço de instrução na PSW antes daquele endereço ser atualizado para endereçar a próxima instrução sequencial, ou é o endereço do alvo da instrução EXECUTE se EXECUTE for usada. Se EXECUTE for usada no modo de endereçamento de 24-bits ou 31-bits, o endereço da instrução de ramificação é o endereço alvo com 40 ou 33 zeros, respectivamente, anexado na esquerda.
[0084] O endereço de ramificação é sempre de 64 bits, com os bits numerados de 0-63. O endereço de ramificação substitui os bits 64-127 da PSW atual. A maneira em que o endereço de ramificação é obtido do valor intermediário 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 ramificação são feitos zero, e os bits 40-63 do valor intermediário se tornam bits 40-63 do endereço de ramificação. No modo de endereçamento, os bits 0-32 do valor intermediário são ignorados, os bits 0-32 do endereço de ramificação são feitos zero, e os bits 33-63 do valor intermediário se tornam bits 33-63 do endereço de ramificação. No modo de endereçamento de 64 bits, os bits 0- 63 do valor intermediário se tornam bits 0-63 do endereço de ramificação.
[0085] Para várias instruções de ramificação, a ramificação depende de satisfazer uma condição especificada. Quando a condição não é satisfeita, a ramificação não é tomada, execução sequencial normal de instrução continua e o endereço de ramificação não é usado. Quando uma ramificação é tomada, os bits 0-63 do endereço de ramificação substituem os bits 64-127 da PSW atual. O endereço de ramificação não é usado para acessar o armazenamento como parte da operação de ramificação. Uma exceção de especificação devido a um endereço de ramificação impar e exceções de acesso devido a busca e carregamento da instrução no local de ramificação não são reconhecidas como parte da operação de ramificação, mas são reconhecidas como exceções associadas com a execução da instrução no local de ramificação.
[0086] Uma instrução de ramificação, tal como BRANCH AND SAVE, pode designar o mesmo registro geral para cálculo de endereço de ramificação e como o local de um operando. O cálculo de endereço de ramificação é concluido antes do restante da operação ser executada.
[0087] A palavra de status de programa (PSW), descrita no Capitulo 4 "Controle" contém informações necessárias para execução adequada do programa. A PSW é usada para controlar o sequenciamento de instrução e para portar e indicar o status da CPU em relação ao programa atualmente sendo executada. A PSW ativa ou de controle é chamada de PSW atual. Instruções de ramificação executam as funções de tomada de decisões, controle de circuito e ligação de sub- rotina. Uma instrução de ramificação afeta o sequenciamento de instrução introduzindo um novo endereço de instrução na PSW atual. As instruções de ramificação relativas com um campo de 12 de 16 bits permitem a ramificação a um local em um deslocamento de até a mais do que 64K - 2 bytes ou menos 64K bytes em relação ao local da instrução de ramificação, sem o uso de um registro base. As instruções de ramificação relativas com um campo 12 de 32-bits permitem a ramificação para um local em um deslocamento de até a mais do que 4G - 2 bytes ou menos de 4G bytes em relaçao ao local da instrução de ramificação, sem o uso de um registro base.
[0088] Facilidades para tomadas de decisões são providas pelas instruções BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION e BRANCH RELATIVE ON CONDITION LONG. Essas instruções inspecionam um código de condição gue reflete o resultado de da maioria das operações aritméticas, lógicas e E/S. O código de condição, que consiste em dois bits provê quatro configurações possíveis de código de condição: 0, 1, 2 e 3.
[0089] O significado especifico de qualquer configuração depende da operação que define o código de condição. Por exemplo, o código de condição reflete tais condições como zero, não zero, primeiro operando alto, igual, extravasamento e subcanal ocupado. Uma vez definido, o código de condição permanece inalterado até ser modificado por uma instrução que faz com que um código de condição diferente seja definido.
[0090] Controle de circuito pode ser executado pelo uso de BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION e BRANCH RELATIVE ON CONDITION LONG para testar o resultado de operações de enumeração e aritmética de endereço. Para algumas combinações particularmente frequentes de aritmética e testes, BRANCH ON COUNT, BRANCH ON INDEX HIGH e BRANCH ON INDEX LOW OR EQUAL são providas, e equivalentes de ramificação relativa dessas instruções são também providos. Essas ramificações, sendo especializadas, proveem desempenho elevado para essas tarefas.
[0091] A ligação de sub-rotina quando uma alteração do modo de endereçamento não é necessária é provida pelas instruções BRANCH AND LINK e BRANCH AND SAVE. (Essa discussão de BRANCH AND SAVE se aplica também a BRANCH RELATIVE AND SAVE e BRANCH RELATIVE AND SAVE LONG.) Ambas essas instruções permitem não somente 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 ramificação em armazenamento, exceto que é o endereço da instrução após uma instrução EXECUTE que tem a instrução de ramificação como seu alvo.
[0092] Ambas BRANCH AND LINK e BRANCH AND SAVE possuem um campo R1. Elas formam um endereço de ramificação por meio de campos que dependem da instrução. As operações das instruções são resumidas como a seguir: • No modo de endereçamento de 24 bits, ambas instruções posicionam o endereço de retorno nas posições de bit 40-63 do registro geral R1 e deixam os bits 0-31 daquele registro inalterados. BRANCH AND LINK posiciona o código de comprimento de instrução para a instrução e também o código de condição e máscara de programa da PSW atual nas posições de bit 32-39 de registro geral Rl. BRANCH AND SAVE coloca zeros naquelas posições de bits. • No modo de endereçamento de 31 bits, ambas instruções posicionam o endereço de retorno nas posições de bits 33-63 e em uma posição de bits 32 do registro geral Rl e eles deixam os bits 0-31 do registro inalterados. • No modo de endereçamento de 64 bits, ambas as instruções posicionam o endereço de retorno nas posições de bits 0-63 de registro geral Rl. • Em qualquer modo de endereçamento, ambas as instruções geram o endereço de ramificação sob o controle do modo de endereçamento atual. As instruções posicionam os bits 0-63 do endereço de ramificação nas posições de bits 64-127 da PSW. No formato RR, ambas as instruções não executam a ramificação se o campo R2 da instrução for zero.
[0093] Pode ser visto que, no modo de endereçamento de 24-bits ou 31-bits, BRANCH AND SAVE posiciona o bit do modo de endereçamento básico, bit 32 da PSW, na posição de bits 32 de registro geral Rl. BRANCH AND LINK o faz no modo de endereçamento de 31-bits. As instruções BRANCH AND SAVE AND SET MODE e BRANCH AND SET MODE são para uso quando uma alteração do modo de endereçamento é requerida durante a ligação. Essas instruções possuem campos R1 e R2. As operações das instruções são resumidas como a seguir: • BRANCH AND SAVE AND SET MODE define os conteúdos de registro geral RI os mesmos que BRANCH AND SAVE. Além disso, a instrução posiciona o bit de modo de endereçamento estendido, bit 31 da PSW, na posição de bits 63 do registro. • BRANCH AND SET MODE, se R1 é não zero, executa como a seguir. No modo de 24- ou 31-bits, posiciona o bit 32 da PSW na posição de bits 32 do registro geral Rl, e deixa os bits 0-31 e 33-63 do registro inalterados. Note que o bit 63 do registro deve ser zero se o registro contém um endereço de instrução. No modo de 64-bits, a instrução posiciona o bit 31 da PSW (um) na posição de bits 63 do registro geral Rl, e deixa os bits 0-62 do registro inalterados. • Quando R2 é não zero, ambas instruções definem o modo de endereçamento e executam a ramificação como a seguir. O bit 63 do registro geral R2 é posicionado na posição de bits 31 da PSW. Se o bit 63 for zero, o bit 32 do registro é posicionado na posição de bits 32 da PSW. Se bit 63 for um, o bit da PSW 32 é definido para um. Em seguida, o endereço de ramificação é gerado a partir dos conteúdos do registro, exceto com o bit 63 do registro tratado como zero, sob o controle do novo modo de endereçamento. As instruções posicionam os bits 0-63 do endereço de ramificação nas posições de bit 64-127 da PSW. O bit 63 do registro geral R2 permanece inalterado e, portanto, pode ser um quando da entrada ao programa chamado. Se R2 for o mesmo que Rl, os resultados no registro geral designado são como especificado para o registro Rl.
Interrupções (Comutação de Contexto):
[0094] O mecanismo de interrupção permite que a CPU altere seu estado como resultado de condições externas à configuração, dentro da configuração, ou dentro da própria CPU. Para permitir rápida resposta a condições de alta prioridade e imediato reconhecimento do tipo de condição, condições de interrupção são agrupadas em seis classes: chamada externa, de entrada/saida, de verificação de máquina, de programa, de reinicialização e de supervisão.
[0095] Uma interrupção consiste no armazenamento da PSW atual como uma PSW antiga, armazenando informações identificando a cause da interrupção, e buscando e carregando uma nova PSW. Processamento prossegue como especificado pela nova PSW. A PSW antiga armazenada em uma interrupção normalmente contém o endereço da instrução que teria sido executada a seguir caso a interrupção não ocorresse, permitindo assim o recomeço do programa interrompido. Para interrupções de chamada de programa e supervisão, as informações armazenadas também contêm um código que identifica o comprimento da última instrução executada, permitindo assim que o programa responda à causa da interrupção. No caso de algumas condições de programa para as quais a resposta normal é re-execução da instrução que causou a interrupção, o endereço de instrução diretamente identifica a instrução executada por último.
[0096] Exceto para reinicialização, uma interrupção pode ocorrer somente quando a CPU está no estado operacional. A interrupção de reinicio pode ocorrer com a CPU seja no estado interrompido ou no estado operacional.
[0097] Qualquer exceção de acesso é reconhecida como parte da execução da instrução com que a exceção está associada. Uma exceção de acesso não é reconhecida quando a CPU tenta buscar e carregar de um local indisponível ou detecta alguma outra condição de exceção de acesso, mas uma instrução de ramificação ou uma interrupção altera a sequência de instrução, tal que a instrução não seja executada. Cada instrução pode fazer com que uma exceção de acesso seja reconhecida por causa de busca e carregamento de instrução. Adicionalmente, exceções de acesso associadas com execução de instrução podem ocorrer por causa de um acesso a um operando no armazenamento. Uma exceção de acesso devido a busca e carregamento de uma instrução é indicada quando a primeira meia palavra de instrução não pode ser buscada e carregada sem encontrar a exceção. Quando a primeiro meia palavra da instrução não tem exceções de acesso, as exceções de acesso podem ser indicadas para meias palavras adicionais de acordo com o comprimento de instrução especificado pelos primeiros dois bits da instrução: no entanto, quando a operação pode ser executada sem acessar a segunda ou terceira meias palavras da instrução, é imprevisível se a exceção de acesso é indicada para a parte não utilizada. Uma vez que a indicação de exceções de acesso for buscada e carregamento de instrução é comum a todas as instruções, ela não está coberta nas definições de instrução individual.
[0098] Salvo indicação em contrário na descrição de instrução individual, as seguintes regras se aplicam a exceções associadas com um acesso a um local de operando. Para um operando do tipo busca e carregamento, exceções de acesso são necessariamente indicadas somente para aquela porção do operando que que é requerida para conclusão da operação. É imprevisível se exceções de acesso são indicadas para aquelas porções de um operando do tipo busca e carregamento que não são requeridas para conclusão da operação.
[0099] Para um operando do tipo armazenamento, exceções de acesso são reconhecidas para o operando inteiro mesmo se a operação puder ser concluida sem o uso da parte inacessível do operando. Em situações em que o valor de um operando do tipo armazenamento é definido como sendo imprevisível, é imprevisível se uma exceção de acesso é indicada. Sempre que um acesso a um local de operando pode fazer com que uma exceção de acesso seja reconhecida, a palavra "acesso" é incluída na lista de exceções de programa na descrição da instrução. Essa entrada também indica qual operando pode fazer com que a exceção seja reconhecida e se a exceção é reconhecida em um acesso de busca e carregamento ou de armazenamento àquele local de operando. Exceções de acesso são reconhecidas somente para a porção do operando como definido para cada instrução particular.
[0100] Uma exceção de operação é reconhecida quando a CPU tenta executar uma instrução com um código de operação inválido. O código de operação pode ser não assinado, ou a instrução com aquele código de operação pode não estar instalada na CPU. A operação é suprimida. O código de comprimento de instrução é 1, 2 ou 3. A exceção de operação é indicada por um código de interrupção de programa de 0001 hex (ou 0081 hex se um evento PER concorrente for indicado).
[0101] Alguns modelos podem oferecer instruções não descritas nesta publicação, tais como aquelas providas para auxílio ou como parte de características especiais ou customizadas. Consequentemente, os códigos de operação não descritos nesta publicação não necessariamente fazem com que uma exceção de operação seja reconhecida. Além disso, essas instruções podem fazer com que modos de operação sejam definidos ou podem, de outra forma, alterar a máquina, de modo a afetar a execução de instruções subsequentes. Para evitar causar tal operação, uma instrução com um código de operação não descrito nesta publicação deve ser executada somente quando a função específica associada com o código de operação é desejada.
[0102] Uma exceção de especificação é reconhecida quando qualquer uma das afirmações abaixo é verdadeira: 1. Um é introduzido em uma posição não assinada de bits da PSW (ou seja, qualquer uma das posições de bits 0, 2-4, 24-30 ou 33-63). Isso é tratado como uma exceção de especificação de PSW precoce. 2. Um é introduzido na posição de bits 12 da PSW. Isso é tratado como uma exceção de especificação de PSW precoce. 3. A PSW é inválida em qualquer uma das seguintes formas: a. Bit 31 da PSW é um e bit 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 zero. c. Bit 31 da PSW é zero e bit 32 é um, indicando que o modo de endereçamento de 31 bits, e bits 64-96 da PSW não são todos zero. Isso é tratado como uma exceção de especificação de PSW precoce. 4. A PSW contém um endereço de instrução impar. 5. Um endereço de operando não designa um limite integral em uma instrução requerendo tal designação de limite integral. 6. Um registro geral de número impar é designado por um campo R de uma instrução que requer uma designação de registro de número par. 7. Um registro de virgula flutuante diferente de 0, 1, 4, 5, 8, 9, 12 ou 13 é designado para um operando estendido. 8. O multiplicador ou divisor em aritmética decimal excede 15 digitos e assina. 9. O comprimento do campo do primeiro operando é menor do que ou igual ao comprimento do campo do segundo operando em multiplicação ou divisão decimal. 10. Execução de CIPHER MESSAGE, CIPHER MESSAGE WITH CHAINING, COMPUTE INTERMEDIATE MESSAGE DIGEST, COMPUTE LAST MESSAGE DIGEST ou COMPUTE MESSAGE AUTHENTICATION CODE é tentada, e o código da função nos bits 57-63 do registro geral 0 contém um código da função não instalado ou não assinado. 11. Execução de CIPHER MESSAGE ou CIPHER MESSAGE WITH CHAINING é tentada, e o campo Rl ou R2 designa um registro de número impar ou registro geral 0. 12. Execução de CIPHER MESSAGE, CIPHER MESSAGE WITH CHAINING, COMPUTE INTERMEDIATE MESSAGE DIGEST ou COMPUTE MESSAGE AUTHENTICATION CODE é tentada, e o comprimento do segundo operando não é múltiplo do tamanho do bloco de dados da função designada. Essa condição de exceção de especificação não se aplica às funções de query. 13. Execução de COMPARE AND FORM CODEWORD é tentada, e os registros gerais 1, 2 e 3 não contêm inicialmente valores pares. 32. Execução de COMPARE AND SWAP AND STORE é tentada e qualquer uma das seguintes condições existe: • O código da função especifica um valor não assinado. • A característica de armazenamento especifica um valor não assinado. • O código da função é 0, e o primeiro operando não é designado em um limite de palavra. • O código da função é 1, e o primeiro operando não é designado em um limite de palavra dupla. • O segundo operando não é designado em um limite integral correspondente ao tamanho do valor de armazenamento. 33. Execução de COMPARE LOGICAL LONG UNICODE ou MOVE LONG UNICODE é tentada, e os conteúdos do registro geral Rl + 1 ou R3 + 1 não especificam um número par de bytes. 34. Execução de COMPARE LOGICAL STRING, MOVE STRING ou SEARCH STRING é tentada, e os bits 32-55 de registro geral 0 não são todos zero. 35. Execução de COMPRESSION CALL é tentada, e os bits 48-51 de registro geral 0 possuem qualquer um dos valores 0000 e 0110-1111 binários. 36. Execução de COMPUTE INTERMEDIATE MESSAGE DIGEST, COMPUTE LAST MESSAGE DIGEST ou COMPUTE MESSAGE AUTHENTICATION CODE é tentada e qualquer uma das afirmações abaixo é verdadeira: • O campo R2 designa um registro geral de número impar ou registro geral 0. • O Bit 56 de registro geral 0 não é zero. 37. Execução de CONVERT HEP TO BEP, CONVERT TO FIXED (BFP ou HEP) ou LOAD FP INTEGER (BFP) é tentada, e o campo M3 não designa um modificador válido. 38. Execução de DIVIDE TO INTEGER é tentada, e o campo M4 não designa um modificador válido. 39. Execução de EXECUTE é tentada, e o endereço alvo é impar. 40. Execução de EXTRACT STACKED STATE é tentada, e o código nas posições de bit 56-63 de registro geral R2 é maior do que 4 quando a facilidade de reutilização de ASN-e-LX não está instalada ou é maior do que 5 quando a facilidade está instalada. 41. Execução de FIND LEFTMOST ONE é tentada, e o campo Rl designa um registro de número impar. 42. Execução de INVALIDATE DAT TABLE ENTRY é tentada, e bits 44-51 de registro geral R2 não são todos zero. 43. Execução de LOAD FPC é tentada, e um ou mais bits do segundo operando correspondentes a bits não suportados no registro FPC são um. 44. Execução de LOAD PAGE-TABLE-ENTRY ADDRESS é tentada e o campo M4 da instrução contém qualquer valor diferente de 0000-0100 binário. 45. Execução de LOAD PSW é tentada e o bit 12 da palavra dupla no endereço do segundo operando é zero. É dependente de modelo se esta exceção for ou não reconhecida. 46. Execução de MONITOR CALL é tentada, e as posições de bits 8-11 da instrução não contêm zeros. 47. Execução de MOVE PAGE é tentada, e posições de bits 48-51 de registro geral 0 não contêm zeros ou bits 52 e 53 do registro 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 do que 63 ou é par. 50. Execução de PERFORM FLOATING POINT OPERATION é tentada, bit 32 de registro geral 0 é zero, e um ou mais campos nos bits 33-63 são inválidos ou designam uma função não instalada. 51. Execução de PERFORM LOCKED OPERATION é tentada, e uma das seguintes afirmações é verdadeira: • O bit T, bit 55 de registro geral 0 é zero, e o código da função nos bits 56-63 do registro é inválido. • Bits 32-54 de registro geral 0 não são todos zero. • No modo de registro de acesso, para códigos de função que causam a utilização de uma lista de parâmetro contendo um ALET, o campo R3 é zero. 52. Execução de PERFORM TIMING FACILITY FUNCTION é tentada, e uma das afirmações a seguir é verdadeira: • Bit 56 de registro geral 0 não é zero. • Bits 57-63 de registro geral 0 especificam um código de função não instalada ou não assinada. 53. . Execução de PROGRAM TRANSFER ou PROGRAM TRANSFER WITH INSTANCE é tentada, e todas as seguintes afirmações são verdadeira: • O bit de modo de endereçamento estendido na PSW é zero. • O bit de modo de endereçamento básico, bit 32, no registro geral designado pelo campo R2 da instrução é zero. • Bits 33-39 do endereço de instrução no mesmo registro não são todos zero. 54. Execução de RESUME PROGRAM é tentada, e uma das seguintes afirmações é verdadeira: • Bits 31, 32 e 64-127 do campo PSW no segundo operando não são válidos para posicionamento na PSW atual. A exceção é reconhecida se qualquer uma das seguintes afirmações for verdadeira: - Bits 31 e 32 são ambos zero e bits 64-103 não são todos zero. - Bits 31 e 32 são zero e um, respectivamente, e bits 64-96 não são todos zero. - Bits 31 e 32 são um e zero, respectivamente. - Bit 127 é um. • Bits 0-12 da lista de parâmetros não são todos zero. 55. Execução de SEARCH STRING UNICODE é tentada, e bits 32-47 de registro geral 0 não são todos zeros. 56. Execução de SET ADDRESS SPACE CONTROL ou SET ADDRESS SPACE CONTROL FAST é tentada, e bits 52 e 53 do endereço do segundo operando não são ambos zero. 57. Execução de SET ADDRESSING MODE (SAM24) é tentada, e bits 0-39 do endereço de instrução não atualizado na PSW, bits 64-103 da PSW, não são todos zeros. 58. Execução de SET ADDRESSING MODE (SAM31) é tentada, e bits 0-32 do endereço de instrução não atualizado na PSW, bits 64-96 da PSW, não são todos zero. 59. Execução de SET CLOCK PROGRAMMABLE FIELD é tentada, e bits 32-47 de registro geral 0 não são todos zero. 60. Execução de SET FPC é tentada, e um ou mais bits do primeiro operando correspondente a bits não suportados no registro FPC são um. 61. Execução de STORE SYSTEM INFORMAÇÕES é tentada, o código da função no registro geral 0 é válido, e uma das seguintes afirmações é verdadeira: • Bits 36-55 de registro geral 0 e bits 32-47 de registro geral 1 não são todos zero. • O endereço do segundo operando não é alinhado em um limite de 4K-byte. 62. Execução de TRANSLATE TWO TO ONE ou TRANSLATE TWO TO TWO é tentada, e o comprimento no registro geral Rl + 1 não especifica um número par de bytes. 63. Execução de UNPACK ASCII é tentada, e o campo L1 é maior do que 31. 64. Execução de UNPACK UNICODE é tentada, e o campo L- 1 é maior do que 63 ou é par. 65. Execução de UPDATE TREE é tentada, e os conteúdos iniciais de registros gerais 4 e 5 não são um múltiplo de 8 no modo de endereçamento de 24-bits ou 31-bits ou não são um múltiplo de 16 no modo de endereçamento de 64 bits. A execução da instrução identificada pela PSW antiga é suprimida. No entanto, para exceções de especificação de PSW precoce (causas 1-3), a operação que introduz a nova PSW é concluída, mas uma interrupção ocorre imediatamente após. Preferivelmente, o código de comprimento de instrução (ILC) é 1, 2 ou 3, indicando o comprimento da instrução causando a exceção. Quando o endereço de instrução é par (causa 4 na página 6-33), é imprevisível se o ILC é 1, 2 ou 3. Quando a exceção é reconhecida por causa de exceção de especificação de PSW precoce (causas 1-3) e a exceção tiver sido introduzida por LOAD PSW, LOAD PSW EXTENDED, PROGRAM RETURN, ou uma interrupção, o ILC é 0. Quando a exceção é introduzida por SET ADDRESSING MODE (SAM24, SAM31), o ILC é 1 ou é 2 se SET ADDRESSING MODE for o alvo de EXECUTE. Quando a exceção é introduzida por SET SYSTEM MASK ou por STORE THEN OR SYSTEM MASK, o ILC é 2.
[0103] As interrupções de programa são usadas para reportar exceções e eventos que ocorrem durante a execução do programa. Uma interrupção de programa faz a PSW antiga ser armazenada em locais reais 336-351 e uma nova PSW ser buscada e carregada de locais reais 464-479. A causa da interrupção é identificada pelo código de interrupção. O código de interrupção é posicionado em locais reais 142-143, o código de comprimento de instrução é posicionado nas posições de bit 5 e 6 do byte em local real 141 com o restante dos bits definido para zeros, e zeros são armazenado em local real 140. Para algumas causas, informações adicionais identificando a razão para a interrupção são armazenadas em locais reais 144-183. Se a facilidade PER-3 estiver instalada, então, como parte da ação de interrupção de programa, os conteúdos do registro de endereço de evento de quebra são posicionados em locais de armazenamento real 272- 279. Exceto para eventos de PER e a exceção de cripto- operação, a condição causando a interrupção é indicada por um valor codificado posicionado nas sete posições de bit mais à direita do código de interrupção. Somente uma condição por vez pode ser indicada. Os bits 0-7 do código de interrupção são definidos para zero. Eventos PER são indicados definindo o bit 8 do código de interrupção para um. Quando essa é a única condição, os bits 0-7 e 9-15 são também definidos para zero. Quando um evento PER é indicado simultaneamente com outra condição de interrupção de programa, o bit 8 é um, e os bits 0-7 e 9-15 são definidos conforme a outra condição. A exceção de cripto-operação é indicada por um código de interrupção de 0119 hex, ou 0199 hex se um evento PER for também indicado.
[0104] Quando existe um bit de máscara correspondente, uma interrupção de programa pode ocorrer somente quando aquele bit de máscara for um. A máscara de programa na PSW controla quatro das exceções, as máscaras IEEE no registro FPC controlam as exceções de IEEE, o bit 33 no registro de controle 0 controla se SET SYSTEM MASK causar uma exceção de operação especial, os bits 48-63 no registro de controle 8 controlam interrupções devido a eventos de monitoramento, e uma hierarquia de máscaras controla as interrupções devido a eventos PER. Quando qualquer controle de bit de máscara for é zero, a condição é ignorada; a condição não permanece pendente.
[0105] Quando a nova PSW para uma interrupção de programa tem um erro de formato PSW ou gera uma exceção a ser reconhecida no processo de busca e carregamento de instrução, uma cadeia de interrupções de programa pode ocorrer.
[0106] Algumas das condições indicadas como exceções de programa podem ser reconhecidas também pelo subsistema de canal, em cujo caso a exceção é indicada na palavra de status de subcanal ou palavra de status estendida.
[0107] Quando uma exceção de dados gera uma interrupção de programa, um código de exceção de dados (DXC) é armazenado no local 147, e zeros são armazenados nos locais 144-146. O DXC se distingue entre os vários tipos de condições de exceção de dados. Quando o bit de controle de registro de AFP (registro de virgula flutuante adicional), o bit 45 de registro de controle 0 é um, o DXC é também posicionado no campo de DXC do registro de controle de virgula flutuante (FPC). O campo DXC no registro FPC permanece inalterado quando qualquer outra exceção de programa é reportada. 0 DXC é um código de 8-bits indicando a causa especifica de uma exceção de dados.
[0108] DXC 2 e 3 são reciprocamente exclusivos e são de prioridade mais alta do que qualquer outro DXC. Dessa forma, por exemplo, o DXC 2 (instrução BFP) tem precedência sobre qualquer exceção IEEE; e o DXC 3 (instrução DFP) tem precedência sobre qualquer exceção IEEE ou exceção IEEE simulada. Como outro exemplo, se as condições para ambos DXC 3 (instrução DFP) e DXC 1 (registro AFP) existem, DXC3 é reportado. Quando ambas uma exceção de especificação e uma exceção de dados de registro AFP se aplicam, é imprevisível qual delas é reportada.
[0109] Uma exceção de endereçamento é reconhecida quando a CPU tenta referenciar um local de armazenamento principal 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 está instalado, quando a unidade de armazenamento não está na configuração, ou quando a energia está desligada na unidade de armazenamento. Um endereço designando um local de armazenamento que não está disponível na configuração é referido como inválido. A operação é suprimida quando o endereço da instrução é inválido. Da mesma forma, a operação é suprimida quando o endereço da instrução alvo de EXECUTE é inválido. Também, a unidade de operação é suprimida quando uma exceção de endereçamento é encontrada acessando uma tabela ou entrada de tabela. As tabelas e entradas de tabela às quais a regra se aplica são a tabela de controle de unidade de encaminhamento, a segunda entrada de tabela de ASN primária, e entradas na lista de acesso, primeira tabela de região, segunda tabela de região, terceira tabela de região, tabela de segmento, tabela de página, tabela de ligação, primeira tabela de ligação, segunda tabela de ligação, tabela de entrada, primeira tabela de ASN, segunda tabela de ASN, tabela de autoridade, pilha de ligação e tabela de rastreamento. Exceções de endereçamento resultam em supressão quando são encontradas para referências à primeira tabela de região, segunda tabela de região, terceira tabela de região, tabela de segmento e tabela de página, em ambas referências implícitas para tradução dinâmica de endereços e referências associadas com a execução de LOAD PAGE-TABLE- ENTRY ADDRESS, LOAD REAL ADDRESS, STORE REAL ADDRESS, e TEST PROTECTION. Da mesma forma, exceções de endereçamento para acessos à tabela de controle de unidade de encaminhamento, entrada da segunda tabela de ASN primária, lista de acesso, segunda tabela de ASN ou tabela de autoridade resultam em supressão quando elas são encontradas em tradução de registro de acesso feita implicitamente ou como parte de LOAD PAGE- TABLE-ENTRY ADDRESS, LOAD REAL ADDRESS, STORE REAL ADDRESS, TEST ACCESS ou TEST PROTECTION. Exceto para algumas instruções especificas cuja execução é suprimida, a operação é terminada para um endereço de operando que pode ser traduzido, mas designa um local indisponível. Para terminação, alterações podem ocorrer somente a campos de resultado. Nesse contexto, o termo "campo de resultado" inclui o código de condição, registros e quaisquer locais de armazenamento que são providos e que são designados a serem alterados pela instrução.
Instrução de Extração de Atributo de Memória Cache:
[0110] Em referência à figura 8, quando a instrução EXTRACT CACHE ATTRIBUTE da figura 6 é buscada e carregada 801 e executada, informações 805 relacionadas ao atributo especificado 804 do subsistema de armazenamento 303 são colocadas no primeiro local de operando 806. A instrução compreende um código de operação de 8 bits 'EB' e uma extensão de código de operação de 8 bits y4C', bem como campos de registro Rl, R3 e B2 e um campo de deslocamento assinado DH2|DL2. O primeiro operando é um Registro especificado pelo campo de registro Rl da instrução e tem 64 bits.
[0111] O endereço do segundo operando não é usado para endereçar dados; ao contrário, os 24 bits mais à direita do endereço de 64 bits da figura 7 são tratados como um código 804 especificando qual atributo é retornado para o registro geral especificado por Rl. O endereço do segundo operando é calculado 802 por adição algébrica do valor estendido de sinal do campo de deslocamento assinado (DH2|DL2) da instrução com o valor do registro especificado pelo campo B2 da instrução quando o campo B2 não é ‘ 0' (quando o campo B2 é y0', o campo de deslocamento assinado (DH2|DL2) é usado como o endereço do segundo operando).
[0112] Os códigos são definidos conforme a seguir: Indicação de Atributo (AI): Posições de bit 56-59 do endereço do segundo operando da figura 7 contêm um número inteiro não assinado de 4-bits indicando o atributo de memória cache a ser extraido, como segue: 0 Sumário da topologia de extração 1 Tamanho parcial de extração da memória cache, em bytes 2 Tamanho total de extração da memória cache, em bytes 3 Nivel de conjunto associativo de extração da memória cache 4-15 Reservado Indicação de Nivel (LI) : As posições de bit 60-62 do endereço do segundo operando da figura 7 contêm um número inteiro não assinado de 3-bits indicando o nivel da memória cache para a qual o atributo de memória cache deve ser extraido, com 0 indicando memória cache de primeiro nivel, 1 indicando memória cache de segundo nivel e assim por diante. Se um nivel de memória cache não é implementado em um modelo, sua indicação de nivel correspondente é reservada. Indicação de Tipo (TI): Bit 63 do endereço do segundo operando da figura 7 indica o tipo de memória cache para a qual o atributo de memória cache deve ser extraido, com 0 indicando a memória cache de dados e 1 indicando a memória cache de instrução. Quando um nivel de memória cache tem memória cache de instrução e de dados unificada, o mesmo resultado é retornado independentemente da indicação de tipo.
[0113] Quando a indicação de atributo é zero, as indicações de nivel e tipo são ignoradas.
[0114] Bits 0-39 do endereço do segundo operando são ignorados. Bits 40-55 do endereço do segundo operando são reservados e devem conter zeros. Se uma posição de bits reservada no endereço do segundo operando contém um, ou se uma indicação de nivel ou indicação de atributo reservada for especificada, bits 0-63 de registro geral Rl são definidos para um.
[0115] Os conteúdos de registro geral R3 são ignorados, no entanto, o campo R3 deve especificar registro 0; ao contrário, o programa pode nao operar compativelmente no futuro.
[0116] Quando a indicação de atributo é zero, um resumo de cada nivel de memória cache é retornado no registro geral Rl. Cada campo de resumo tem oito bits, em que os bits 0-7 do registro contêm o resumo para a memória cache de primeiro nivel, os bits 8-15 contêm o resumo para a memória cache de segundo nivel, e assim por diante. Os conteúdos de um campo de resumo de 8 bits são como a seguir: Campo de Resumo Bits Significado 0-3 Reservado, armazenado como zero 4-5 Escopo de memória cache, como segue: (00) Memória cache não existe neste nivel (01) Memória cache é privada à CPU (10) Memória cache pode ser compartilhada por várias CPUs (11) Reservada 6-7 Quando as posições de bit 4-5 contêm um valor não zero, posições de bit 6-7 contêm o tipo memória cache, como segue: (12) Memórias cache de dados e instrução separadas existem neste nível (13) Somente uma memória cache de instrução existe neste nível (14) Somente uma memória cache de dados existe neste nível 11A Memória cache de dados e instrução unificada existe neste nível
[0117] Quando as posições de bit 4-5 contêm zeros, aθ posições de bit 6-7 também contêm zeros.
[0118] Exceções de programa: • Operação (se a facilidade de extensão de instruções gerais não estiver instalada)
[0119] Todos os outros códigos são reservados. Se um código reservado é especificado, os bits 0-63 de registro geral Rl são definidos como um. Os conteúdos de registro geral R3 são ignorados, no entanto, o campo R3 deve especificar o registro 0: ao contrário, o programa pode não operar compativelmente no futuro.
[0120] O conhecimento do tamanho de linha da memória cache é útil quando da determinação do posicionamento de instruções PREFETCH DATA e PREFETCH DATA RELATIVE LONG. Dependendo do modelo, a memória cache de primeiro nível pode ser implementada como uma memória cache unificada contendo dados e instruções (em oposição a uma memória cache dividida tendo uma memória cache de instrução e uma memória cache de dados separadas). Nesse caso, códigos de função 0 e 1 retornam o mesmo tamanho que é o tamanho de linha da memória cache unificada. Se um modelo não provê uma memória cache de dados e o código da função é 0, ou se o modelo não provê uma memória cache de instrução e o código da função é 1, então, um valor de zero é posicionado no primeiro local de operando.
[0121] O exposto acima é útil na compreensão da terminologia e estrutura de uma concretização de sistema de computador. A presente invenção não é limitada à z/Arquitecture ou à descrição provida da mesma. A presente invenção pode ser vantajosamente aplicada a outras arquiteturas de computador de outros fabricantes de computador com os ensinamentos do presente documento.

Claims (5)

1. Método para operar um computador, caracterizado pelo fato de que compreende: - buscar (801) por um processador (106) de um sistema de processamento uma instrução de máquina cache definida para uma arquitetura de computador, a instrução de máquina cache inclui um opcode, um identificador do operando, o identificador do operando identificando uma localização do operando; - executar a instrução de máquina cache compreendendo: - com base em um identificador de nivel de cache, determinar um cache alvo; - com base em um identificador de atributo de cache, determinar um atributo de cache (804) a ser extraido; - extrair (805) o atributo de cache determinado a partir do cache de destino; e salvar (806) o atributo de cache extraido na localização do operando identificado, em que o atributo de cache a ser extraido compreende qualquer um de: um sumário de topologia de cache de um ou mais caches; um tamanho de linha do cache alvo; um tamanho total do cache alvo; ou um nivel de associação do conjunto do cache alvo.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o identificador do operando consiste em um primeiro campo de registrador que identifica um primeiro registrador, onde a determinação do identificador de atributo de cache compreende: algebricamente adicionar o campo de deslocamento da instrução a um valor associado com um segundo campo da instrução para determinar o identificador de atributo de cache.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o sumário da topologia de cache extraido compreende um ou mais sumários, cada sumário para um cache em um nivel especificado pelo identificador de nivel de cache, onde um sumário para um cache em nivel de cache correspondente consiste em um dos seguintes: se existe um cache; se um cache é privado para o processador que executa a instrução, se um cache pode ser compartilhado por outros processadores do sistema de processamento; se um cache consiste em um cache de instrução separada e um cache de dados em separado, se o cache é um cache de instrução somente, se o cache é um cache de dados somente, e se o cache é uma instrução unificada e cache de dados.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a instrução de máquina de cache definida para a arquitetura de computador é buscada e executada por uma unidade central de processamento de uma arquitetura de computador alternativo, em que o método compreende ainda a interpretação da instrução de máquina cache para identificar uma rotina de software predeterminada para emular a operação da instrução de máquina de cache, e em que a execução da instrução de máquina de cache compreende executar a rotina de software predeterminada para executar as etapas do método para a execução da instrução de máquina de cache.
5. Sistema de computador, caracterizado pelo fato de que compreende: uma memória; um processador em comunicação com a memória, o processador, incluindo um elemento de busca de instrução para buscar instruções na memória e um ou mais elementos de execução para executar instruções buscadas; em que o sistema de computador é configurado para executar o método conforme definido em qualquer uma das reivindicações 1 a 4.
BRPI0906424-9A 2008-01-11 2009-01-07 recurso de atributo de cache extraído e instrução consequente BRPI0906424B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/972,675 2008-01-11
US11/972,675 US7870339B2 (en) 2008-01-11 2008-01-11 Extract cache attribute facility and instruction therefore
PCT/EP2009/050107 WO2009087160A1 (en) 2008-01-11 2009-01-07 Extract cache attribute facility and instruction therefore

Publications (2)

Publication Number Publication Date
BRPI0906424A2 BRPI0906424A2 (pt) 2016-10-11
BRPI0906424B1 true BRPI0906424B1 (pt) 2020-10-20

Family

ID=40513439

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0906424-9A BRPI0906424B1 (pt) 2008-01-11 2009-01-07 recurso de atributo de cache extraído e instrução consequente

Country Status (16)

Country Link
US (3) US7870339B2 (pt)
EP (1) EP2229620B1 (pt)
JP (1) JP5052678B2 (pt)
KR (1) KR101231562B1 (pt)
CN (1) CN101911013B (pt)
AT (1) ATE516538T1 (pt)
BR (1) BRPI0906424B1 (pt)
CA (1) CA2701093C (pt)
CY (1) CY1112472T1 (pt)
DK (1) DK2229620T3 (pt)
ES (1) ES2368682T3 (pt)
IL (1) IL206848A (pt)
PL (1) PL2229620T3 (pt)
PT (1) PT2229620E (pt)
SI (1) SI2229620T1 (pt)
WO (1) WO2009087160A1 (pt)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280480B2 (en) 2008-01-11 2016-03-08 International Business Machines Corporation Extract target cache attribute facility and instruction therefor
US8151076B2 (en) * 2008-04-04 2012-04-03 Cisco Technology, Inc. Mapping memory segments in a translation lookaside buffer
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
US9459867B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
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
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US10620957B2 (en) 2015-10-22 2020-04-14 Texas Instruments Incorporated Method for forming constant extensions in the same execute packet in a VLIW processor
US10713048B2 (en) * 2017-01-19 2020-07-14 International Business Machines Corporation Conditional branch to an indirectly specified location
CN109408429B (zh) * 2018-11-01 2020-10-16 苏州浪潮智能科技有限公司 一种低速接口的缓存方法与装置
US20220180467A1 (en) 2019-03-15 2022-06-09 Intel Corporation Systems and methods for updating memory side caches in a multi-gpu configuration
BR112021016106A2 (pt) 2019-03-15 2021-11-09 Intel Corp Processador gráfico de propósito geral, método e sistema de processamento de dados
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
CN117093510B (zh) * 2023-05-30 2024-04-09 中国人民解放军军事科学院国防科技创新研究院 大小端通用的缓存行高效索引方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3825895A (en) 1973-05-14 1974-07-23 Amdahl Corp Operand comparator
US3982229A (en) 1975-01-08 1976-09-21 Bell Telephone Laboratories, Incorporated Combinational logic arrangement
US4713750A (en) 1983-03-31 1987-12-15 Fairchild Camera & Instrument Corporation Microprocessor with compact mapped programmable logic array
US4569016A (en) 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4578750A (en) 1983-08-24 1986-03-25 Amdahl Corporation Code determination using half-adder based operand comparator
US5113523A (en) 1985-05-06 1992-05-12 Ncube Corporation High performance computer system
JPS6382513A (ja) 1986-09-26 1988-04-13 Toshiba Corp バレルシフタ
ATE109910T1 (de) * 1988-01-20 1994-08-15 Advanced Micro Devices Inc Organisation eines integrierten cachespeichers zur flexiblen anwendung zur unterstützung von multiprozessor-operationen.
JPH05158795A (ja) * 1991-12-06 1993-06-25 Nec Corp キャッシュメモリシステム
US5859994A (en) 1992-08-10 1999-01-12 Intel Corporation Apparatus and method for modifying instruction length decoding in a computer processor
JPH07129464A (ja) * 1993-11-05 1995-05-19 Hitachi Ltd 情報処理装置
US6067613A (en) 1993-11-30 2000-05-23 Texas Instruments Incorporated Rotation register for orthogonal data transformation
US5748950A (en) 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
EP0730220A3 (en) 1995-03-03 1997-01-08 Hal Computer Systems Inc Method and device for quickly executing branch instructions
US5732242A (en) 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
JP3790607B2 (ja) 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6223256B1 (en) 1997-07-22 2001-04-24 Hewlett-Packard Company Computer cache memory with classes and dynamic selection of replacement algorithms
US6112293A (en) 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6035392A (en) * 1998-02-20 2000-03-07 International Business Machines Corporation Computer with optimizing hardware for conditional hedge fetching into cache storage
US6088789A (en) * 1998-05-13 2000-07-11 Advanced Micro Devices, Inc. Prefetch instruction specifying destination functional unit and read/write access mode
US6349363B2 (en) * 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6763327B1 (en) 2000-02-17 2004-07-13 Tensilica, Inc. Abstraction of configurable processor functionality for operating systems portability
US6738895B1 (en) 2000-08-31 2004-05-18 Micron Technology, Inc. Method and system for substantially registerless processing
US7165101B2 (en) 2001-12-03 2007-01-16 Sun Microsystems, Inc. Transparent optimization of network traffic in distributed systems
US6842822B2 (en) * 2002-04-05 2005-01-11 Freescale Semiconductor, Inc. System and method for cache external writing
US7493480B2 (en) 2002-07-18 2009-02-17 International Business Machines Corporation Method and apparatus for prefetching branch history information
US20060212439A1 (en) 2005-03-21 2006-09-21 Microsoft Corporation System and method of efficient data backup in a networking environment
US7529768B2 (en) * 2005-12-08 2009-05-05 International Business Machines Corporation Determining which objects to place in a container based on relationships of the objects
US8335810B2 (en) 2006-01-31 2012-12-18 Qualcomm Incorporated Register-based shifts for a unidirectional rotator

Also Published As

Publication number Publication date
EP2229620A1 (en) 2010-09-22
CA2701093A1 (en) 2009-07-16
US20120137073A1 (en) 2012-05-31
US8131934B2 (en) 2012-03-06
PT2229620E (pt) 2011-10-06
KR20100106444A (ko) 2010-10-01
US20090182942A1 (en) 2009-07-16
DK2229620T3 (da) 2011-09-05
EP2229620B1 (en) 2011-07-13
CY1112472T1 (el) 2015-12-09
KR101231562B1 (ko) 2013-02-12
ATE516538T1 (de) 2011-07-15
IL206848A0 (en) 2010-12-30
CA2701093C (en) 2016-10-11
US8516195B2 (en) 2013-08-20
BRPI0906424A2 (pt) 2016-10-11
IL206848A (en) 2014-03-31
CN101911013B (zh) 2013-07-31
US20110131382A1 (en) 2011-06-02
ES2368682T3 (es) 2011-11-21
JP5052678B2 (ja) 2012-10-17
JP2011509475A (ja) 2011-03-24
SI2229620T1 (sl) 2011-10-28
CN101911013A (zh) 2010-12-08
PL2229620T3 (pl) 2011-12-30
US7870339B2 (en) 2011-01-11
WO2009087160A1 (en) 2009-07-16

Similar Documents

Publication Publication Date Title
BRPI0906424B1 (pt) recurso de atributo de cache extraído e instrução consequente
JP5357181B2 (ja) コンピュータ・システム、その動作方法、及び、コンピュータ・プログラム
US10963391B2 (en) Extract target cache attribute facility and instruction therefor
US20090182983A1 (en) Compare and Branch Facility and Instruction Therefore
BRPI1103258A2 (pt) instruções para realizar uma operação em dois operandos e subsequentemente armazenar o valor original do operando
US20090182988A1 (en) Compare Relative Long Facility and Instructions Therefore
BRPI1103516B1 (pt) Facilidade de palavra grande para estender o número de registradores de propósitogeral disponíveis para instruções
JP2011509475A5 (pt)
US20090182984A1 (en) Execute Relative Long Facility and Instructions Therefore
US20090182992A1 (en) Load Relative and Store Relative Facility and Instructions Therefore
US20090182985A1 (en) Move Facility and Instructions Therefore
JP2011509473A (ja) Rotatetheninsertselectedbitsファシリティ及びそのための命令

Legal Events

Date Code Title Description
B11A Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing
B04C Request for examination: application reinstated [chapter 4.3 patent gazette]
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 20/10/2020, OBSERVADAS AS CONDICOES LEGAIS.