PT1653365E - Invalidação de armazenamento, eliminação de entradas de uma memória tampão - Google Patents

Invalidação de armazenamento, eliminação de entradas de uma memória tampão Download PDF

Info

Publication number
PT1653365E
PT1653365E PT05108507T PT05108507T PT1653365E PT 1653365 E PT1653365 E PT 1653365E PT 05108507 T PT05108507 T PT 05108507T PT 05108507 T PT05108507 T PT 05108507T PT 1653365 E PT1653365 E PT 1653365E
Authority
PT
Portugal
Prior art keywords
entries
address
instruction
register
tables
Prior art date
Application number
PT05108507T
Other languages
English (en)
Inventor
Timothy Slegel
Lisa Heller
Erwin Pfeffer
Kenneth Plambeck
Original Assignee
Ibm
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 Ibm filed Critical Ibm
Publication of PT1653365E publication Critical patent/PT1653365E/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
  • Electrically Operated Instructional Devices (AREA)
  • Advance Control (AREA)

Description

DESCRIÇÃO
"INVALIDAÇÃO DE ARMAZENAMENTO, ELIMINAÇÃO DE ENTRADAS DE DMA MEMÓRIA TAMPÃO"
Esta invenção refere-se, de um modo geral, ao processamento num ambiente informático e, em particular, a um ou mais de invalidação de armazenamento, eliminação de entradas de uma memória tampão e uma instrução para tal.
Os ambientes informáticos existentes utilizam armazenamento virtual que é, normalmente, mantido em armazenamento auxiliar para aumentar o tamanho do armazenamento disponível. Quando uma página de armazenamento virtual é referenciada, o endereço virtual utilizado quando se referencia a página é traduzido por tradução de endereço dinâmica para um endereço de armazenamento real. Se a tradução for bem sucedida, então, o endereço virtual é válido; caso contrário, é inválido. Uma página de armazenamento virtual é indicada como válida ou inválida por um bit inválido numa entrada de tabela de páginas, em que a entrada inclui um endereço de armazenamento real se a página for válida. Páginas de armazenamento podem ser invalidadas, uma página de cada vez. Por exemplo, num ambiente informático com base na arquitectura z/Architecture, proporcionada pela International Business Machines Corporation, uma instrução designada como instrução de Entrada de Tabela de Páginas Invalidada (IPTE), é utilizada para invalidar uma página de armazenamento. Invalidação inclui definir um indicador inválido numa estrutura de controlo, associada com armazenamento virtual e situada num 1 armazenamento físico principal, para indicar que um endereço virtual de um local no armazenamento virtual não pode ser traduzido por tradução de endereço dinâmica para um endereço de armazenamento físico principal, também denominado um endereço real. Além disso, a instrução é utilizada para eliminar entradas de memórias tampão de máquina interna associadas com a página, em que as entradas podem ser utilizadas durante uma tradução de endereço dinâmica para evitar o acesso às estruturas de controlo no armazenamento físico principal. Por exemplo, na arquitectura z/Architecture, há Memórias Tampão de Tradução de Endereço utilizadas durante a tradução de endereço dinâmica de endereços virtuais para endereços reais. Quando uma página de armazenamento é invalidada, as memórias tampão correspondentes também são desembaraçadas de entradas associadas com essa página.
Também há instruções que permitem a purga de Memórias Tampão de Tradução de Endereço completas. Por exemplo, na arquitectura z/Architecture, uma instrução designada como instrução de Comparar e Trocar e Purgar (CSP), purga todas as entradas de Memórias Tampão de Tradução de Endereço.
Assim, embora haja instruções para invalidar uma página de armazenamento e eliminar memórias tampão de entradas associadas a essa página e instruções para eliminar memórias tampão completas, existe ainda uma necessidade de instruções que possam invalidar, selectivamente, vários tamanhos de unidades de armazenamento e/ou eliminar memórias tampão de entradas associadas às mesmas. Por exemplo, existe uma necessidade de uma instrução que permita a especificação de uma unidade seleccionada de armazenamento maior do que uma página a invalidar e/ou efectue a eliminação de entradas de memória 2 tampão associadas à mesma. Existe ainda a necessidade de uma instrução que permita a eliminação de entradas de memória tampão para unidades seleccionadas de armazenamento sem afectar entradas de memória tampão para outras unidades de armazenamento. 0 documento "Enterprise System Architecture/390 Principies of Operation" [Online] 31 de Julho de 2001, XP002294122, retirado da Internet: URL:http://publibz.boulder.ibm.com/epubs/ pdf/dz9ar007,pdf> ensina uma eliminação selectiva de entradas de memória tampão com base um endereço de origem de tabela de páginas. O documento US 2003/074541 Al ensina que existem outras formas de endereços de origem de tabelas de tradução incluindo endereços de origem de tabelas de segmentos e endereços de origem de tabelas de regiões. A presente invenção proporciona um método de invalidação de armazenamento de um ambiente informático como reivindicado na reivindicação 1. A presente invenção proporciona, de um modo preferido, um método de invalidação de armazenamento de um ambiente informático. O método inclui, por exemplo, a especificação de uma unidade de armazenamento a invalidar, incluindo a unidade de armazenamento uma pluralidade de páginas de armazenamento e em que a especificação inclui proporcionar um descritor da unidade de armazenamento; e invalidação da unidade de armazenamento. A presente invenção proporciona, de um modo preferido, um método para facilitar a eliminação de memórias tampão de um 3 ambiente informático. 0 método inclui, por exemplo, a identificação de uma unidade de armazenamento na qual se vai efectuar a eliminação de uma ou mais entradas de uma ou mais memórias tampão, em que a unidade de armazenamento inclui uma pluralidade de páginas de armazenamento; e a eliminação de uma ou mais entradas da ou das memórias tampão associadas com a unidade de armazenamento identificada, em que uma ou mais entradas associadas com outra unidade de armazenamento não são eliminadas.
Proporciona-se, de um modo preferido, uma instrução a executar num ambiente informático. A instrução inclui, por exemplo, um código de operação para identificar uma instrução a executar; uma indicação de invalidação para especificar informação associada com uma unidade de armazenamento a invalidar, incluindo a unidade de armazenamento uma pluralidade de páginas de armazenamento; outra indicação para especificar informação adicional a utilizar pela instrução; e uma indicação de eliminação para especificar informação associada com uma de entre a unidade de armazenamento e outra unidade de armazenamento para as quais se pretende eliminar uma ou mais entradas de uma ou mais memórias tampão, em que um ou mais componentes de uma ou mais de entre a indicação de invalidação, a outra indicação e a indicação de eliminação podem ser configurados como não-operações.
Proporciona-se, de um modo preferido, uma instrução a executar num ambiente informático. A instrução inclui, por exemplo, um código de operação para identificar uma instrução a executar; e, pelo menos, uma de entre as seguintes: uma primeira indicação de invalidação para especificar informação associada com uma unidade de armazenamento a invalidar, incluindo a 4 unidade de armazenamento uma pluralidade de páginas de armazenamento; uma segunda indicação de invalidação para especificar informação adicional associada com a unidade de armazenamento a invalidar; e uma indicação de eliminação para especificar informação associada com uma de entre a unidade de armazenamento e outra unidade de armazenamento para as quais se pretende eliminar uma ou mais entradas de uma ou mais memórias tampão, em que a informação especificada pela indicação de eliminação não está associada com, pelo menos, uma outra unidade de armazenamento para a qual não se pretende eliminar uma ou mais entradas.
Também se descrevem e reivindicam, aqui, produtos de sistema e de programa informático correspondentes aos métodos acima resumidos.
Caracteristicas e vantagens adicionais são obtidas através das técnicas da presente invenção. Outras formas de realização e aspectos da invenção são descritos, neste documento, de modo pormenorizado e são considerados uma parte da invenção reivindicada. 0 tema que é considerado como a invenção é, particularmente, salientado e distintamente reivindicado nas reivindicações na conclusão da descrição. Os objectivos acima mencionados e outros objectivos, caracteristicas e vantagens da invenção são evidentes da descrição pormenorizada que se segue feita em associação com os desenhos anexos, nos quais: A FIG. 1 representa uma forma de realização de um ambiente informático incorporando e utilizando um ou mais aspectos da presente invenção; 5 A FIG. 2 representa uma forma de realização de outros pormenores associados com um controlador da FIG. 1, de acordo com um aspecto da presente invenção; A FIG. 3 representa uma forma de realização de um computador central que pode emular outro computador, de acordo com um aspecto da presente invenção; A FIG. 4 representa uma forma de realização da lógica associada com a invalidação de armazenamento, de acordo com um aspecto da presente invenção; A FIG. 5 representa uma forma de realização da lógica associada com a eliminação de entradas de memória tampão, de acordo com um aspecto da presente invenção; A FIG. 6a representa uma forma de realização de um formato de uma instrução de Entrada de Tabela de Tradução de Endereço Dinâmica Invalidada (IDTE), de acordo com um aspecto da presente invenção; A FIG. 6b representa uma forma de realização dos campos associados com o registo Rl geral da instrução IDTE da FIG. 6a, de acordo com um aspecto da presente invenção; A FIG. 6c representa uma forma de realização dos campos associados com o registo R2 geral da instrução IDTE da FIG. 6a, de acordo com um aspecto da presente invenção; 6 A FIG. 6d representa uma forma de realização dos campos associados com o registo R3 geral da instrução IDTE da FIG. 6a, de acordo com um aspecto da presente invenção;
As FIGs. 7a-7b representam uma forma de realização da lógica associada com a instrução IDTE, de acordo com um aspecto da presente invenção; A FIG. 8a representa uma forma de realização dos campos do registo Rl geral utilizado para uma operação alternativa da instrução IDTE, de acordo com um aspecto da presente invenção; A FIG. 8b representa uma forma de realização dos campos do registo R2 geral utilizado para uma operação alternativa da instrução IDTE, de acordo com um aspecto da presente invenção; A FIG. 8c representa uma forma de realização dos campos do registo R3 geral utilizado para uma operação alternativa da instrução IDTE, de acordo com um aspecto da presente invenção; e A FIG. 9 representa uma forma de realização da lógica associada com a operação alternativa da instrução IDTE, de acordo com um aspecto da presente invenção.
De acordo com um aspecto da presente invenção, uma parte de armazenamento especificada (e. g., armazenamento virtual) é invalidada. A titulo de exemplos, selecciona-se um segmento de armazenamento, que inclui uma pluralidade de páginas de armazenamento ou uma região de armazenamento, que inclui uma 7 pluralidade de segmentos de armazenamento, para invalidação. A invalidação é facilitada pela colocação de indicadores de invalidação situados em entradas de estrutura de dados correspondendo às unidades de armazenamento a invalidar. Num outro aspecto da presente invenção, entradas de memória tampão (e. g., entradas de Memórias Tampão de Tradução de Endereço), associadas com o armazenamento a invalidar ou outro armazenamento, são eliminadas. Ainda noutro aspecto da presente invenção, entradas de memória tampão associadas com espaços de endereços seleccionados são eliminadas de memórias tampão sem afectar entradas de memória tampão de espaços de endereços não seleccionados e sem execução de invalidação. Num exemplo, uma instrução aqui designada como instrução de Entrada de Tabela (IDTE) de Tradução de Endereço Dinâmica (DAT) Invalidada, da arquitectura z/Architecture da IBM®, é utilizada para executar uma ou mais das operações acima mencionadas.
Uma forma de realização de um ambiente 100 informático incorporando e utilizando um ou mais aspectos da presente invenção é descrita com referência à FIG. 1. O ambiente 100 informático baseia-se, por exemplo, na z/Architecture disponibilizada pela International Business Machines Corporation, Armonk, Nova Iorque. A z/Architecture é descrita numa publicação da IBM® intitulada "z/Architecture Principies of Operation", Publicação IBM N° SA22-7832-00, de Dezembro de 2000 (IBM® é uma marca registada da International Business Machines Corporation, Armonk, Nova Iorque, E.U.A. Outros nomes aqui utilizados podem ser marcas registadas, marcas comerciais ou nomes de produtos da International Business Machines Corporation ou de outras companhias) . Num exemplo, um ambiente informático com base na z/Architecture inclui um servidor eServer zSeries 8 disponibilizado pela International Business Machines Corporation, Armonk, Nova Iorque.
Num exemplo, o ambiente 100 informático inclui um complexo 102 de processador central (CPC) acoplado a um controlador 120. O complexo 102 de processador central inclui, por exemplo, uma ou mais partições 104 (e. g., partições lógicas LPl-LPn), um ou mais processadores 106 centrais (e. g., CPl-CPm) e um monitor 108 de máquina virtual (e. g., um gestor de partições lógicas), todos descritos em seguida.
Cada partição 104 lógica está apta a funcionar como um sistema distinto. Ou seja, cada partição lógica pode ser reiniciada automaticamente, carregada inicialmente com um sistema operativo, se desejado, e funcionar com programas diferentes. Um sistema operativo ou programa de aplicação executado numa partição lógica aparenta ter acesso a um sistema total e completo, mas, na realidade, apenas uma parte do mesmo está disponível. Uma combinação de hardware e Código Interno Licenciado (designado, normalmente, como microcódigo) impede que um programa numa partição lógica interfira com um programa numa partição lógica diferente. Isto permite o funcionamento de várias partições lógicas diferentes num único ou em múltiplos processadores físicos de modo dividido no tempo. Neste exemplo particular, cada partição lógica tem um sistema 110 operativo residente, que pode diferir para uma ou mais partições lógicas. Numa forma de realização, o sistema 110 operativo é o sistema operativo z/OS, disponibilizado pela International Business Machines Corporation, Armonk, Nova Iorque.
Os processadores 106 centrais são recursos de processador fisico que estão alocados às partições lógicas. Por exemplo, uma 9 partição 104 lógica inclui um ou mais processadores lógicos, cada um dos quais representa todos ou uma partilha de um recurso 106 de processador fisico alocado à partição. Os processadores lógicos de uma partição 104 lógica particular podem ser dedicados à partição, para que o recurso de processador subjacente fique reservado para essa partição, ou partilhados com outra partição, para que o recurso de processador subjacente fique, potencialmente, disponível para outra partição. As partições 104 lógicas são geridas por um monitor 108 de máquina virtual, implementado por microcódigo executado em processadores 106. Cada partição 104 lógica e o monitor 108 de máquina virtual compreendem um ou mais programas residentes em partes respectivas do armazenamento central associado com os processadores centrais. Um exemplo de monitor 108 de máquina virtual é o Recurso de Processador/Gestor de Sistemas (PR/SM) disponibilizado pela International Business Machines Corporation, Armonk, Nova Iorque. O controlador 120, que está acoplado ao complexo de processador central, inclui lógica centralizada responsável pela arbitragem entre processadores diferentes emissores de solicitações. Por exemplo, quando o controlador 120 recebe uma solicitação, determina que o requerente é o processador mestre para essa solicitação e que os outros processadores são processadores escravos; difunde mensagens; e, por outro lado, trata solicitações. Um exemplo de um controlador é descrito na Patente U.S. N° 6199219. Outros pormenores também são descritos com referência à FIG. 2. A FIG. 2 representa outro exemplo de um controlador 200 acoplado a uma pluralidade de processadores 201 centrais (CPU). Neste exemplo, representam-se dois processadores centrais. No entanto, deve compreender-se, que o controlador 200 pode estar acoplado a mais do que dois processadores. 10 0 controlador 200 inclui vários controlos incluindo, por exemplo, controlos 202 de serialização de sistema. Os controlos de serialização de sistema são utilizados para assegurar que as operações a serializar, tais como instruções de invalidação, são serializadas, dado que apenas uma dessas instruções é executada de cada vez no ambiente informático. Também monitoriza a sequência de eventos para essa operação. O controlador 200 está acoplado a cada processador central por meio de várias interfaces. Por exemplo, uma interface 204 é utilizada pelo Código Interno Licenciado num processador central para enviar comandos de "controlo" para o controlador, que especificam uma acção a tomar e para enviar comandos de "sentido", que devolvem informação proveniente do controlador. Outra interface é um barramento 206 de resposta que é utilizado para devolver informação proveniente do controlador para os comandos de "sentido". O barramento de resposta também é utilizado para comunicar um estado de comando para comandos de "controlo" e pode ser definido a partir de uma pluralidade de fontes no interior do controlador, incluindo os controlos de serialização de sistema. Um processador central pode utilizar esta interface para sentir o estado dos controlos de serialização de sistema no controlador 200.
Uma outra interface é a interface 208, que é utilizada pelo controlador para enviar comandos para cada CPU. Isto também pode ser controlado por uma pluralidade de fontes no interior do controlador, incluindo controlos 202 de serialização de sistema. Ainda uma outra interface é a interface 210, que fornece sinais a controlos 212 de cache do processador 201 central. Os controlos 212 de cache processam comandos em resposta aos 11 sinais. Num exemplo, os controlos 212 de cache processam comandos que afectam uma ou mais memórias tampão, tais como Memórias Tampão 213 de Tradução de Endereço (TLB), como descrito em seguida em mais pormenor.
Além de controlos 212 de cache, o processador 201 central inclui vários outros controlos, incluindo, por exemplo, controlos 220 de interrupção e controlos 222 de execução. Em resposta a eventos particulares, os controlos 220 de interrupção fazem com que uma interrupção interna fique pendente no CPU, o que, por sua vez, faz com que os controlos 222 de execução suspendam o processamento de instruções de programa no ponto passível de interrupção seguinte. Em resposta à interrupção, os controlos 222 de execução invocam uma rotina de Código interno Licenciado para fazer com que uma báscula 224 de operação de difusão permitida autorize os controlos 212 de cache a processarem comandos pendentes. O processador 201 central também inclui uma báscula 226 de CPU em repouso que indica se o processador central está ou não em repouso. O ambiente informático descrito acima é apenas um exemplo. Por exemplo, uma ou mais partições podem estar a ser executadas em diferentes modos de arquitectura. Além disso, num outro exemplo, o ambiente não precisa de se basear em z/Architecture, mas, em vez disso, pode basear-se noutras arquitecturas disponibilizadas pela Intel, Sun Microsystems, bem como por outras. Além disso, um ambiente pode incluir um emulador (e. g., software ou outros mecanismos de emulação), no qual se emula uma arquitectura particular ou seu subconjunto. Num ambiente deste tipo, uma ou mais funções de emulação do emulador podem 12 implementar um ou mais aspectos da presente invenção, mesmo que um computador executando um emulador possa ter uma arquitectura diferente das capacidades a emular. Num exemplo, em modo de emulação, a instrução ou operação especifica a emular é descodificada e uma função de emulação apropriada é construída para implementar a instrução ou operação individual.
Pormenores adicionais de um ambiente de emulação são descritos com referência à FIG. 3. Num exemplo, um computador 300 central está apto a emular outra arquitectura, computador e/ou capacidades de processamento de outro computador. Por exemplo, o computador 300 central baseia-se numa arquitectura Intel; arquitectura RISC, tal como PowerPC; uma arquitectura SPARC, disponibilizada pela Sun Microsystems; ou outra arquitectura e está apto a emular a z/Architecture da IBM® ou outra arquitectura da IBM® ou outra entidade. O computador 300 central inclui, por exemplo, uma memória 302 para armazenar instruções e dados; uma unidade 304 de obtenção de instruções para obter instruções da memória 302 e para, opcionalmente, proporcionar um armazenamento temporário local às instruções obtidas; uma unidade 306 de descodificação de instruções para receber instruções da unidade 304 de obtenção de instruções e para determinar o tipo de instruções que foram obtidas; e uma unidade 308 de execução de instruções para executar as instruções. A execução pode incluir o carregamento de dados num registo a partir da memória 302; armazenar, de novo, dados na memória provenientes de um registo; ou efectuar algum tipo de operação aritmética ou lógica, como determinado pela unidade de descodificação. 13
Num exemplo, cada unidade descrita acima é implementada em software. Por exemplo, as operações a executar pelas unidades são implementadas como uma ou mais subrotinas no software emulador. Noutro exemplo, uma ou mais das operações são implementadas em firmware, hardware, software ou alguma sua combinação.
Além disso, embora a FIG. 3 seja descrita relativamente à emulação, o ambiente da FIG. 3 não precisa de ser um ambiente de emulação. Noutro exemplo, executam-se instruções num ambiente nativo e as operações são implementadas em hardware, firmware, software ou alguma sua combinação.
Um ambiente informático pode incluir armazenamento virtual, assim como armazenamento principal. 0 armazenamento virtual pode exceder em muito o tamanho do armazenamento principal disponível na configuração e é, normalmente, mantido em armazenamento auxiliar. Considera-se que o armazenamento virtual é constituído por blocos de endereços, denominados páginas. As páginas de armazenamento virtual às quais se recorreu mais recentemente são atribuídas para ocupar blocos de armazenamento físico principal. Quando um utilizador recorre a páginas de armazenamento virtual que não aparecem no armazenamento principal, as páginas virtuais substituem as páginas no armazenamento principal com menos probabilidade de serem utilizadas. A troca de páginas no armazenamento pode ser efectuada pelo sistema operativo sem o conhecimento do utilizador.
Os endereços utilizados para indicar locais no armazenamento virtual são designados como endereços virtuais. Um bloco de endereços virtuais sequenciais ocupando, por exemplo, até 4k bytes, é designado como uma página. De modo semelhante, um 14 bloco de endereços virtuais sequenciais ocupando, por exemplo, até 1M bytes, é designado como um segmento; e um bloco de endereços virtuais sequenciais ocupando, por exemplo, até 2G bytes, é designado como uma região. Além disso, uma sequência de endereços virtuais associados com armazenamento virtual indicada por um elemento de controlo de espaço de endereços (ASCE) é denominada um espaço de endereços. Podem utilizar-se espaços de endereços para proporcionar graus de isolamento entre utilizadores. Um espaço de endereços pode incluir uma ou mais regiões, um ou mais segmentos, uma ou mais páginas ou alguma sua combinação.
Existem estruturas de dados, associadas a diferentes tipos de unidades de armazenamento (e. g., regiões, segmentos, páginas), a utilizar em processamento associado com as unidades de armazenamento. Por exemplo, existem tabelas de regiões associadas com regiões; tabelas de segmentos associadas com segmentos; e tabelas de páginas associadas com páginas. Estas tabelas são utilizadas, por exemplo, durante a tradução (e. g., Tradução de Endereço Dinâmica) de um endereço virtual para um endereço real, que é utilizado para aceder ao armazenamento principal. As tabelas a utilizar em tradução, designadas, aqui, como tabelas de tradução, são indicadas por um elemento de controlo de espaço de endereços (ASCE) . Isto é descrito em mais pormenor numa publicação da IBM® intitulada "z/Architecture Principies of Operation", Publicação IBM N° SA22-7832-00, de Dezembro de 2000. Uma unidade de armazenamento virtual que não esteja, actualmente, atribuída ao armazenamento principal é denominada inválida. O estado inválido de uma unidade de armazenamento virtual é indicado por um indicador inválido na estrutura de dados associada com a unidade. 15 0 mecanismo de tradução de endereço dinâmica é implementado, numa forma de realização, para que a informação obtida a partir das tabelas de tradução (e. g., tabelas de regiões, tabelas de segmentos e/ou tabelas de páginas) através do processo DAT seja mantida numa ou mais memórias tampão situadas no interior dos processadores, designadas, aqui, como Memórias Tampão de Tradução de Endereço, de modo a melhorar o desempenho da tradução de endereços. Ou seja, durante a tradução, verifica-se se a informação necessária está presente nas memórias tampão e, depois, se a informação não estiver nas memórias tampão, acede-se a uma ou mais das tabelas de tradução.
Numa forma de realização, considera-se que uma entrada de memória tampão é uma de três tipos: uma entrada de tabelas de regiões e segmentos combinadas de TLB; uma entrada de tabela de páginas de TLB; ou uma entrada de espaço real de TLB, todas descritas em seguida.
Uma entrada de tabelas de regiões e segmentos combinadas de TLB (CRSTE) inclui a informação obtida a partir da entrada ou entradas de tabela em armazenamento real ou absoluto e os atributos utilizados para obter esta informação do armazenamento. Num exemplo, uma entrada de tabelas de regiões e segmentos combinadas de TLB (CRSTE) inclui os seguintes campos: TO 0 inicio de tabela no elemento de controlo de espaço de endereços utilizado para formar a entrada; RX 0 indice de região do endereço virtual utilizado para formar a entrada; 16 SX 0 índice de segmento do endereço virtual utilizado para formar a entrada; PTO 0 início de tabela de páginas obtido a partir da entrada de tabela de segmentos em armazenamento real ou absoluto; C 0 bit de segmento comum obtido a partir da entrada de tabela de segmentos em armazenamento real ou absoluto; e P 0 bit de protecção de página obtido a partir da entrada de tabela de segmentos em armazenamento real ou absoluto. V 0 bit de validade indica se a entrada na TLB é válida e, por conseguinte, pode ser utilizada para consultar entradas subsequentes.
Uma entrada de tabela de páginas de TLB inclui a informação obtida a partir da entrada ou entradas de tabela em armazenamento real ou absoluto e os atributos utilizados para obter esta informação do armazenamento. Num exemplo, uma entrada de tabela de páginas de TLB inclui: TO 0 início de tabela no elemento de controlo de espaço de endereços ou entrada de tabelas de regiões e segmentos combinadas de TLB utilizado para formar a entrada, consoante o modo de formação da entrada; PTO 0 início de tabela de páginas utilizado para formar a entrada; PX 0 índice de páginas do endereço virtual utilizado para formar a entrada; 17 PFRA 0 endereço real de página-trama obtido a partir da entrada de tabela de páginas em armazenamento real ou absoluto; e P 0 bit de protecção de página obtido a partir da entrada de tabela de segmentos em armazenamento real ou absoluto. V 0 bit de validade indica se a entrada na TLB é válida e, por conseguinte, pode ser utilizada para consultar entradas subsequentes. Às vezes, pretende-se invalidar uma unidade de armazenamento. Para facilitar esta invalidação, emprega-se a tabela de tradução associada a essa unidade de armazenamento, como descrito aqui. Além disso, em resposta à invalidação do armazenamento, também se podem eliminar entradas de memória tampão correspondentes. Por exemplo, de modo a invalidar uma página de armazenamento, define-se um bit inválido de uma entrada de tabela de páginas. Além disso, num exemplo, as entradas correspondentes numa ou mais TLB são eliminadas atomicamente. Num exemplo particular, a invalidação e eliminação de entradas associadas a páginas de armazenamento são efectuadas por uma instrução de Entrada de Tabela de Páginas Invalidada (ipte) .
Além de invalidar páginas de armazenamento, de acordo com um aspecto da presente invenção, segmentos de armazenamento e/ou regiões de armazenamento podem ser invalidados. Num exemplo, utilizam-se tabelas de segmentos e/ou regiões nesta invalidação. Uma forma de realização da lógica associada com a invalidação de 18 uma unidade de armazenamento particular é descrita com referência à FIG. 4.
Inicialmente, identifica-se uma tabela de regiões ou segmentos na qual se pretende invalidar uma ou mais entradas PASSO 400. Num exemplo, isto inclui proporcionar um inicio de tabela de regiões ou um início de tabela de segmentos. Em seguida, , identifica-se uma entrada no interior da tabela de regiões ou segmentos indicada para invalidação, PASSO 402, e a entrada é invalidada, PASSO 404. Num exemplo, a identificação é feita ao proporcionar um índice de região ou índice de segmento (bits de um endereço virtual) que selecciona uma entrada no interior da tabela identificada e a invalidação inclui definir um indicador inválido no interior da entrada. Em resposta à colocação do indicador inválido, invalida-se uma unidade de armazenamento correspondente (e. g., uma região ou segmento). Subsequentemente, determina-se se há mais entradas a invalidar, INTERROGAÇÃO 406. Se houver mais entradas a invalidar, então, o processamento continua no PASSO 402. Caso contrário, o processamento está completo.
Além de invalidar a ou as entradas numa tabela de regiões ou segmentos e, assim, invalidar essas unidades de armazenamento, as entradas correspondentes (ou outras entradas) podem ser eliminadas ou purgadas de uma ou mais memórias tampão num ou mais processadores no interior do ambiente. Uma forma de realização da lógica associada a esta eliminação é descrita em mais pormenor com referência à FIG. 5.
Inicialmente, determina-se se um início de tabela de regiões ou segmentos está a ser especificado, INTERROGAÇÃO 500. Se um início de tabela de regiões ou segmentos estiver especificado, 19
então, uma ou mais memórias tampão são desembaraçadas de uma entrada especificada pelo indice de região ou segmento que coincide com o inicio de tabela de regiões ou segmentos, PASSO 502. Subsequentemente, determina-se se há mais entradas a eliminar, INTERROGAÇÃO 504. Se for esse o caso, então, 0 processamento continua com o PASSO 502. Caso contrário, 0 processamento está completo.
Regressando à INTERROGAÇÃO 500, se o inicio de tabela de regiões ou segmentos não estiver especificado, então, uma ou mais memórias tampão são desembaraçadas de uma entrada especificada pelo indice de região ou segmento, PASSO 508. Subsequentemente, determina-se se há mais entradas a eliminar, INTERROGAÇÃO 510. Se houver mais entradas a eliminar, então, o processamento continua com o PASSO 508. Caso contrário, o processamento está completo.
Num exemplo, a invalidação e eliminação são efectuadas por uma instrução. A instrução invalida as entradas seleccionadas de uma tabela de regiões ou segmentos e purga, atomicamente, pelo menos, as entradas correspondentes (ou outras entradas) das TLB nos processadores da configuração. Num exemplo, as entradas são purgadas de todas as TLB em todos os processadores, sejam físicos, virtuais ou emulados por software. Se existir uma estrutura TLM multinivel, então, todos os níveis são purgados, num exemplo. Se existirem múltiplas partições lógicas no sistema, então, as entradas TLB neste e noutros processadores formados para a partição lógica na qual a actual instrução IDTE está a ser executada são purgadas.
Esta instrução pode ser implementada em muitas arquitecturas e pode ser emulada. Como exemplos, a instrução pode ser 20 executada em hardware por um processador; ou por emulação do conjunto de instruções incluindo esta instrução ao executar software num computador tendo um conjunto de instruções nativas diferentes. Num exemplo particular, a instrução é implementada na z/Architecture e é designada, aqui, como uma instrução de Entrada de Tabela (idte) de Tradução de Endereço Dinâmica (DAT) Invalidada. A IDTE proporciona, por exemplo, uma opção de invalidação e eliminação, na qual uma ou mais regiões ou segmentos de armazenamento são invalidados por meio de uma ou mais entradas de uma tabela de regiões ou tabela de segmentos e, pelo menos, as entradas correspondentes (ou outras entradas) das TLB (e. g., todas as TLB) na configuração são purgadas. A instrução especifica um conjunto minimo de entradas de TLB a purgar. Numa outra implementação, podem purgar-se mais ou mesmo todas as entradas de TLB após execução da instrução IDTE.
Uma forma de realização do formato de uma instrução (IDTE) de Entrada de Tabela de DAT Invalidada é descrita com referência à FIG. 6. Num exemplo, uma instrução 600 IDTE inclui, por exemplo, um código 602 de operação que indica a instrução de Entrada de Tabela Invalidada DAT (e. g., 'B98E'x) e uma pluralidade de registos 604-608. Cada registo é descrito em mais pormenor, em seguida, com referência às FlGs. 6b-6d.
Com referência à FIG. 6b, o registo 606, que é um registo RI geral, tem, por exemplo, um formato de um elemento de controlo de espaço de endereços com um inicio de tabela (e. g., bits 0-51) e utiliza um controlo de tipo indicação (bits 60 e 61) . Os bits 52-59, 62 e 63 são ignorados. Em particular, o Rl inclui, por exemplo, um inicio 601 de tabela de regiões ou tabela de 21 segmentos para invalidação que indica a tabela de tradução para a qual se quer invalidar uma ou mais entradas; e um controlo 612 de tipo indicação (DT) que especifica o tipo dessa tabela (e. g., tabela de regiões ou tabela de segmentos). 0 registo 608 (FIG. 6c), que é o registo R2 geral, inclui um primeiro índice 614 de região, especificando uma tabela de regiões de primeiro nível; um segundo índice 616 de região, especificando uma tabela de regiões de segundo nível; e um terceiro índice 618 de região, especificando uma tabela de regiões de terceiro nível. Ou seja, para acomodar grandes endereços virtuais, utilizam-se três níveis de tabelas de regiões. O registador R2 também inclui um índice 620 de segmento, que é um índice numa tabela de segmentos; um indicador 621 de modo, que determina a função a efectuar; e um indicador 622 de entradas adicionais, que indica quantas entradas se quer invalidar. Por exemplo, os bits 53-63 do registo R2 geral incluem um inteiro binário especificando o número de entradas de tabela adicionais a invalidar. Num exemplo, o número de entradas a invalidar é 1-2048, correspondendo a um valor em bits 53-63 de 0-2047. Os bits 44-51 do registo R2 geral são zeros; de outra forma, reconhece-se uma excepção de especificação. Assim, os bits 0-43 do registo R2 geral têm o formato do índice de região e índice de segmento de um endereço virtual. A parte de bits 0-43 utilizada pela DAT para seleccionar uma entrada no tipo de tabela indicada pelo registo RI geral é denominada índice de Invalidação Real e é descrito em mais pormenor abaixo. O registo 604 (FIG. 6d), que é o registo R3 geral, tem, por exemplo, um formato de um elemento de controlo de espaço de endereços com o início de tabela, utilizando-se os bits 0-51 se não for nulo. Este início de tabela é utilizado para seleccionar 22 entradas de TLB a eliminar e o tipo de tabela que indica é independente dos bits 60 e 61 do registo Rl geral. Os bits 52-63 do registo R3 geral são ignorados. Se R3 for zero, todo o conteúdo do registo 0 geral é ignorado. Num exemplo, as entradas a eliminar podem ser iguais ou diferentes das entradas que são invalidadas.
Uma forma de realização da lógica associada com uma operação de invalidação e eliminação é descrita com referência às FlGs. 7a-7b. Num exemplo, uma operação de invalidação e eliminação é especificada quando o bit 52 do registo R2 geral é zero. Com esta operação, a entrada de tabela de regiões indicada ou entrada de tabela de segmentos em armazenamento ou um leque de entradas começando com a entrada indicada, é invalidada e as memórias tampão de tradução de endereço (TLB) nos CPU da configuração são desembaraçadas das entradas associadas (ou outras entradas). Num exemplo, todos os níveis das memórias tampão, se forem multinível, são eliminados em todos os CPU.
No que se refere à FIG. 7a, inicialmente, especifica-se um inicio de tabela de regiões ou tabela de segmentos indicando uma tabela de regiões ou tabela de segmentos a partir da qual se pretende invalidar uma ou mais entradas, PASSO 700. Num exemplo, isto é especificado no registo Rl geral. Além disso, selecciona-se uma entrada de tabela em armazenamento a invalidar, PASSO 702. Num exemplo, indica-se uma entrada de tabela ao adicionar o inicio de tabela no registo Rl geral e o índice de invalidação real no registo R2 geral e seguindo várias regras, como aqui descrito.
Os bits 60 e 61 do registo Rl geral especificam um tipo de tabela e um índice de invalidação real, do seguinte modo: 23
Bits 60 e 61 do
Tipo de Tabela índice de
Reg. Rl 11 invalidação Real no Reg. R2
Primeira tabela de Primeiro índice de 10 01 regiões Segunda tabela de regiões Terceira tabela de 00 regiões Tabela de segmentos região (bits 0-10) Segundo índice de região (bits 11-21) Terceiro índice de região (bits 22-32) índice de segmento (bits 33-43) (A parte dos bits 0-43 para a direita do índice de invalidação real é ignorada)
Com referência à tabela acima, quando os bits 60 e 61 têm o valor binário 11, a parte do primeiro índice de região de R2, em associação com o primeiro inicio de tabela de regiões de Rl, é utilizada para seleccionar uma entrada numa primeira tabela de regiões. O início de tabela é tratado como um endereço de 64 bits. O endereço de 64 bits da entrada da primeira tabela de regiões em armazenamento real ou absoluto é obtido pela anexação de doze zeros à direita dos bits 0-51 da indicação da primeira tabela de regiões e adição ao primeiro índice de região de três zeros mais à direita e cinquenta zeros mais à esquerda. Esta adição é efectuada de acordo com as regras de aritmética de um endereço de 64 bits, independentemente do modo de endereçamento actual, especificado pelos bits 31 e 32 da actual Palavra de Estado de Programa (PSW). Quando ocorre um transporte de bit de posição zero durante a adição, este é ignorada. O endereço formado a partir destes dois componentes é um endereço real ou 24 absoluto. Todos os 64 bits do endereço são utilizados, independentemente da actual PSW especificar o modo de endereçamento de 24 bits, 31 bits ou 64 bits.
Num exemplo, a entrada completa de primeira tabela de regiões é obtida simultaneamente a partir do armazenamento, como observado por outros CPU. 0 acesso de obtenção à entrada está sujeito a protecção controlada por chave e o acesso de armazenamento está sujeito a protecção controlada por chave e baixa protecção de endereço. Quando o endereço de armazenamento gerado para obter a entrada de primeira tabela de regiões indica um local não disponível na configuração, reconhece-se uma excepção de endereçamento e a unidade de operação é suprimida.
Quando os bits 60 e 61 têm o valor binário 10, o segundo indice de região de R2, em associação com o início de segunda tabela de regiões de Rl, é utilizado para seleccionar uma entrada a partir da segunda tabela de regiões. O processo de consulta da terceira tabela de regiões é semelhante ao processo de consulta da primeira tabela de regiões. Quando não se reconhecem excepções, a entrada obtida a partir da segunda tabela de regiões indica o início e especifica a distância e comprimento da terceira tabela de regiões correspondente.
Quando os bits 60 e 61 têm o valor binário 01, a parte de terceiro índice de região de R2, em associação com o início de terceira tabela de regiões de Rl, é utilizada para seleccionar uma entrada a partir da terceira tabela de regiões. O processo de consulta da segunda tabela de regiões é semelhante ao processo de consulta da primeira tabela de regiões. Quando não se reconhecem excepções, a entrada obtida a partir da terceira 25 tabela de regiões indica o início e especifica a distância e comprimento da tabela de segmentos correspondente.
Quando os bits 60 e 61 têm o valor binário 00, a parte de índice de segmento de R2, em associação com o início de tabela de segmentos de Rl, é utilizada para seleccionar uma entrada a partir da tabela de segmentos. O processo de consulta da tabela de segmentos é semelhante ao processo de consulta da primeira tabela de regiões. Quando não se reconhecem excepções, a entrada obtida a partir da tabela de segmentos indica o início da tabela de páginas correspondente.
Num exemplo, a entrada de tabela completa é obtida simultaneamente a partir do armazenamento. Subsequentemente, a entrada é invalidada, PASSO 704. Num exemplo, a entrada é invalidada ao definir para o bit 58 da entrada o binário 1. Ao invalidar esta entrada, a unidade de armazenamento correspondente é invalidada.
Em seguida, determina-se se há mais entradas a invalidar, INTERROGAÇÃO 706. Num exemplo, esta determinação faz-se através da verificação dos bits 53-63 do registo R2 geral. Se nem todos os bits 53-63 do registo R2 geral forem todos zero, então, há mais entradas a invalidar. Assim, adiciona-se um 1 ao valor anteriormente utilizado do índice de invalidação real e o processamento continua com o PASSO 700. Isto é repetido para que um número de entradas superior em um ao número especificado pelos bits 53-63 seja invalidado. Um transporte do bit de posição mais à esquerda do índice de invalidação real é ignorado e, neste caso, ocorre o rolamento) na tabela. O conteúdo do registo R2 geral permanece inalterado. 26
Depois da invalidação da ou das entradas, de acordo com um outro aspecto da presente invenção, este CPU elimina entradas seleccionadas da sua TLB e ordena aos outros CPU na configuração que eliminem entradas seleccionadas das suas TLB, PASSO 708. Num exemplo, cada TLB é desembaraçada de, pelo menos, as entradas de Tabelas de Regiões e Segmentos Combinadas (CRSTE) que satisfaçam as seguintes condições:
Coincidência do índice de invalidação real e dos bits à esquerda do mesmo no registo R2 geral e da mesma parte do campo de índice de região e segmento na entrada de TLB. (Numa forma de realização, se estes campos incluírem campos de índice de segmento, podem eliminar-se CRSTE, independentemente dos seus campos de índice de região ou podem eliminar-se todas as CRSTE. Se os campos não incluírem campos de índice de segmento, podem eliminar-se todas as CRSTE.) Deve salientar-se que, quando múltiplas entradas de tabela são invalidadas devido aos bits 53-63 do registo R2 geral, então, o índice de invalidação real é incrementado e perde-se um transporte do bit de posição mais à esquerda do índice.
Ou R3 é zero ou o campo de início de tabela no registo R3 geral coincide com o campo de início de tabela na entrada de TLB.
Se a entrada invalidada for uma entrada de tabela de segmentos, o campo de início de tabela de páginas na entrada invalidada coincide com o campo de início de tabela de páginas na entrada de TLB. (Numa forma de realização, uma entrada de TLB pode ser eliminada, independentemente do início de tabela de páginas na entrada.) 27
Cada TLB também é desembaraçada de, pelo menos, entradas de tabela de páginas nas quais o campo de inicio de tabela de páginas coincide com o campo de inicio de tabela de páginas na (1) entrada de tabela de segmentos invalidada, se uma entrada de tabela de segmentos foi invalidada ou (2), qualquer entrada de tabelas de regiões e segmentos combinadas que tenha sido eliminada (está no conjunto a eliminar) na mesma TLB. (Noutra forma de realização, a implementação pode eliminar uma entrada de tabela de páginas independentemente do inicio de tabela de páginas na entrada. Ou seja, pode eliminar todas as entradas de tabela de páginas.)
Uma forma de realização da lógica associada com eliminação de entradas a partir de uma TLB é descrita com referência à FIG. 7b. Como um exemplo, isto é uma continuação do processamento efectuado pela IDTE e é efectuado atomicamente em relação à invalidação, como observado pelo CPU e outros CPU no sistema.
Com referência à FIG. 7b, inicialmente, determina-se, se R3 é zero, INTERROGAÇÃO 720. Se R3 não for zero, então, um inicio de tabela de regiões ou tabela de segmentos para eliminação é indicado no registo R3 e, para eliminar uma entrada de TLB, o inicio de tabela de regiões/segmentos indicado no registo R3 deve coincidir com o inicio de tabela de regiões/segmentos utilizado para formar a entrada, PASSO 722. Se R3 for zero, o conteúdo do registo R3 (registo 0) é ignorado e uma entrada é eliminada independentemente do inicio de tabela de regiões/segmentos utilizado para formar a entrada, PASSO 724. A TLB é, eliminada em todos os processadores no sistema das entradas especificadas pelo indice de tabela de regiões/segmentos especificado no registo R2, PASSO 726. Num 28 exemplo, a TLB é desembaraçada de, pelo menos, as entradas de tabelas de regiões e segmentos combinadas nas quais, por exemplo, o índice de invalidação real e os bits à esquerda do mesmo, no registo R2 geral, e a mesma parte da tabela de índices de região e segmento na entrada de TLB coincidem. Para eliminar uma entrada, num exemplo, o bit v é desligado.
Além disso, se uma entrada de tabela de segmentos estiver a ser invalidada, então, as TLB em todos os processadores no sistema são desembaraçadas de entradas de tabela de páginas nas quais o início de tabela de páginas na entrada é igual ao início de tabela de páginas na TLB, PASSO 728. Além disso, se uma entrada de tabela de segmentos estiver a ser invalidada, as TLB são desembaraçadas de, pelo menos, as entradas de tabela de páginas nas quais o campo de início de tabela de páginas coincide com o campo de início de tabela de páginas em qualquer CRSTE que tenha sido eliminada (e. g., necessariamente) na mesma TLB, PASSO 730. Este processo de eliminação é repetido para um número de entradas superior em um ao número especificado no campo 622 de entradas adicionais da FIG. 6c, PASSO 732.
Depois, determina-se se a operação de invalidação e eliminação está completa, INTERROGAÇÃO 734. Num exemplo, a instrução IDTE não está completa no processador emissor até que as entradas de TLB indicadas tenham sido eliminadas no CPU e todos os outros CPU no sistema tenham completado quaisquer acessos de armazenamento utilizando a entrada de TLB especificada nesta instrução. Num exemplo, é o controlador de repouso que indica a este processador emissor se os outros processadores completaram os seus acessos. Ou seja, considera-se que o processador emissor é o processador mestre e quaisquer processadores escravos afectados pela instrução IDTE indicam o 29 seu estado ao controlador. Em resposta ao controlador que recebe o estado apropriado dos processadores escravos, este indica a finalização ao mestre. Se o processamento estiver completo, então, a instrução termina, PASSO 736. Caso contrário, o processador espera durante um predeterminado período de tempo e verifica o estado, mais uma vez, ou recebe informação quanto à finalização, INTERROGAÇÃO 734.
Numa forma de realização, o armazenamento na entrada de tabela de regiões ou segmentos e a eliminação de entradas de tlb pode ou não ocorrer se o bit inválido fosse já um na entrada de tabela de regiões ou segmentos.
Embora na forma de realização descrita acima a eliminação das entradas de TLB seja efectuada subsequentemente à invalidação das entradas desejadas, noutras formas de realização, a eliminação de entradas de TLB pode ocorrer depois de cada invalidação, após um número seleccionado de invalidações, etc.
Num outro aspecto da presente invenção, a instrução IDTE pode, em alternativa, ser utilizada para purgar entradas de TLB associadas a um espaço de endereços (e. g., indicado por um Elemento de Controlo de Espaço de Endereços (ASCE)). Num exemplo, esta opção é indicada ao definir para o bit 52 do registo R2 geral o valor 1. Com esta opção, o conteúdo do registo RI geral é ignorado (ver FIG. 8a), bem como os bits 0-43 e 53-63 do registo R2 geral (ver FIG. 8b). O conteúdo do registo R3 geral tem o formato de um elemento de controlo de espaço de endereços com o inicio de tabela, sendo utilizados os bits 0-51 (FIG. 8c). Os bits 52-63 do registo R3 geral são ignorados. R3 pode ser zero ou diferente de zero; ou seja, qualquer registo 30 geral incluindo o registo 0 pode ser indicado. Esta operação não efectua qualquer invalidação de armazenamento, mas elimina das TLB dos CPU na configuração, pelo menos, as entradas de tabelas de regiões e segmentos combinadas e entradas de tabela de páginas nas quais o campo de inicio de tabela coincide com o campo de inicio de tabela no registo R3 geral. (Numa outra forma de realização, a implementação pode eliminar uma entrada de tabela de páginas, independentemente do inicio de tabela na entrada. Ou seja, pode eliminar todas as entradas de tabela de páginas.)
Uma forma de realização da lógica associada com uma eliminação por operação ASCE é descrita com referência à FIG. 9. inicialmente, especifica-se um inicio de tabela de regiões ou tabela de segmentos indicando uma tabela de regiões ou tabela de segmentos nas quais se pretende eliminar entradas de TLB correspondentes, PASSO 900. Num exemplo, isto é especificado em bits 0-51 do registo R3 geral. Em seguida, pelo menos, as entradas de tabelas de regiões e segmentos combinadas e entradas de tabela de páginas correspondendo ao inicio de tabela especificado em R3 são eliminadas em todos os processadores no sistema, PASSO 902.
Subsequentemente, determina-se se a execução da instrução IDTE está completa, INTERROGAÇÃO 904. Numa forma de realização, a instrução IDTE não está completa no processador emissor até que as entradas de TLB correspondentes aos parâmetros especificados tenham sido eliminadas no CPU emissor e os outros CPU na configuração tenham completado quaisquer acessos de armazenamento, incluindo a actualização de bits de mudança e referência utilizando entradas de TLB correspondentes aos parâmetros especificados. Se, as entradas tiverem sido 31 eliminadas e os acessos de armazenamento estiverem completos, então, a execução da instrução IDTE está completa, PASSO 906. Caso contrário, o processador espera durante um predeterminado período de tempo e verifica o estado, mais uma vez, ou recebe informação quanto à finalização, INTERROGAÇÃO 904.
Descreveu-se em pormenor, acima, o processamento associado a uma instrução IDTE. Numa forma de realização, as operações não têm, necessariamente, qualquer efeito em entradas de espaço real de TLB. Em seguida, proporciona-se informação adicional, melhoramentos e/ou formas de realização associadas com o processamento de uma forma de realização de uma instrução IDTE. 1. A eliminação selectiva de entradas de TLB pode ser implementada de formas diferentes, consoante o modelo ou forma de realização seleccionada. Por exemplo, de um modo geral, podem eliminar-se mais entradas do que o número mínimo especificado. Quando se efectua a operação de invalidação e eliminação, todas as entradas de tabelas de regiões e segmentos combinadas (CRSTE) contendo um indice de segmento igual a um indice de invalidação real que é um índice de segmento podem ser eliminadas ou todas as CRSTE podem ser eliminadas quando o indice de invalidação real não é um índice de segmento. Além disso, uma CRSTE ou entrada de tabela de páginas pode ser eliminada independentemente do início de tabela de páginas na entrada. Quando a operação de eliminação por ASCE é efectuada, uma entrada de tabela de páginas pode ser eliminada, independentemente do inicio de tabela na entrada. Quando qualquer destas operações é efectuada, numa forma de realização, o número mínimo exacto de entradas requerido pode ser eliminado. 32 2. Um elemento de controlo de espaço de endereços pode conter um início de símbolo de espaço real em vez de um início de tabela de regiões ou tabela de segmentos. Um início de tabela no registo R3 geral é indistinguível de um início de símbolo no registo. 3. Quando a operação de invalidação e eliminação é especificada, a eliminação de entradas de TLB pode aproveitar o início de tabela de páginas numa entrada de tabela de segmentos. Por conseguinte, se a entrada de tabela de segmentos, quando se encontra no estado anexado, contiver um início de tabela de páginas diferente do valor actual, cópias de entradas contendo os valores anteriores podem permanecer na TLB. 4. Quando a operação de invalidação e eliminação é especificada, o endereço da entrada de tabela DAT para a IDTE é um endereço de 64 bits e a aritmética de endereços é efectuada seguindo as regras normais para a aritmética de endereços de 64 bits, com rolamento em 264 - 1 . De igual modo, os campos de distância e comprimento não são utilizados. Consequentemente, as tabelas DAT não são especificadas para continuar a operação de localizações de armazenamento máxima para a localização 0 e a primeira entrada indicada e todas as entradas adicionais especificadas pelos bits 63-63 do registo R3 geral devem situar-se dentro da tabela indicada. 5. A instrução IDTE está sujeita a intercepção sujeita à SIE. Numa forma de realização, o sistema é serializado para que o processador que executa a instrução IDTE não possa iniciar a operação até que outros processadores tenham parado de utilizar as entradas de TLB a especificar. Além 33 disso, o processador que executa a instrução IDTE não continua a prosseguir a execução até que as entradas apropriadas tenham sido eliminadas das TLB de todos os processadores no sistema. 6. Uma função de serialização é efectuada antes do início da operação e, de novo, depois de a operação estar completa. A serialização aplica-se a este CPU; outros CPU não são necessariamente serializados.
Descreveu-se em pormenor, acima, um exemplo de uma instrução que pode invalidar entradas de uma tabela de segmentos ou de regiões e eliminar, atomicamente, pelo menos, as entradas correspondentes (ou outras entradas) de uma ou mais memórias tampão de tradução de endereço. Por exemplo, podem utilizar-se códigos de operação diferentes, campos diferentes, registos diferentes, ou mesmo, não utilizar registos, bits diferentes, etc. Por exemplo, outras arquitecturas de conjuntos de instruções podem definir uma instrução equivalente em modos ligeiramente diferentes (e. g., códigos de operação diferentes, campos diferentes na instrução, registos diferentes utilizados, etc.), mas um ou mais aspectos da presente invenção ainda se aplicam. Além disso, como descrito acima, um ou mais aspectos da presente invenção aplicam-se igualmente bem a uma emulação de software de uma arquitectura visada, tal como a z/Architecture da IBM. Neste caso, as tlb discutidas acima podem ser uma matriz ou outra estrutura de dados implementada pelo emulador de software para guardar mapeamentos recentes de endereços virtuais para reais. Também pode acontecer que o software emulador não implemente qualquer estrutura análoga a uma TLB. Neste caso, só se pode aplicar a invalidação de entradas em armazenamento. 34
Assim, proporciona-se, aqui, uma instrução que está apta a invalidar armazenamento, invalidar armazenamento e eliminar, atomicamente, entradas de memórias tampão ou eliminar entradas de memórias tampão. Por conseguinte, afirma-se que um ou mais registos da instrução podem ser configurados como não operações (no-ops). Ou seja, a informação nesses registos, se houver, associada com uma operação particular (e. g., invalidação, eliminação, etc.) que não está a ser proporcionada é ignorada ou indica que a operação não está a ser efectuada.
Embora se tenha descrito acima uma instrução particular na qual se proporciona uma invalidação, invalidação e eliminação ou eliminação, a instrução pode ser modificada ou podem implementar-se outras instruções que efectuem apenas um ou mais aspectos das operações implementadas por IDTE. Por exemplo, uma instrução pode implementar apenas a invalidação de armazenamento. Num outro exemplo, a instrução pode apenas purgar entradas de memórias tampão que estejam associadas com tabelas de segmentos ou regiões particulares. Ainda noutro exemplo, pode implementar-se uma instrução que purgue apenas entradas com base no espaço de endereços.
Numa implementação comercial do formato de instrução de computador arquitectado da função de invalidação e/ou eliminação, as instruções são utilizadas por programadores, tais como programadores de sistema operativo que escrevem em linguagem assembler. Estes formatos de instrução armazenados num meio de armazenamento podem ser executados nativamente num Servidor IBM de z/Architecture ou, em alternativa, em máquinas que executem outras arquitecturas. Podem ser emulados nos servidores de processadores centrais da IBM existentes e futuros 35 e noutras máquinas da IBM (e. g., Servidores pSeries e Servidores xSeries). Podem ser executados em máquinas executando Linux num leque variado de máquinas utilizando hardware fabricado pela IBM, Intel, AMD, Sun Microsystems e outros. Além da execução no hardware sujeito à z/Architecture, também se pode utilizar Linux, bem como máquinas que utilizam emulação por Hercules, UMX, FXI ou Platform Solutions, nas quais a execução é feita, de um modo geral, num modo de emulação. Em modo de emulação, a instrução específica a ser emulada é descodificada e constrói-se uma subrotina para implementar a instrução individual, como numa subrotina ou programa de controlo C ou utiliza-se uma qualquer outra técnica para dotar um hardware específico com um programa de controlo, o que está ao alcance do especialista na técnica depois de compreender a descrição de uma forma de realização da invenção. Várias patentes de emulação de software e hardware incluindo, sem limitação, a Patente U.S. N° 5551013, Patente U.S. N° 6009261, Patente U.S. N° 5574873, Patente U.S. N° 6308255, Patente U.S. N° 6463582 e Patente U.S. N° 5790825 ilustram uma variedade de modos conhecidos para obter emulação de um formato de instrução arquitectado para uma máquina diferente para uma máquina alvo disponível ao especialista na técnica, bem como as técnicas de software comercial utilizadas pelos referenciados acima.
De um modo vantajoso, um ou mais aspectos da presente invenção melhoram o desempenho do sistema. Por exemplo, ao purgar selectivamente entradas de memórias tampão em vez de purgar totalmente as memórias tampão, o desempenho do sistema é melhorado pelo facto de não requerer uma recriação desnecessária de entradas. Ou seja, requer 20+ a lOOs de ciclos para criar uma entrada de TLB e a purga selectiva evita a recriação desnecessária de entradas. 36
Como uma vantagem adicional, se se desejar uma purga total das TLB, então, a implementação permite uma purga em excesso. Além disso, a parte de TLB pode ser tratada como uma no-op se, por exemplo, não se utilizar uma TLB. De um modo vantajoso, a instrução IDTE pode ser implementada em hardware, firmware, software ou uma sua combinação ou pode ser utilizada num emulador de um conjunto de instruções de processamento alvo.
Um ou mais aspectos da presente invenção são igualmente aplicáveis a, por exemplo, uma emulação de máquina virtual, na qual uma ou mais entidades pagináveis (e. g., convidados) efectuam a execução num ou mais processadores. Num exemplo, convidados pagináveis são definidos pela arquitectura de Execução de Inicio de Interpretação (SIE), cujo exemplo é descrito numa publicação da IBM® intitulada "IBM System/370 Extended Architecture", Publicação IBM, N0 SA22-7095 (1985) .
Embora se mencione acima a SIE e a z/Architecture, um ou mais aspectos da presente invenção são igualmente aplicáveis a outras arquitecturas e/ou ambientes empregando entidades pagináveis ou construções semelhantes.
Embora seja aqui descrito um ambiente particionado logicamente, isto é apenas um exemplo. Aspectos da invenção são benéficos para muitos tipos de ambientes, incluindo outros ambientes que tenham uma pluralidade de zonas e ambientes não particionados. Além disso, podem não existir complexos de processadores centrais, mas, mesmo assim, múltiplos processadores acoplados entre si. Ainda, além disso, um ou mais aspectos da invenção são aplicáveis a ambientes de processadores individuais. 37
Se o ambiente for dividido logicamente, então, podem incluir-se no ambiente mais ou menos partições lógicas. Além disso, podem existir múltiplos complexos de processamento central acoplados entre si. Estas são apenas algumas das variações que se podem fazer. Além disso, são possíveis outras variações. Por exemplo, embora o controlador aqui descrito serialize a instrução para que uma instrução IDTE seja executada duma só vez, noutra forma de realização, múltiplas instruções podem ser executadas de uma só vez. Além disso, o ambiente pode incluir múltiplos controladores. Ainda além disso, múltiplas solicitações de repouso (provenientes de um ou mais controladores) podem sobressair concorrentemente no sistema. Também são possíveis variações adicionais. 0 termo "unidade de processamento", como aqui utilizado, inclui entidades pagináveis, tais como convidados; processadores; emuladores; e/ou outros componentes semelhantes. Além disso, o termo "por uma unidade de processamento" inclui por conta de uma unidade de processamento. 0 termo "memória tampão" inclui uma área de armazenamento, bem como diferentes tipos de estruturas de dados incluindo, mas não limitados a matrizes; e o termo "tabela" pode incluir outras estruturas para além de estruturas de dados de tipo tabela. Além disso, a instrução pode incluir registos além de registos para indicar informação. Além disso, uma página, um segmento e/ou uma região podem ter tamanhos diferentes dos descritos aqui.
Uma ou mais das capacidades da presente invenção podem ser implementadas em software, firmware, hardware ou alguma sua combinação. Além disso, uma ou mais das capacidades podem ser emuladas. 38
Um ou mais aspectos da presente invenção podem ser incluídos num artigo de fabrico (e. g., um ou mais produtos de programas informáticos) tendo, por exemplo, meios utilizáveis por computador. 0 meio tem incorporados no seu interior, por exemplo, meios de códigos de programa legíveis por computador ou lógica (e. g., instruções, código, comandos, etc.) para proporcionar e facilitar as capacidades da presente invenção. 0 artigo de fabrico pode ser incluído como uma parte de um sistema informático ou vendido à parte.
Além disso, pode proporcionar-se um dispositivo de armazenamento de programas legível por uma máquina incorporando, pelo menos, um programa de instruções executável pela máquina para efectivar as capacidades da presente invenção.
Os fluxogramas aqui ilustrados são apenas exemplos. Pode haver muitas variações destes diagramas ou dos passos (ou operações) aqui descritos. Por exemplo, os passos podem ser efectuados com uma ordem diferente ou podem adicionar-se, apagar ou modificar passos.
Lisboa, 14 de Março de 2011 39

Claims (6)

  1. REIVINDICAÇÕES 1. Método para eliminação de entradas de uma memória tampão de tradução de endereço num sistema (300) informático, compreendendo o sistema informático uma ou mais tabelas de tradução de endereço proporcionando informação de tradução para traduzir endereços virtuais a endereços de memória, armazenando temporariamente, de forma dinâmica, cada entrada de memória tampão de tradução de endereço, informação de tradução de endereço, compreendendo o método os seguintes passos: determinar, a partir de um código de operação de uma instrução executável por máquina a executar, que a instrução está configurada para iniciar a execução de uma operação de eliminação; executar a instrução, em que o passo de execução é caracterizado por compreender o passo de: com base num endereço de início de primeira tabela de tradução de uma primeira tabela de tradução, eliminar (505), selectivamente, a ou as primeiras entradas da memória tampão de tradução de endereço da memória tampão de tradução de endereço, estando a ou as primeiras entradas associadas com o endereço (624) de início de primeira tabela de tradução, caracterizado por o endereço de início de primeira tabela de tradução ser um qualquer de um endereço de início de tabela de 1 regiões ou de um endereço (624) de início de tabela de segmentos.
  2. 2. Método de acordo com a reivindicação 1, em que a etapa de eliminação não elimina a ou as segundas entradas da memória tampão de tradução de endereço na memória tampão de tradução de endereço, não estando a ou as segundas entradas associadas com o endereço de início de primeira tabela de tradução.
  3. 3. Método de acordo com a reivindicação 1, em que o endereço de início de primeira tabela de tradução compreende uma primeira entrada de tabela de tradução de um leque de duas ou mais entradas de tabela de tradução.
  4. 4. Método de acordo com a reivindicação 1, em que o sistema informático compreende registos de utilização geral arquitectados, em que as tabelas de tradução de endereço consistem em tabelas de páginas e qualquer uma de entre: uma ou mais tabelas de segmentos, uma ou mais tabelas de segmentos e uma ou mais primeiras tabelas de regiões, uma ou mais tabelas de segmentos e uma ou mais primeiras tabelas de regiões e uma ou mais segundas tabelas de regiões ou uma ou mais tabelas de segmentos e uma ou mais primeiras tabelas de regiões e uma ou mais segundas 2 tabelas de regiões e uma ou mais terceiras tabelas de regiões; em que uma entrada de tabela de segmentos compreende ainda um início de tabela de páginas; compreendendo o método o passo adicional de: recuperar primeira informação de um local especificado pela instrução, compreendendo a primeira informação uma indicação da operação da instrução.
  5. 5. Método de acordo com a reivindicação 1, compreendendo os passos adicionais de: interpretar a instrução para identificar uma rotina de software predeterminada para emular a operação da instrução, compreendendo a rotina de software predeterminada uma pluralidade de instruções; e executar a rotina de software predeterminada.
  6. 6. Método de acordo com a reivindicação 1, em que a memória tampão de tradução de endereço é qualquer uma de entre: uma memória tampão de tradução de endereço associada a uma primeira unidade de processamento central do sistema informático, executando a primeira unidade de processamento central a instrução, 3 uma memória tampão de tradução de endereço associada com uma segunda unidade de processamento central do sistema informático ou todas as memórias tampão de tradução de endereço associadas com o sistema informático. Método de acordo com a reivindicação 1, em que o sistema informático compreende, ainda, tabelas de páginas, tendo as tabelas de páginas endereços de armazenamento principal reais, em que os endereços de armazenamento principal reais compreendem qualquer um de entre um endereço absoluto, um endereço real ou um endereço físico. Programa de computador compreendendo instruções para realizar todos os passos do método de acordo com qualquer reivindicação de método anterior, quando o referido programa de computador é executado num sistema informático. Sistema compreendendo meios adaptados para realizar todos os passos do método de acordo com qualquer reivindicação de método anterior. Lisboa, 14 de Março de 2011 1/10 100 COMPLEXO DE PROCESSADOR CENTRAL
    fi9- 1 2/10 2/10
    zoo ~^r fig- 2 3/10 300 / COMPUTADOR CENTRAL
    fi9. 3 4/10
    400 402 404 β9· 4 Início ^-500 Início ^-500
    fW- 5 R1 ^-610 606 ^-612 INÍCIO DE TABELA DE REGIÕES OU DÉ SEGMENTOS OU TABELA PARA INVALIDAÇÃO //////// DT // 0 52 6 0 63 6/10 IDTE CÓDIGO DE OPERAÇÃO R3 III CM OH SE 0 *? 11 h 2 0 24 28 ·? 3 602 604 606 606 fig. 6 A fig. 6B 614 £—616 «r- 618 R2 ãl £L 620 608 621 âi— 622 PRIMEIRO ÍNDICE DE REGIÃO SEGUNDO ÍNDICE DE REGIÃO TERCEIRO ÍNDICE DE REGIÃO ÍNDICE DE SEGMENTO oooooooo ENTRADAS ADICIONAIS 11 22 33 44 52 53 63 fig. 6C R3 624 604 //////////// 63 INICIO DE TABELA DE REGIÕES OU TABELA DE SEGMENTOS PARA ELIMINAÇÃO 52 fig 6D 7/10
    fig. 7A 720 8/10 ( eliminar)
    9/10 R1 lllllllllllllllltlllllltlllllinillllllllllllllllllll\ fig. 8A 63 R2 I /////////////////////////////// mm ///////////I 0 1 2 3 44 52 63 fig. 8B R3 INICló DE TABELA DE REGIÕES OU TABELA DE SEGMENTOS PARA ELIMINAÇÃO ////////////| 52 63 fig. 8C 10/10
PT05108507T 2003-05-12 2004-05-06 Invalidação de armazenamento, eliminação de entradas de uma memória tampão PT1653365E (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/435,919 US7284100B2 (en) 2003-05-12 2003-05-12 Invalidating storage, clearing buffer entries, and an instruction therefor

Publications (1)

Publication Number Publication Date
PT1653365E true PT1653365E (pt) 2011-03-22

Family

ID=33417045

Family Applications (2)

Application Number Title Priority Date Filing Date
PT05108507T PT1653365E (pt) 2003-05-12 2004-05-06 Invalidação de armazenamento, eliminação de entradas de uma memória tampão
PT05108510T PT1653343E (pt) 2003-05-12 2004-05-06 Invalidação de armazenamento, eliminação de entradas de uma memória tampão

Family Applications After (1)

Application Number Title Priority Date Filing Date
PT05108510T PT1653343E (pt) 2003-05-12 2004-05-06 Invalidação de armazenamento, eliminação de entradas de uma memória tampão

Country Status (16)

Country Link
US (7) US7284100B2 (pt)
EP (5) EP1588267B1 (pt)
JP (1) JP4608484B2 (pt)
KR (2) KR100834362B1 (pt)
CN (2) CN100397368C (pt)
AT (5) ATE449374T1 (pt)
CY (2) CY1111421T1 (pt)
DE (6) DE602004030452D1 (pt)
DK (4) DK1588267T3 (pt)
ES (5) ES2359893T3 (pt)
GB (3) GB2413876B (pt)
IL (1) IL171905A (pt)
PL (4) PL1653365T3 (pt)
PT (2) PT1653365E (pt)
SI (2) SI1653343T1 (pt)
WO (1) WO2004099997A1 (pt)

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8463998B1 (en) 2002-12-13 2013-06-11 Open Text S.A. System and method for managing page variations in a page delivery cache
US8312222B1 (en) * 2002-12-13 2012-11-13 Open Text, S.A. Event-driven regeneration of pages for web-based applications
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US9454490B2 (en) 2003-05-12 2016-09-27 International Business Machines Corporation Invalidating a range of two or more translation table entries and instruction therefore
US7530067B2 (en) * 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US7415035B1 (en) * 2005-04-04 2008-08-19 Sun Microsystems, Inc. Device driver access method into a virtualized network interface
US7415034B2 (en) * 2005-04-04 2008-08-19 Sun Microsystems, Inc. Virtualized partitionable shared network interface
US7443878B2 (en) * 2005-04-04 2008-10-28 Sun Microsystems, Inc. System for scaling by parallelizing network workload
JP2006333438A (ja) * 2005-04-28 2006-12-07 Fujitsu Ten Ltd ゲートウェイ装置及びルーティング方法
US20070005932A1 (en) * 2005-06-29 2007-01-04 Intel Corporation Memory management in a multiprocessor system
JP4978008B2 (ja) * 2006-01-11 2012-07-18 株式会社日立製作所 仮想計算機上でのページテーブルアドレスの変更を高速化する方法
JP2007233615A (ja) * 2006-02-28 2007-09-13 Fujitsu Ltd アドレス変換装置
US7647509B2 (en) * 2006-05-12 2010-01-12 Intel Corporation Method and apparatus for managing power in a processing system with multiple partitions
US7797555B2 (en) * 2006-05-12 2010-09-14 Intel Corporation Method and apparatus for managing power from a sequestered partition of a processing system
US7401185B2 (en) * 2006-07-06 2008-07-15 International Business Machines Corporation Buffered indexing to manage hierarchical tables
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US20080270827A1 (en) * 2007-04-26 2008-10-30 International Business Machines Corporation Recovering diagnostic data after out-of-band data capture failure
US8799620B2 (en) 2007-06-01 2014-08-05 Intel Corporation Linear to physical address translation with support for page attributes
US8180997B2 (en) * 2007-07-05 2012-05-15 Board Of Regents, University Of Texas System Dynamically composing processor cores to form logical processors
US8145876B2 (en) * 2007-08-06 2012-03-27 Advanced Micro Devices, Inc. Address translation with multiple translation look aside buffers
US8037278B2 (en) 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8019964B2 (en) 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8417916B2 (en) * 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
US8041923B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8103851B2 (en) 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US8335906B2 (en) 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8082405B2 (en) 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8041922B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8112174B2 (en) * 2008-02-25 2012-02-07 International Business Machines Corporation Processor, method and computer program product for fast selective invalidation of translation lookaside buffer
US8086811B2 (en) 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US8176279B2 (en) * 2008-02-25 2012-05-08 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US8140834B2 (en) 2008-02-26 2012-03-20 International Business Machines Corporation System, method and computer program product for providing a programmable quiesce filtering register
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US8458438B2 (en) * 2008-02-26 2013-06-04 International Business Machines Corporation System, method and computer program product for providing quiesce filtering for shared memory
US8527715B2 (en) * 2008-02-26 2013-09-03 International Business Machines Corporation Providing a shared memory translation facility
US8380907B2 (en) * 2008-02-26 2013-02-19 International Business Machines Corporation Method, system and computer program product for providing filtering of GUEST2 quiesce requests
US8266411B2 (en) * 2009-02-05 2012-09-11 International Business Machines Corporation Instruction set architecture with instruction characteristic bit indicating a result is not of architectural importance
US8510511B2 (en) * 2009-12-14 2013-08-13 International Business Machines Corporation Reducing interprocessor communications pursuant to updating of a storage key
US8918601B2 (en) * 2009-12-14 2014-12-23 International Business Machines Corporation Deferred page clearing in a multiprocessor computer system
US8930635B2 (en) 2009-12-14 2015-01-06 International Business Machines Corporation Page invalidation processing with setting of storage key to predefined value
US8806179B2 (en) * 2009-12-15 2014-08-12 International Business Machines Corporation Non-quiescing key setting facility
US8214598B2 (en) * 2009-12-22 2012-07-03 Intel Corporation System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
US8407701B2 (en) 2010-06-24 2013-03-26 International Business Machines Corporation Facilitating quiesce operations within a logically partitioned computer system
US8595469B2 (en) 2010-06-24 2013-11-26 International Business Machines Corporation Diagnose instruction for serializing processing
US8918885B2 (en) * 2012-02-09 2014-12-23 International Business Machines Corporation Automatic discovery of system integrity exposures in system code
US9182984B2 (en) 2012-06-15 2015-11-10 International Business Machines Corporation Local clearing control
US9251091B2 (en) * 2012-06-15 2016-02-02 International Business Machines Corporation Translation look-aside table management
US20130339656A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Compare and Replace DAT Table Entry
US9043565B2 (en) * 2012-09-07 2015-05-26 Kabushiki Kaisha Toshiba Storage device and method for controlling data invalidation
US9196014B2 (en) 2012-10-22 2015-11-24 Industrial Technology Research Institute Buffer clearing apparatus and method for computer graphics
US9330017B2 (en) 2012-11-02 2016-05-03 International Business Machines Corporation Suppressing virtual address translation utilizing bits and instruction tagging
US9092382B2 (en) 2012-11-02 2015-07-28 International Business Machines Corporation Reducing microprocessor performance loss due to translation table coherency in a multi-processor system
US10509725B2 (en) 2013-03-08 2019-12-17 Oracle International Corporation Flushing by copying entries in a non-coherent cache to main memory
US20140258635A1 (en) * 2013-03-08 2014-09-11 Oracle International Corporation Invalidating entries in a non-coherent cache
US9652646B1 (en) 2013-03-11 2017-05-16 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Methods, systems and apparatuses for radio frequency identification
US9619387B2 (en) * 2014-02-21 2017-04-11 Arm Limited Invalidating stored address translations
US9886391B2 (en) * 2014-03-20 2018-02-06 International Business Machines Corporation Selective purging of PCI I/O address translation buffer
EP3172673B1 (en) * 2014-07-21 2020-09-02 VIA Alliance Semiconductor Co., Ltd. Address translation cache that supports simultaneous invalidation of common context entries
US9684606B2 (en) * 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9477516B1 (en) 2015-03-19 2016-10-25 Google Inc. Concurrent in-memory data publication and storage system
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10942683B2 (en) 2015-10-28 2021-03-09 International Business Machines Corporation Reducing page invalidation broadcasts
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US11531552B2 (en) 2017-02-06 2022-12-20 Microsoft Technology Licensing, Llc Executing multiple programs simultaneously on a processor core
US10528488B1 (en) * 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US10437729B2 (en) 2017-04-19 2019-10-08 International Business Machines Corporation Non-disruptive clearing of varying address ranges from cache
US10725928B1 (en) * 2019-01-09 2020-07-28 Apple Inc. Translation lookaside buffer invalidation by range
US11151267B2 (en) * 2019-02-25 2021-10-19 International Business Machines Corporation Move data and set storage key based on key function control
US11042483B2 (en) 2019-04-26 2021-06-22 International Business Machines Corporation Efficient eviction of whole set associated cache or selected range of addresses
US11182308B2 (en) * 2019-11-07 2021-11-23 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11030124B2 (en) 2019-11-07 2021-06-08 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11132470B2 (en) * 2019-11-07 2021-09-28 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
CN111338987B (zh) * 2020-02-13 2023-12-12 江苏华创微系统有限公司 快速无效组相联tlb的方法
US11422946B2 (en) 2020-08-31 2022-08-23 Apple Inc. Translation lookaside buffer striping for efficient invalidation operations
US11615033B2 (en) 2020-09-09 2023-03-28 Apple Inc. Reducing translation lookaside buffer searches for splintered pages

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US592853A (en) 1897-11-02 Electric battery
US4432053A (en) * 1981-06-29 1984-02-14 Burroughs Corporation Address generating apparatus and method
JPS5815195A (ja) 1981-07-22 1983-01-28 株式会社日立製作所 制御棒駆動装置の自動交換装置
JPS5815196A (ja) 1981-07-22 1983-01-28 株式会社日立製作所 蒸気発生プラント
JPS58150196A (ja) 1982-02-27 1983-09-06 Fujitsu Ltd 主記憶キ−の更新制御方式
JPS58150195A (ja) 1982-02-27 1983-09-06 Fujitsu Ltd 主記憶キ−制御方式
JPS5994289A (ja) * 1982-11-22 1984-05-30 Hitachi Ltd 記憶制御方式
US4779188A (en) * 1983-12-14 1988-10-18 International Business Machines Corporation Selective guest system purge control
US4792895A (en) * 1984-07-30 1988-12-20 International Business Machines Corp. Instruction processing in higher level virtual machines by a real machine
EP0206653B1 (en) 1985-06-28 1992-10-21 Hewlett-Packard Company Method and means for loading and storing data in a reduced instruction set computer
EP0220451B1 (en) 1985-10-30 1994-08-10 International Business Machines Corporation A cache coherence mechanism based on locking
JP2545789B2 (ja) * 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
JPS62295147A (ja) * 1986-06-16 1987-12-22 Hitachi Ltd 仮想計算機システム
JP2960415B2 (ja) * 1987-05-22 1999-10-06 株式会社日立製作所 記憶保護方法および装置
JP2510605B2 (ja) 1987-07-24 1996-06-26 株式会社日立製作所 仮想計算機システム
JP2507785B2 (ja) * 1988-07-25 1996-06-19 富士通株式会社 ペ―ジテ―ブルエントリ無効化装置
JP2592958B2 (ja) * 1989-06-30 1997-03-19 キヤノン株式会社 液晶装置
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5317705A (en) * 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
US5423014A (en) * 1991-10-29 1995-06-06 Intel Corporation Instruction fetch unit with early instruction fetch mechanism
US5500948A (en) * 1991-10-29 1996-03-19 Intel Corporation Translating instruction pointer virtual addresses to physical addresses for accessing an instruction cache
JP3242161B2 (ja) * 1992-09-11 2001-12-25 株式会社日立製作所 データプロセッサ
US5615354A (en) * 1992-12-23 1997-03-25 International Business Machines Corporation Method and system for controlling references to system storage by overriding values
AU6629894A (en) 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
DE69425310T2 (de) * 1993-10-18 2001-06-13 Via Cyrix Inc Mikrosteuereinheit für einen superpipeline-superskalaren Mikroprozessor
JP2806778B2 (ja) * 1994-01-28 1998-09-30 甲府日本電気株式会社 変換索引バッファクリア命令処理方式
DE19516949A1 (de) 1994-05-11 1996-02-15 Gmd Gmbh Speichervorrichtung zum Speichern von Daten
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
JP2842313B2 (ja) * 1995-07-13 1999-01-06 日本電気株式会社 情報処理装置
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5761743A (en) * 1996-06-28 1998-06-09 Marmon Holdings, Inc. Finger cot and method of manufacturing finger cot
US5761734A (en) * 1996-08-13 1998-06-02 International Business Machines Corporation Token-based serialisation of instructions in a multiprocessor system
US5782029A (en) * 1996-09-25 1998-07-21 Saf T Lok Corporation Firearm safety mechanism
JPH10301814A (ja) * 1997-04-23 1998-11-13 Hitachi Ltd 情報処理システム
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6119219A (en) * 1998-04-30 2000-09-12 International Business Machines Corporation System serialization with early release of individual processor
US6079013A (en) * 1998-04-30 2000-06-20 International Business Machines Corporation Multiprocessor serialization with early release of processors
US6199219B1 (en) 1998-05-08 2001-03-13 Howard Silken Device to facilitate removal of a helmet face mask
US6308255B1 (en) * 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6119204A (en) * 1998-06-30 2000-09-12 International Business Machines Corporation Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization
US6978357B1 (en) 1998-07-24 2005-12-20 Intel Corporation Method and apparatus for performing cache segment flush and cache segment invalidation operations
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6467007B1 (en) * 1999-05-19 2002-10-15 International Business Machines Corporation Processor reset generated via memory access interrupt
US6587964B1 (en) * 2000-02-18 2003-07-01 Hewlett-Packard Development Company, L.P. Transparent software emulation as an alternative to hardware bus lock
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US6651132B1 (en) * 2000-07-17 2003-11-18 Microsoft Corporation System and method for emulating the operation of a translation look-aside buffer
EP1182570A3 (en) 2000-08-21 2004-08-04 Texas Instruments Incorporated TLB with resource ID field
US6684305B1 (en) 2001-04-24 2004-01-27 Advanced Micro Devices, Inc. Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence
US6715050B2 (en) * 2001-05-31 2004-03-30 Oracle International Corporation Storage access keys
US6801993B2 (en) 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
US6931471B2 (en) * 2002-04-04 2005-08-16 International Business Machines Corporation Method, apparatus, and computer program product for migrating data subject to access by input/output devices
US7197585B2 (en) * 2002-09-30 2007-03-27 International Business Machines Corporation Method and apparatus for managing the execution of a broadcast instruction on a guest processor
JP3936672B2 (ja) * 2003-04-30 2007-06-27 富士通株式会社 マイクロプロセッサ
US7356710B2 (en) * 2003-05-12 2008-04-08 International Business Machines Corporation Security message authentication control instruction
US7530067B2 (en) * 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US7284100B2 (en) 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor

Also Published As

Publication number Publication date
KR100834365B1 (ko) 2008-06-02
ATE449374T1 (de) 2009-12-15
JP4608484B2 (ja) 2011-01-12
SI1653343T1 (sl) 2011-01-31
DE602004024254D1 (de) 2009-12-31
CN100363908C (zh) 2008-01-23
US20110119466A1 (en) 2011-05-19
EP1653365B1 (en) 2011-03-02
ATE500553T1 (de) 2011-03-15
WO2004099997A1 (en) 2004-11-18
EP1914627B1 (en) 2009-11-18
SI1653365T1 (sl) 2011-06-30
US8122224B2 (en) 2012-02-21
GB0518901D0 (en) 2005-10-26
PL1653365T3 (pl) 2011-07-29
EP1653343B1 (en) 2010-12-08
US20050268045A1 (en) 2005-12-01
US20040230749A1 (en) 2004-11-18
DE112004000464T5 (de) 2006-06-01
DK1653343T3 (da) 2011-01-24
GB2413876B (en) 2006-03-01
EP1914627A2 (en) 2008-04-23
DE602004031628D1 (de) 2011-04-14
GB0518904D0 (en) 2005-10-26
US20120117356A1 (en) 2012-05-10
DK1653365T3 (da) 2011-05-09
DK1588267T3 (da) 2008-05-13
IL171905A (en) 2010-06-16
ES2359893T3 (es) 2011-05-27
CY1111421T1 (el) 2015-08-05
ES2327058T3 (es) 2009-10-23
DE602004021030D1 (de) 2009-06-18
US7281115B2 (en) 2007-10-09
KR20060014030A (ko) 2006-02-14
DE602004011018D1 (de) 2008-02-07
ES2357802T3 (es) 2011-04-29
CN100397368C (zh) 2008-06-25
ATE382896T1 (de) 2008-01-15
GB2414841B (en) 2006-07-05
KR100834362B1 (ko) 2008-06-02
EP1588267A1 (en) 2005-10-26
EP1653343A2 (en) 2006-05-03
PT1653343E (pt) 2010-12-20
ATE491178T1 (de) 2010-12-15
US7284100B2 (en) 2007-10-16
DE602004011018T2 (de) 2008-12-24
PL1653343T3 (pl) 2011-03-31
ES2336973T3 (es) 2010-04-19
DE602004030452D1 (de) 2011-01-20
EP1588267B1 (en) 2008-01-02
GB0516192D0 (en) 2005-09-14
GB2414842B (en) 2006-07-05
EP1653365A3 (en) 2006-11-08
CN1904860A (zh) 2007-01-31
PL1588267T3 (pl) 2008-06-30
US8452942B2 (en) 2013-05-28
EP1653343A3 (en) 2006-07-19
EP1701269A1 (en) 2006-09-13
EP1653365A2 (en) 2006-05-03
PL1701269T3 (pl) 2009-10-30
WO2004099997A9 (en) 2005-10-27
ES2297417T3 (es) 2008-05-01
US20060036824A1 (en) 2006-02-16
ATE430963T1 (de) 2009-05-15
DK1701269T3 (da) 2009-08-03
US7197601B2 (en) 2007-03-27
US20050273561A1 (en) 2005-12-08
EP1914627A3 (en) 2008-06-25
US7890731B2 (en) 2011-02-15
EP1701269B1 (en) 2009-05-06
CN1784663A (zh) 2006-06-07
GB2413876A (en) 2005-11-09
US20070186075A1 (en) 2007-08-09
IL171905A0 (en) 2006-04-10
KR20060093140A (ko) 2006-08-23
GB2414841A (en) 2005-12-07
JP2006526203A (ja) 2006-11-16
CY1111466T1 (el) 2015-08-05
GB2414842A (en) 2005-12-07

Similar Documents

Publication Publication Date Title
PT1653365E (pt) Invalidação de armazenamento, eliminação de entradas de uma memória tampão
US9804970B2 (en) Invalidating a range of two or more translation table entries and instruction therefor
KR101572409B1 (ko) 비교 및 대체 dat 테이블 엔트리
US9182984B2 (en) Local clearing control