BR112016002977B1 - Aparelho e método de processamento de dados - Google Patents

Aparelho e método de processamento de dados Download PDF

Info

Publication number
BR112016002977B1
BR112016002977B1 BR112016002977-1A BR112016002977A BR112016002977B1 BR 112016002977 B1 BR112016002977 B1 BR 112016002977B1 BR 112016002977 A BR112016002977 A BR 112016002977A BR 112016002977 B1 BR112016002977 B1 BR 112016002977B1
Authority
BR
Brazil
Prior art keywords
data
attribute
access
software
processing apparatus
Prior art date
Application number
BR112016002977-1A
Other languages
English (en)
Other versions
BR112016002977A2 (pt
Inventor
Simon Craske
Antony Penton
Original Assignee
Arm Limited
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 Arm Limited filed Critical Arm Limited
Publication of BR112016002977A2 publication Critical patent/BR112016002977A2/pt
Publication of BR112016002977B1 publication Critical patent/BR112016002977B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • 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/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

APARELHO E MÉTODO DE PROCESSAMENTO DE DADOS. É descrito um aparelho de processamento de dados (2) que tem conjunto de circuitos de processamento (4) para executar primeiro software (12) em um primeiro nível de privilégio EL1 e segundo software (10) em um segundo nível de privilégio EL2 mais alto que o primeiro nível de privilégio. Atributos podem ser definidos pelo primeiro e segundo softwares (10, 12) para indicar se a execução da instrução de acesso de dados pode ser interrompida. Para um tipo predeterminado de instrução de acesso de dados para a qual o segundo atributo definido pelo segundo software (10) especifica que a instrução pode ser interrompida, a instrução pode ser definida como interrompível mesmo se o primeiro atributo definido pelo primeiro software (12) especificar que a execução da instrução não pode ser interrompida.

Description

[001] A presente técnica refere-se ao campo de processamento de dados. Mais particularmente, a técnica refere-se a tratamento de atributos de acesso para acessos de dados em um aparelho de processamento de dados.
[002] Instruções de acesso de dados para acessar dados a partir de um armazenamento de dados podem ser providas com atributos de acesso que controlam como o acesso de dados é realizado. Por exemplo, os atributos de acesso podem especificar se um acesso de dados pode ser tratado fora da fila em relação a outros acessos de dados e quando ou como os dados acessados devem ser submetidos a cache. Entretanto, alguns atributos de acesso podem afetar a latência associada com a realização de um acesso de dados. Em um sistema em tempo real (por exemplo, um aparelho usado em aplicações automotivas ou industriais), é frequentemente desejável ter comportamento determinístico em relação a quanto tempo operações de processamento em particular levarão para completar, e então, a longa latência associada com certos acessos de dados pode ser problemática. Este é particularmente o caso quando muitos diferentes aplicativos de software forem combinados em um único processador, em cujo caso um aplicativo pode iniciar um acesso de dados de longa latência, o que pode impedir que um outro aplicativo de software realize uma operação crítica em tempo real. A presente técnica busca abordar estes problemas.
[003] Visualizada a partir de um aspecto, a presente técnica provê um aparelho de processamento de dados que compreende: conjunto de circuitos de processamento configurado para processar dados; um armazenamento de dados configurado para armazenar dados; em que o dito conjunto de circuitos de processamento é configurado para executar primeiro software em um primeiro nível de privilégio e para executar segundo software em um segundo nível de privilégio mais alto que o primeiro nível de privilégio; em resposta a uma instrução de acesso de dados para acessar dados no armazenamento de dados, o aparelho de processamento de dados é configurado para determinar pelo menos um atributo de acesso para a dita instrução de acesso de dados com base em pelo menos um primeiro atributo definido pelo primeiro software e pelo menos um segundo atributo definido pelo segundo software, cada um do dito pelo menos um primeiro atributo e do dito pelo menos um segundo atributo especificando se a execução da instrução de acesso de dados pode ser interrompida; e em resposta a um tipo predeterminado de instrução de acesso de dados para a qual o dito pelo menos um segundo atributo especifica que a execução da instrução de acesso de dados pode ser interrompida, o aparelho de processamento de dados é configurado para determinar o dito pelo menos um atributo de acesso que especifica que a execução da instrução de acesso de dados pode ser interrompida mesmo se o dito pelo menos um primeiro atributo especificar que a execução da instrução de acesso de dados não pode ser interrompida.
[004] Um tipo de atributo de acesso de dados pode especificar se a execução da instrução de acesso de dados pode ser interrompida. Alguns tipos de instrução de acesso de dados podem tomar um longo tempo para realizar, e, então, se a instrução de acesso de dados pode ser interrompida parcialmente através dos acessos de dados pode ser importante em um sistema em tempo real. Se um evento crítico em tempo real, tal como uma interrupção que precisa ser servida imediatamente, ocorrer durante um acesso de dados marcado como não interrompível, então, o conjunto de circuitos de processamento pode ser comprometido a completar o acesso de dados, causando um atraso no tratamento do evento crítico em tempo real que é indesejável.
[005] O aparelho de processamento pode suportar diversas peças de software, incluindo primeiro software em execução em um primeiro nível de privilégio e segundo software em execução em um segundo nível de privilégio mais alto que o primeiro nível de privilégio. Cada camada de software pode definir seus próprios atributos de acesso para uma instrução de acesso de dados, com pelo menos um primeiro atributo especificado pelo primeiro software e pelo menos um segundo atributo especificado pelo segundo software, cada qual especificando se a execução da instrução de acesso de dados pode ser interrompida. Em esquemas típicos, quando diferentes atributos de acesso forem definidos para os mesmos acessos de dados, o atributo mais restritivo será selecionado como o atributo real para os acessos de dados. Por exemplo, se o primeiro software especificar que o acesso não pode ser interrompido, então, isto normalmente anulará todos os atributos menos restritivos que permitem a interrupção dos acessos de dados. Entretanto, se os acessos de dados tomarem um longo tempo para realizar, então, o atributo de acesso mais restritivo pode afetar a capacidade de servir eventos críticos em tempo real.
[006] Portanto, para um tipo predeterminado de instrução de acesso de dados para a qual pelo menos um segundo atributo definido pelo segundo software especifica que a execução da instrução de acesso de dados pode ser interrompida, o conjunto de circuitos de processamento pode determinar o atributo de acesso especificando que execução pode ser interrompida, mesmo se o pelo menos um primeiro atributo definido pelo primeiro software especificar que a execução não pode ser interrompida. Portanto, o atributo definido pelo primeiro software pode ser rejeitado pelo atributo definido pelo segundo software no nível de privilégio mais alto, para garantir que a instrução de acesso de dados pode ser interrompida no evento de um evento crítico em tempo real. Isto impede longas latências de tratamento de interrupção, por exemplo. Esta abordagem é contraintuitiva em virtude de, normalmente, se tratar o acesso usando o mais restritivo dos atributos conflitantes definidos para os acessos de dados.
[007] Embora esta técnica possa ser usada para qualquer instrução de acesso de dados, ela é particularmente usada para instruções a serem executadas sobre uma pluralidade de ciclos de processamento, o que pode causar um longo atraso se elas forem marcadas como não interrompíveis.
[008] Se a execução da instrução de acesso de dados puder ser interrompida, então, na ocorrência de uma interrupção, exceção ou um outro evento crítico em tempo real, a execução da instrução pode ser suspensa. Uma vez que o evento foi tratado, a execução da instrução de acesso de dados tanto pode ser reiniciada a partir do início quanto, se possível, pode ser retomada a partir do ponto no qual o acesso de dados é interrompido.
[009] A presente técnica pode ser aplicada, no geral, no tipo predeterminado de instrução de acesso de dados que ocorre em qualquer software executado pelo conjunto de circuitos de processamento. Alternativamente, a determinação do atributo de acesso da forma supradescrita pode ser usada apenas quando o tipo predeterminado de instrução de acesso de dados aparecer em um ou mais tipos específicos de software, em particular, o próprio primeiro software ou o software adicional em execução sob controle do primeiro software. Se o tipo predeterminado de instrução de acesso de dados for encontrado no segundo software, então, seus atributos de acesso podem ser determinados com base nos segundos atributos especificados pelo segundo software, sem considerar o primeiro atributo especificado pelo primeiro software. Portanto, a determinação de atributo supradescrita não precisa ser usada para todas as ocorrências do tipo predeterminado de instrução de acesso de dados.
[0010] O primeiro e o segundo softwares podem ser qualquer software que opera em diferentes níveis de privilégio, com o segundo software tendo um privilégio mais alto que o primeiro software. Neste contexto "nível de privilégio mais alto" significa que o software que opera neste nível de privilégio tem mais direitos que o software que opera em um "nível de privilégio mais baixo" (por exemplo, o segundo software pode ser capaz de acessar dados que são inacessíveis ao primeiro software, ou o segundo software pode ser capaz de realizar certas ações que não são disponíveis para o primeiro software). O primeiro e o segundo níveis de privilégio podem ser quaisquer dois níveis de privilégio em um maior número de níveis. Os diferentes níveis de privilégio podem ser representados por valores numéricos. Em algumas modalidades, o valor numérico mais alto pode representar o nível de privilégio mais alto (por exemplo, o nível de privilégio 3 pode ter mais direitos que o nível de privilégio 2), embora, em outras modalidades, o valor numérico mais baixo pode representar o nível de privilégio mais alto (por exemplo, nível de privilégio 0 pode ter mais direitos que nível de privilégio 1).
[0011] Por exemplo, sistemas em tempo real podem permitir virtualização, em que múltiplos sistemas operacionais coexistem no mesmo dispositivo, e um hipervisor gerencia os sistemas operacionais. Neste tipo de ambiente, o primeiro software pode compreender um dos sistemas operacionais e o segundo software pode compreender o hipervisor. Cada um do sistema operacional e do hipervisor pode separadamente definir atributos de acesso para acessos de dados. Se o hipervisor especificar que a execução do tipo predeterminado de instrução de acesso de dados pode ser interrompida, mas o sistema operacional exigir que a instrução não possa ser interrompida, então, o hipervisor pode rejeitar o sistema operacional de forma que o acesso de dados seja marcado como interrompível, independente do atributo definido pelo sistema operacional. Isto impede que um sistema operacional convidado produza inapropriados cenários de alta latência.
[0012] Embora a presente técnica possa ser aplicada em qualquer tipo de instrução de acesso de dados para a qual longa latência é um problema, ela é particularmente usada para uma instrução de múltiplas cargas para carregar dados provenientes do armazenamento de dados em uma pluralidade de registros ou uma instrução de múltiplos armazenamentos para armazenar dados provenientes da pluralidade de registros no armazenamento de dados. Tipicamente, uma instrução de múltiplas cargas ou armazenamentos pode especificar uma lista de registros, e execução da instrução de carga ou armazenamento exige um número de ciclos de processamento que depende do número de registros na lista. Se uma instrução de múltiplas cargas ou armazenamentos for marcada como não interrompível, então, o processador é comprometido a completar as múltiplas cargas ou armazenamentos e, tipicamente, não será capaz de servir outras operações até que as múltiplas cargas ou armazenamentos sejam completados. Isto pode levar a indesejáveis longas latências no tratamento de outros eventos que podem ser críticos em tempo real. Para abordar isto, mesmo se o primeiro software marcar tais instruções como não interrompíveis, o segundo software no nível de privilégio mais alto pode rejeitar para garantir que as instruções de múltiplas cargas e armazenamentos sejam interrompíveis (e repetíveis em um momento posterior) se necessário.
[0013] Em alguns sistemas, o segundo software pode sempre rejeitar o primeiro software quando o segundo software especificar que um acesso de dados pode ser interrompido e o primeiro software especificar que ele não pode ser interrompido. Entretanto, pode haver algumas situações nas quais é desejável permitir que os acessos de dados continuem como não interrompíveis. Portanto, o aparelho de processamento pode manter um valor de controle. Se o pelo menos um segundo atributo permitir a interrupção dos acessos de dados, então, o conjunto de circuitos de processamento pode determinar, com base no valor de controle, se a execução da instrução de acesso de dados pode ser interrompida. Um primeiro valor do valor de controle pode indicar que a execução pode ser interrompida mesmo se o primeiro atributo especificar que ela não pode ser interrompida (de forma que o atributo especificado pelo segundo software rejeite o atributo especificado pelo primeiro software). Um segundo valor do valor de controle pode indicar que se a execução é interrompível deve ser determinado com base no primeiro atributo (de forma que o mais restritivo dos primeiro e segundo atributos seja selecionado). O valor de controle permite que o sistema selecione se o acesso é forçado ou não a ser não interrompível pelo segundo software. Quando eventos críticos em relação a latência forem esperados, então, o valor de controle pode ser definido no primeiro valor para garantir que exigências em tempo real sejam satisfeitas, embora, quando nenhum tal evento for esperado e, então, não for esperado que latência de interrupção seja um problema, então, o valor de controle possa ser definido no segundo valor para permitir que os acessos de dados sejam controlados da maneira definida pelo primeiro software. O valor de controle pode ser definido no primeiro ou no segundo valores pelo conjunto de circuitos de processamento em resposta ao segundo software, tal como o hipervisor, por exemplo.
[0014] Mesmo se o segundo software rejeitar o primeiro atributo não interrompível definido pelo primeiro software para definir os acessos de dados como interrompíveis, o conjunto de circuitos de processamento ainda pode determinar pelo menos uma outra propriedade da instrução de acesso de dados com base no pelo menos um primeiro atributo definido pelo primeiro software. Por exemplo, a outra propriedade pode ser algo que não afeta latências de tratamento de interrupção e, então, não é crítico em tempo real. Portanto, o atributo de acesso determinado para a instrução de acesso de dados pode corresponder a uma combinação de propriedades definidas pelo primeiro e pelo segundo softwares.
[0015] Por exemplo, a outra propriedade pode incluir uma indicação se a execução do tipo predeterminado de instruções de acesso de dados pode ser reordenada em relação à execução de outras instruções de acesso de dados. Também, a outra propriedade pode incluir informação de política de submissão a cache para controlar como os dados acessados em resposta à instrução de acesso de dados são submetidos a cache. Por exemplo, a política de submissão a cache pode especificar se um acesso de gravação deve ser tratado como um acesso tipo gravação através, um acesso de regravação ou um acesso tipo alocar gravação, que afeta quando local do armazenamento em cache é alocado nos dados acessados e quando os dados são atualizados neste local do armazenamento em cache. Informação de política similar pode ser definida para leituras. Portanto, mesmo quando o valor de controle tiver um primeiro valor para forçar os acessos de dados a serem interrompíveis, os acessos de dados podem reter algumas das propriedades definidas pelo primeiro software, tais como a ordem de apresentação em um barramento e a informação de política de submissão a cache, ao mesmo tempo em que é interrompível e repetível conforme exigido pelo segundo software para impedir situações de alta latência.
[0016] Em um exemplo, o primeiro e o segundo atributos definidos pelo primeiro e pelo segundo softwares, e cada um dos atributos de acesso finais definidos para a instrução de acesso de dados com base na combinação dos primeiro e segundo atributos, pode identificar se a instrução de acesso de dados é um tipo normal de uma instrução de dados ou um tipo dispositivo de instrução de dados. Tipicamente, tipo normal de instruções de acesso de dados são interrompíveis e podem ser repetidas ou retomadas em um estágio posterior. Também, pode-se permitir que tipo normal de acessos de dados sejam reordenados em relação a outros acessos. Por outro lado, tipo dispositivo de instruções de acesso de dados não podem ser interrompidas e repetidas e não podem ser reordenadas em relação a outros acessos de dados. O tipo dispositivo de acessos de dados é frequentemente usado por um sistema operacional quando for esperado que os acessos de dados visem uma região do armazenamento de dados que é mapeada para um dispositivo externo. Alguns dispositivos externos podem ser disparados para realizar certas ações em resposta a uma leitura ou gravação na correspondente região de memória tipo dispositivo, e, então, pode ser importante que uma sequência de leituras ou gravações na região tipo dispositivo não deva ser interrompida ou reordenada, já que esta pode afetar as operações realizadas pelo dispositivo externo. Portanto, o tipo dispositivo de acessos de dados é comumente usado para garantir o correto comportamento do dispositivo. Entretanto, em um sistema virtualizado no qual múltiplos sistemas operacionais são combinados e um hipervisor gerencia os sistemas operacionais, pode não haver realmente um dispositivo externo e o hipervisor pode prover funções virtuais correspondentes ao dispositivo para parecer ao sistema operacional como se houvesse um dispositivo externo real presente. Portanto, pode não importar se os acessos de dados tipo dispositivo podem ser interrompidos ou reordenados, já que pode não haver um dispositivo real que seria afetado por interrupções nestes acessos de dados. O segundo software pode estar ciente se um acesso tipo dispositivo definido pelo primeiro software realmente precisa ser um acesso tipo dispositivo, e, se não, então, pode rejeitar o primeiro atributo para tornar o acesso um tipo normal de acessos de dados para garantir que ele possa ser interrompido se exigido.
[0017] A instrução de acesso de dados pode especificar um endereço de um local em um armazenamento de dados. O primeiro e o segundo atributos definidos pelos primeiro e segundo softwares podem ser determinados com base no endereço. Diferentes atributos de acesso podem ser definidos para diferentes regiões de memória do armazenamento de dados que são identificadas com base em um endereço de memória ou uma porção do endereço de memória.
[0018] Os atributos podem ser definidos usando primeira e segunda unidades de atributo de memória que armazenam primeiros e segundos dados que definem o pelo menos um primeiro atributo e pelo menos um segundo atributo. Os dados na primeira e na segunda unidades de atributo de memória podem ser definidas pelos primeiro e segundo softwares, respectivamente. A unidade de atributo de memória pode ser uma unidade de proteção da memória que recebe um endereço físico associado com os acessos de dados e busca dados de atributo com base neste endereço. Alternativamente, a primeira e a segunda unidades de atributo de memória podem ser uma unidade de gerenciamento de memória que recebe um endereço virtual, traduz o endereço virtual para um endereço físico e determina correspondentes atributos de acesso para os acessos de dados com base tanto no endereço virtual original quanto no endereço físico traduzido. Portanto, pode haver várias maneiras de determinar o primeiro e o segundo atributos.
[0019] A determinação do atributo de acesso para a instrução de acesso de dados pode ser feita por várias partes do aparelho de processamento de dados. Por exemplo, o conjunto de circuitos de processamento, a segunda unidade de atributo de memória ou o armazenamento de dados podem realizar a determinação do atributo de acesso com base no primeiro e no segundo atributos. Portanto, a presente técnica não é limitada a onde esta determinação ocorre no aparelho de processamento de dados.
[0020] Visualizada a partir de um outro aspecto, a presente técnica provê um aparelho de processamento de dados que compreende:meio de processamento para processamento de dados; meio de armazenamento de dados para armazenamento de dados; em que o dito meio de processamento é configurado para executar primeiro software em um primeiro nível de privilégio e para executar segundo software em um segundo nível de privilégio mais alto que o primeiro nível de privilégio; em resposta a uma instrução de acesso de dados para acessar dados no meio de armazenamento de dados, o aparelho de processamento de dados é configurado para determinar pelo menos um atributo de acesso para a dita instrução de acesso de dados com base em pelo menos um primeiro atributo definido pelo primeiro software e pelo menos um segundo atributo definido pelo segundo software, cada um do dito pelo menos um primeiro atributo e do dito pelo menos um segundo atributo especificando se a execução da instrução de acesso de dados pode ser interrompida; e em resposta a um tipo predeterminado de instrução de acesso de dados para a qual o dito pelo menos um segundo atributo especifica que a execução da instrução de acesso de dados pode ser interrompida, o aparelho de processamento de dados é configurado para determinar o dito pelo menos um atributo de acesso que especifica que a execução da instrução de acesso de dados pode ser interrompida mesmo se o dito pelo menos um primeiro atributo especificar que a execução da instrução de acesso de dados não pode ser interrompida.
[0021] Visualizada a partir de um aspecto adicional, a presente técnica provê um método de processamento de dados para um aparelho de processamento de dados que compreende conjunto de circuitos de processamento configurado para processar dados e um armazenamento de dados configurado para armazenar dados, em que o dito conjunto de circuitos de processamento é configurado para executar primeiro software em um primeiro nível de privilégio e para executar segundo software em um segundo nível de privilégio mais alto que o primeiro nível de privilégio; o dito método compreendendo: em resposta a uma instrução de acesso de dados para acessar dados no armazenamento de dados, determinar pelo menos um atributo de acesso para a dita instrução de acesso de dados com base em pelo menos um primeiro atributo definido pelo primeiro software e pelo menos um segundo atributo definido pelo segundo software, cada um do dito pelo menos um primeiro atributo e do dito pelo menos um segundo atributo especificando se a execução da instrução de acesso de dados pode ser interrompida; e em resposta a um tipo predeterminado de instrução de acesso de dados para a qual o dito pelo menos um segundo atributo especifica que a execução da instrução de acesso de dados pode ser interrompida, determinar o dito pelo menos um atributo de acesso que especifica que a execução da instrução de acesso de dados pode ser interrompida mesmo se o dito pelo menos um primeiro atributo especificar que a execução da instrução de acesso de dados não pode ser interrompida.
[0022] Modalidades da técnica serão agora descritas, a título de exemplo apenas, em relação aos desenhos anexos nos quais:
[0023] a figura 1 ilustra esquematicamente um aparelho de processamento de dados; a figura 2 ilustra esquematicamente software que opera em diferentes níveis de privilégio; a figura 3 ilustra esquematicamente um exemplo de atributos de memória definidos por respectivo software que opera em diferentes níveis de privilégio; a figura 4 ilustra um exemplo de uma instrução de múltiplas cargas e uma instrução de múltiplos armazenamentos; a figura 5 ilustra um exemplo no qual um instrução de múltiplas cargas /armazenamentos não interrompível causa um atraso no tratamento de uma interrupção em um sistema em tempo real; a figura 6 é uma tabela que mostra como atributos de acesso definidos por software no primeiro e no segundo níveis de privilégio podem ser combinados para determinar o atributo de acesso como usado para um acesso de dados; a figura 7 mostra um exemplo de como determinar o atributo de acesso desta maneira para impedir a alta latência de interrupção mostrada na figura 5; e a figura 8 ilustra um método de determinação de um atributo de acesso para um tipo predeterminado de instrução de acesso de dados.
[0024] A figura 1 ilustra esquematicamente uma porção de um aparelho de processamento de dados 2 que compreende conjunto de circuitos de processamento 4 para processamento de dados e uma memória (armazenamento de dados) 6 para armazenar dados. O conjunto de circuitos de processamento tem registros 8 para armazenar valores a serem processados pelo conjunto de circuitos de processamento 4. Dados podem ser carregados a partir da memória 6 nos registros 8 e armazenados a partir dos registros 8 na memória 6. Instruções podem ser localizadas e carregadas a partir da memória 6 no processador 4. Um cache de dados ou cache de instrução (não ilustrados na figura 1) podem ser providos para armazenar dados ou instruções que podem ser acessados com latência inferior a dados ou instruções na memória 6.
[0025] Da forma mostrada na figura 2, o conjunto de circuitos de processamento 4 suporta software em execução em diferentes níveis de privilégio EL0, EL1, EL2. O hipervisor 10 é executado no segundo nível de privilégio EL2. O hipervisor 10 gerencia inúmeros sistemas operacionais convidados 12 que são executados no primeiro nível de privilégio EL1, que é um nível de privilégio mais baixo que EL2. O hipervisor 10 gerencia comutação entre diferentes sistemas operacionais 12. Por exemplo, a cada sistema operacional 12 pode ser alocado um diferente intervalo de tempo durante o qual o conjunto de circuitos de processamento 4 executa este sistema operacional 12. Cada sistema operacional 12 executa um ou mais aplicativos 14 em execução em um nível de privilégio de base EL0, que é o mais baixo nível de privilégio. Os sistemas operacionais 12 incluem um ou mais sistemas operacionais em tempo real (RTOS) 12-0, 12-1 e pelo menos um sistema operacional não em tempo real ("GUI rica") 12-2. Os sistemas operacionais em tempo real 12-0, 12-1 gerenciam um ou mais aplicativos em tempo real 14-0, 14-1, 14-2, tais como aplicativos que controlam os sistemas de freios e airbag em um veículo, por exemplo, para os quais rápido tratamento de resposta de interrupção é importante para segurança. O sistema operacional GUI rica 12-2 é um sistema operacional que suporta uma interface de usuário gráfica (GUI), tais como Windows, iOS, Linux, etc. O sistema operacional GUI rica 12-2 executa um ou mais aplicativos não em tempo real 14-3, tais como aplicativos para controlar o sistema de som em um veículo, para o qual é menos importante se interrupções são tratadas rapidamente. Outros sistemas podem ter mais ou menos níveis de privilégio (também conhecidos como "níveis de exceção") que os 3 níveis mostrados na figura 2.
[0026] Novamente em relação à figura 1, o aparelho de processamento de dados 2 tem uma primeira unidade de proteção da memória (MPU) 20 que armazena dados que definem primeiros atributos de acesso à memória definidos por um dos sistemas operacionais 12 em execução no primeiro nível de privilégio EL1. Cada sistema operacional 12 mantém seu próprio conjunto de atributos de acesso à memória que são carregados na primeira MPU 20 quando o processador 4 comutar para execução deste sistema operacional 12. O conjunto de circuitos de processamento 4 também tem uma segunda MPU 22 que define atributos de acesso à memória definidos pelo hipervisor 10 no segundo nível de privilégio EL2. Em resposta a uma instrução de acesso de dados, o conjunto de circuitos de processamento 4 provê o endereço especificado pela instrução tanto para a primeira MPU 20 quanto para segunda MPU 22, que buscam respectivos atributos de acesso para este endereço. As MPUs 20, 22 podem determinar, com base nos atributos de acesso, se o acesso pode ser realizado, e pode disparar uma falha se o acesso não for permitido. Por exemplo, certas regiões da memória 6 podem ser designadas como privilegiadas, que não podem ser acessadas por instruções não privilegiadas. Os atributos também podem definir várias propriedades que afetam como o acesso é realizado pela memória 6, tal como se o acesso pode ser interrompido.
[0027] O atributo também pode definir informação de política de submissão a cache. Para um acesso de leitura, a informação de política de submissão a cache pode especificar se a leitura é: • leitura através: o valor exigido é lido a partir da memória diretamente nos registros 8 do processador 4 sem colocar uma cópia em um cache, ou • não leitura através: o valor é lido a partir da memória 6 no cache e, então, a partir do cache nos registros 8.
[0028] Similarmente, para um acesso de gravação, o acesso pode ser especificado como: • gravação através: em um acerto de cache, o valor é gravado tanto no cache quanto na memória; • regravação: em um acerto de cache, o valor é gravado no cache e o cache local que armazena o valor é marcado como sujo, mas o valor não é regravado na memória 6 até que o cache local precise ser realocado para armazenar um diferente valor de dados e o valor de dados sujo é regravado na memória 6; • alocar gravação: em um erro de cache, o valor de dados exigido é carregado no cache; • não alocar gravação: em um erro de cache, o valor de dados exigido é modificado na memória e não é carregado no cache.
[0029] Estes são somente alguns exemplos das propriedades que podem ser especificadas pelos atributos de acesso à memória, e pode haver muitos outros.
[0030] No exemplo da figura 1, o endereço provido pelo processador 4 é um endereço físico e as respectivas MPUs 20, 22 buscam correspondentes atributos de acesso para este endereço de memória. Entretanto, em outros exemplos, as MPUs 20, 22 podem ser substituídas com unidades de gerenciamento de memória (MMUs) que recebem um endereço virtual a partir do conjunto de circuitos de processamento 4 e traduzem o endereço virtual em um endereço físico, bem como buscam atributos de acesso à memória. Diferentes mapeamentos de endereço virtual para físico podem ser definidos na primeira MMU 20 pelos sistemas operacionais 12 e na segunda MMU 22 pelo hipervisor 10. Portanto, no geral, as MPUs ou as MMUs podem ser qualquer unidade de atributo de memória que contém dados que definem atributos de acesso para acessos de dados que são buscados com base no endereço de memória especificado pelos acessos de dados.
[0031] Da forma mostrada na figura 3, o sistema operacional 12 que opera no primeiro nível de exceção EL1 e o hipervisor 10 que opera no segundo nível de exceção EL2 podem definir atributos de memória contraditórios para o mesmo endereço de memória. Por exemplo, da forma mostrada na parte esquerda da figura 3, o sistema operacional 12 pode designar diferentes regiões do espaço do endereço de memória 30 como regiões de memória normais 40 ou como regiões tipo dispositivo 50. Instruções de acesso à memória que visam a uma região de memória normal 40 podem ser interrompidas parcialmente através do acesso e repetidas ou retomadas posteriormente, ao mesmo tempo em que instruções de acesso que visam a uma região de memória tipo dispositivo 50 não podem ser interrompidas e repetidas / retomadas. Também, acessos tipo normal podem ser tratados em uma ordem diferente em relação a outros acessos, se comparados com sua ordem de programa original, ao mesmo tempo em que acesso tipo dispositivo não pode ser reordenado. Da forma mostrada na parte direita da figura 3, os atributos de memória definidos pelo hipervisor que opera no segundo nível de privilégio EL2 podem similarmente definir regiões normais 40 e regiões tipo dispositivo 50 do espaço do endereço 30. Entretanto, as regiões definidas pelo hipervisor 10 podem não ser as mesmas regiões definidas pelo sistema operacional 12. Por exemplo, uma região do espaço do endereço 30 pode ser definida como tipo dispositivo pelo sistema operacional 12 em virtude de se esperar que esta região seja mapeada para um dispositivo externo, mas, no sistema virtualizado gerenciado pelo hipervisor 10, um dispositivo como este pode não estar presente e, então, o hipervisor 10 pode marcar tais regiões como normais, em vez disto. Por exemplo, para um endereço que visa ao acesso a dados 55, da forma mostrada na figura 3, o sistema operacional 12 pode especificar o acesso como tipo dispositivo, ao mesmo tempo em que o hipervisor 10 especifica o acesso como tipo normal.
[0032] A figura 4 mostra um exemplo de algumas instruções para as quais esta diferença nos atributos de memória pode ser significativa. A figura 4 ilustra uma instrução de múltiplas cargas LDM para carregar múltiplos valores a partir da memória 6 nos registros 8. A instrução de múltiplas cargas especifica um registro de endereço r0 que inclui um endereço #addr que indica um endereço na memória 6 de um primeiro valor A a ser carregado nos registros 8. A instrução de múltiplas cargas também especifica uma lista de registros r1 a r12 que identificam os registros nos quais os valores de dados devem ser carregados. Da forma mostrada na figura 4, o valor A armazenado no endereço #addr é carregado no registro r1 e o endereço é, então, incrementado para cada subsequente valor B-L a ser carregado nos outros registros r2 a r12. Similarmente, a instrução de múltiplos armazenamentos STM especifica um registro r0 que contém um endereço #addr e uma lista de registros r1 a r12 a partir da qual valores de dados A-L devem ser armazenados na memória, com o endereço #addr identificando o local na memória no qual o primeiro valor A deve ser armazenado e o endereço, então, sendo incrementado para acessar os subsequentes locais de memória. O número de registros na lista determina o número de cargas ou armazenamentos que são realizadas. Tipicamente, as instruções de múltiplas cargas / armazenamentos podem exigir um ciclo de processamento por registro. Embora a figura 4 ilustre um exemplo em que o endereço #addr é especificado usando um registro, em outros exemplos, o endereço pode ser especificado como um valor imediato na codificação da instrução.
[0033] A figura 5 ilustra um problema que pode surgir quando uma instrução de múltiplas cargas ou armazenamentos for indicada como tipo dispositivo pela primeira MPU 20 sob controle do sistema operacional 12. Da forma mostrada na figura 5, intervalos de tempo podem ser alocados em cada sistema operacional 12, com cada sistema operacional 12 sendo executado pelo conjunto de circuitos de processamento 4 durante seu respectivo intervalo de tempo. Interrupções 60 são geradas periodicamente para disparar a comutação para um novo sistema operacional 12. Embora a figura 5 mostre os intervalos de tempo com igual duração, isto não é essencial e seria possível alocar em um sistema operacional 12 um intervalo de tempo mais longo que um outro sistema operacional.
[0034] Para os sistemas operacionais em tempo real 12-0, 12-1, é importante que as interrupções 60 que disparam a comutação para este sistema operacional 12 ocorram em tempos determinísticos. Da forma mostrada na figura 5, um sistema operacional não em tempo real 12-2 pode encontrar uma instrução de múltiplas cargas ou de múltiplos armazenamentos pouco antes de uma destas interrupções 60-1 ocorrer. Se a instrução for marcada como tipo dispositivo, então, ela não pode ser interrompida. A realização de múltiplas cargas ou múltiplos armazenamentos, da forma mostrada na figura 4, pode tomar diversos ciclos de processamento e, então, a conclusão da instrução de múltiplas cargas ou de múltiplos armazenamentos pode fazer com que a operação se propague no intervalo de tempo associado com o sistema operacional em tempo real 12-1, da forma mostrada na figura 5. Se a instrução não puder ser interrompida, então, este tratamento de atrasos das interrupções 60-1 para disparar a comutação para o próximo sistema operacional 12-1, que pode ser um problema, já que o sistema operacional em tempo real 12-1 pode precisar servir um evento crítico em tempo real no início de seu intervalo de tempo.
[0035] Em típicas arquiteturas, quando múltiplas camadas de atributos de memória forem definidas para a mesma transação, estes atributos são tipicamente combinados para formar um atributo combinado que corresponde ao mais restritivo dos atributos originais. Portanto, se um atributo especificar uma transação como tipo dispositivo e o outro especificar a mesma como tipo normal, então, tipicamente, a transação será marcada no tipo dispositivo. Entretanto, em sistemas em tempo real, isto causará um problema de alta latência de interrupção, da forma mostrada na figura 5, em virtude de o atributo tipo dispositivo mais restritivo poder levar a eventos em tempo real sendo servidos muito tarde.
[0036] Para abordar este problema, o primeiro atributo de acesso definido pela primeira MPU 20 sob controle do sistema operacional 12 e o segundo atributo definido pela segunda MPU 22 sob controle do hipervisor 10 podem ser combinados de uma maneira diferente, da forma mostrada na figura 6. Se a segunda MPU 22 determinar que uma transação deve ser do tipo dispositivo, então, o atributo geral é definido como tipo dispositivo, independente do estado do correspondente primeiro atributo definido pelo primeira MPU 20 (veja a linha de base da figura 6). Também, se tanto a primeira quanto a segunda MPUs 20, 22 definirem uma transação como tipo normal, então, o atributo geral é também definido como tipo normal (caixa do topo à esquerda da figura 6).
[0037] Entretanto, quando o hipervisor designar uma transação como tipo normal e o sistema operacional definir a transação como tipo dispositivo (caixa no topo à direita na figura 6), então, um valor de controle 100 mantido pelo conjunto de circuitos de processamento é usado para determinar o atributo geral de memória de acesso para esta transação. O valor de controle 100 pode ser mantido de inúmeras maneiras e pode ser armazenado em qualquer local no aparelho de processamento de dados 2, tais como nos registros 8 ou na memória 6. Alternativamente, o valor de controle 100 pode ser armazenado em um local no conjunto de circuitos de processamento 4, da forma mostrada na figura 1. Em um exemplo, o conjunto de circuitos de processamento 4 pode ter um registro de controle que inclui inúmeros bits de controle que controlam diferentes propriedades do processador 4, e o valor de controle do atributo de memória 100 pode ser um destes bits de controle. Também, a segunda MPU 22 pode manter o valor de controle 100.
[0038] O valor de controle 100 controla a definição do atributo normal / tipo dispositivo para pelo menos um tipo em particular de instrução de acesso de dados que o hipervisor especifica como tipo normal. Se o valor de controle tiver um primeiro valor (por exemplo, um valor de 1), então, a transação é marcada como normal, de forma que a definição do hipervisor 10 do tipo normal rejeite o tipo dispositivo definido pelo sistema operacional 12. Contudo, outras propriedades da transação podem ser retidas de acordo com o estado do dispositivo especificado pelo sistema operacional 12. Por exemplo, a propriedade em que a transação é processada em sua ordem original em relação a outras transações pode ser retida de acordo com transações do dispositivo, mas a transação pode ser interrompível de acordo com transações normais. Note que, quando o valor de controle for 1, então, o atributo geral será definido no atributo especificado pelo hipervisor, independente de qual atributo é especificado pelo sistema operacional 12.
[0039] Por outro lado, se o valor de controle 100 tiver um segundo valor (por exemplo, 0), então, a transação pode ser marcada como tipo dispositivo de acordo com o primeiro atributo definido pela primeira MPU 20 mesmo se o hipervisor tiver especificado o acesso como tipo normal usando a segunda MPU 22. Isto significa que os acessos de dados ainda serão tratados como não interrompíveis. Quando o valor de controle 100 for 0, então, o atributo de acesso geral para os acessos de dados será definido de acordo com o mais restritivo dos atributos definidos pelas primeira e segunda MPU 20, 22, de forma que, se tanto o hipervisor 10 quanto o sistema operacional 12 definirem um acesso tipo dispositivo, então, o atributo geral também será tipo dispositivo.
[0040] O valor de controle 100 pode ser definido por software, tal como pelo hipervisor 10, por exemplo. Isto permite que o hipervisor 10 controle se as indicações tipo dispositivo pelo sistema operacional 12 podem ser rejeitadas. Quando for esperado que um evento crítico em tempo real ocorra, tais como as interrupções 60 que disparam o início de um sistema operacional em tempo real, então, o valor de controle pode ser definido em 1, de forma que, mesmo se a primeira MPU 20 definir a transação como tipo dispositivo, a transação ainda pode ser considerada como normal e será interrompível. Portanto, da forma mostrada na figura 7, mesmo se uma instrução de múltiplas cargas ou armazenamentos for iniciada pelo sistema operacional não em tempo real 12-2, quando as interrupções 60-1 ocorrerem, então, a instrução de múltiplas cargas e armazenamentos é interrompida para permitir que o sistema operacional 12-1 processe eventos em tempo real. A instrução de múltiplas cargas ou armazenamentos pode, então, ser reiniciada ou retomada quando o sistema operacional não em tempo real 12-2 receber seu próximo intervalo no processador 4. Por outro lado, se nenhum evento crítico em tempo real for esperado, então, o hipervisor pode definir o valor de controle em 0 para indicar que, se o sistema operacional 12 designar uma transação como tipo dispositivo, então, ela deve ser tratada como um tipo dispositivo, de forma que ela não possa ser interrompida.
[0041] A determinação do atributo de acesso mostrado na figura 6 pode ser feita pela segunda MPU 22, que pode receber o primeiro atributo a partir da primeira MPU 20 e combinar o mesmo com seu próprio segundo atributo buscado para formar o atributo geral. Alternativamente, tanto primeiro quanto segundo atributos podem ser providos para a memória 6, que pode ter lógica de controle para determinar o atributo combinado que determina como o acesso é tratado pela memória 6.
[0042] Embora a figura 6 mostre um exemplo no qual um valor de controle de 1 indica que o atributo "normal" do hipervisor deve rejeitar o atributo "dispositivo" do sistema operacional e um valor de 0 indica que o atributo "dispositivo" do sistema operacional deve ser usado, em outros exemplos, o mapeamento oposto pode ser usado, de maneira tal que os significados de 0 e 1 são trocados. A técnica mostrada na figura 6 pode ser usada apenas para tipos predeterminados de instruções de acesso de dados, tais como uma instrução de múltiplas cargas ou uma instrução de múltiplos armazenamentos, ou outras instruções de acesso de dados que espera-se que causem longa latência se elas forem não interrompíveis. Em outros exemplos, ela pode ser usada para todas as instruções de acesso de dados. Para instruções para as quais a técnica mostrada na figura 6 não é usada, o mais restritivo dos respectivos atributos especificados pelas primeira e segunda MPUs 20, 22 pode ser tomado (similar ao caso em que o valor de controle 100 tem um valor de 0, da forma mostrada na figura 6).
[0043] Também, é possível implementar a presente técnica sem que um valor de controle 100 seja provido. Neste caso, para o tipo predeterminado de instrução, a MPU 22 pode sempre rejeitar a primeira MPU 20, de forma que, se o hipervisor 10 designar uma transação como tipo "normal", então, ela pode ser interrompida mesmo se o sistema operacional 12 designar a mesma como tipo "dispositivo".
[0044] Também, a técnica mostrada na figura 6 pode ser usada apenas para o tipo predeterminado de instrução de acesso de dados quando ela for executada no nível de privilégio de base EL0 ou no primeiro nível de privilégio EL1. Instruções de acesso de dados executadas pelo nível do hipervisor EL2 podem não ser sujeitas a esta técnica e podem, em vez disto, ser tratadas como instruções tipo dispositivo ou tipo normal com base nas permissões definidas pela segunda MPU 22, independente de quaisquer atributos definidos pela primeira MPU 20 para o mesmo endereço (similar ao caso em que o valor de controle é 1, da forma mostrada na figura 6).
[0045] Em alguns sistemas, esta técnica pode ser aplicada mais no geral para prover um bit de controle 100 que é definido por software em execução em um nível de privilégio mais alto para controlar se tipos predeterminados de instruções de acesso de dados em execução em um nível de privilégio mais baixo podem ser interrompidas ou não. Isto é, o software com nível de privilégio mais alto e mais baixo não precisa ser software em execução nos níveis de privilégio EL2, EL1, respectivamente, e pode, em vez disto, operar em quaisquer dois níveis de privilégio em uma hierarquia de níveis de privilégio.
[0046] A figura 8 ilustra esquematicamente um exemplo de um método de determinação de atributos de acesso à memória para uma instrução de acesso de dados. Na etapa 100, é determinado se o processador 4 deve executar um predeterminado acessos de dados (neste exemplo, uma instrução de múltiplas cargas ou instrução de múltiplos armazenamentos provenientes do software em execução no nível de privilégio de base EL0 ou no primeiro nível de privilégio EL1). Se não, então, os atributos de acesso à memória para a instrução de acesso de dados são determinados de outras maneiras, tais como aquelas conhecidas na técnica anterior. Por outro lado, se uma instrução de múltiplas cargas ou armazenamentos for encontrada em níveis de privilégio EL0 ou EL1, então, o método prossegue para a etapa 102, em que a segunda MPU 22 determina o segundo atributo para esta instrução. Se o segundo atributo for tipo dispositivo, então, na etapa 104, o atributo de acesso geral para a instrução é determinado como tipo dispositivo e a instrução é emitida para memória 6. Os acessos de dados, portanto, não podem ser interrompidos ou reordenados e, então, o processador 4 é comprometido a completar a instrução de múltiplas cargas ou armazenamentos antes de realizar outros acessos.
[0047] Por outro lado, se, na etapa 102, a segunda MPU determinar que o acesso de dados é um tipo normal de acesso, então, na etapa 106, a primeira MPU 20 determina o atributo para a instrução de acesso de dados. Na prática, as etapas 102 e 106 podem ser realizadas em paralelo pelas respectivas MPUs 20, 22, ou a etapa 106 pode ser realizada antes da etapa 102. Se o primeiro atributo determinado pela primeira MPU 20 na etapa 106 for normal (isto é, ambas as MPUs 20, 22 definiram o acesso como normal), então, na etapa 108, o atributo de acesso geral 100 é determinado como normal para esta instrução. Portanto, a instrução de múltiplas cargas ou armazenamentos pode ser interrompida se necessário.
[0048] Por outro lado, se, na etapa 106, for determinado que o atributo é tipo dispositivo (isto é, o hipervisor 10 definiu a transação como normal e o sistema operacional definiu a mesma como dispositivo), então, na etapa 110, o sistema verifica o bit de controle 100. Se o bit de controle tiver um primeiro valor (um, neste exemplo), então, na etapa 112, o atributo geral é definido como normal para indicar que a instrução não é interrompível. Portanto, o hipervisor rejeitou a indicação tipo dispositivo definida pelo sistema operacional 12. Entretanto, pelo menos uma outra propriedade da transação associada com a indicação do tipo dispositivo definida pelo sistema operacional 12 pode ser retida. Por exemplo, o fato que a transação não deve ser reordenada, comparada com outras transações, de forma que as transações sejam apresentadas no barramento de memória em sua ordem original, pode ser retido. Também, informação de política de leitura / gravação de cache definida pela primeira MPU 20 de acordo com o sistema operacional 12 também pode ser retida. Por outro lado, se o bit de controle 110 tiver um segundo valor (por exemplo, 0), então, na etapa 114, o atributo para a instrução é definido como tipo dispositivo, de forma que, quando ele for emitido para a memória 6, ele não possa ser interrompido. Neste caso, a mais restritiva indicação de dispositivo provida pela primeira MPU 20 é tomada.
[0049] Embora modalidades ilustrativas tenham sido aqui descritas com detalhes em relação aos desenhos anexos, deve ser entendido que a invenção não é limitada a estas precisas modalidades, e que várias mudanças e multiplicações podem ser feitas pelos versados na técnica sem fugir do escopo da invenção definido pelas reivindicações anexas.

Claims (16)

1. Aparelho de processamento de dados (2), compreendendo: conjunto de circuitos de processamento (4) configurado para processar dados; um armazenamento de dados (6) configurado para armazenar dados; em que o conjunto de circuitos de processamento (4) é configurado para executar primeiro software em um primeiro nível de privilégio e para executar segundo software em um segundo nível de privilégio mais alto que o primeiro nível de privilégio; em resposta a uma instrução de acesso de dados para acessar dados no armazenamento de dados (6), o aparelho de processamento de dados (2) é configurado para determinar pelo menos um atributo de acesso para a instrução de acesso de dados com base em pelo menos um primeiro atributo definido pelo primeiro software e pelo menos um segundo atributo definido pelo segundo software, cada um do pelo menos um primeiro atributo e do pelo menos um segundo atributo especificando se a execução da instrução de acesso de dados pode ser interrompida; e o aparelho caracterizado pelo fato de que: em resposta a um tipo predeterminado de instrução de acesso de dados para a qual o pelo menos um segundo atributo especifica que a execução da instrução de acesso de dados pode ser interrompida, o aparelho de processamento de dados (2) é configurado para determinar o pelo menos um atributo de acesso que especifica que a execução da instrução de acesso de dados pode ser interrompida mesmo se o pelo menos um primeiro atributo especificar que a execução da instrução de acesso de dados não pode ser interrompida.
2. Aparelho de processamento de dados (2), de acordo com a reivindicação 1, caracterizado pelo fato de que o tipo predeterminado de instrução de acesso de dados compreende uma instrução de acesso de dados a ser executada sobre uma pluralidade de ciclos de processamento.
3. Aparelho de processamento de dados (2), de acordo com qualquer uma das reivindicações 1 ou 2, caracterizado pelo fato de que o tipo predeterminado de instrução de acesso de dados compreende uma instrução do primeiro software ou uma instrução de software adicional em execução sob controle do primeiro software.
4. Aparelho de processamento de dados (2), de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que o conjunto de circuitos de processamento (4) suporta uma pluralidade de sistemas operacionais (12-0, 12-1, 12-2), o primeiro software compreende um da pluralidade de sistemas operacionais (12-0, 12-1, 12-2) e o segundo software compreende um hipervisor (10) para gerenciar a pluralidade de sistemas operacionais (12-0, 12-1, 12-2).
5. Aparelho de processamento de dados (2), de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o tipo predeterminado de instrução de acesso de dados compreende uma instrução de múltiplas cargas para carregar dados provenientes do armazenamento de dados (6) em uma pluralidade de registros do aparelho de processamento de dados (2), ou uma instrução de múltiplos armazenamentos para armazenar, no armazenamento de dados (6), dados provenientes de uma pluralidade de registros do aparelho de processamento de dados (2).
6. Aparelho de processamento de dados (2), de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que o aparelho de processamento de dados (2) é configurado para manter um valor de controle; e em resposta ao tipo predeterminado de instrução de acesso de dados para a qual o pelo menos um segundo atributo especifica que a execução da instrução de acesso de dados pode ser interrompida, o aparelho de processamento de dados (2) é configurado para determinar, com base no valor de controle, se o pelo menos um atributo de acesso especifica que a execução da instrução de acesso de dados pode ser interrompida.
7. Aparelho de processamento de dados (2), de acordo com a reivindicação 6, caracterizado pelo fato de que, para o tipo predeterminado de instrução de acesso de dados: se o valor de controle tiver um primeiro valor, então, o aparelho de processamento de dados (2) é configurado para determinar o pelo menos um atributo de acesso que especifica que a execução da instrução de acesso de dados pode ser interrompida mesmo se o pelo menos um primeiro atributo especificar que a execução da instrução de acesso de dados não pode ser interrompida; e se o valor de controle tiver um segundo valor, então, o aparelho de processamento de dados (2) é configurado para determinar, com base no pelo menos um primeiro atributo, se o pelo menos um atributo de acesso especifica que a execução da instrução de acesso de dados pode ser interrompida.
8. Aparelho de processamento de dados (2), de acordo com qualquer uma das reivindicações 6 ou 7, caracterizado pelo fato de que o conjunto de circuitos de processamento (4) é configurado para definir o valor de controle em resposta ao segundo software.
9. Aparelho de processamento de dados (2), de acordo com qualquer uma das reivindicações 1 a 8, caracterizado pelo fato de que, se o aparelho de processamento de dados (2) determinar o pelo menos um atributo de acesso que especifica que a execução da instrução de acesso de dados pode ser interrompida quando o pelo menos um primeiro atributo especificar que a execução da instrução de acesso de dados não pode ser interrompida, então, o aparelho de processamento de dados (2) é configurado para determinar o pelo menos um atributo de acesso que especifica pelo menos uma outra propriedade da instrução de acesso de dados determinada com base no pelo menos um primeiro atributo.
10. Aparelho de processamento de dados (2), de acordo com a reivindicação 9, caracterizado pelo fato de que a pelo menos uma outra propriedade compreende pelo menos um de: (i) se a execução do tipo predeterminado de instrução de acesso de dados pode ser reordenada em relação à execução de outras instruções de acesso de dados; (ii) informação de política de submissão a cache para controlar como os dados acessados em resposta à instrução de acesso de dados são submetidos a cache.
11. Aparelho de processamento de dados (2), de acordo com qualquer uma das reivindicações 1 a 10, caracterizado pelo fato de que cada um do pelo menos um atributo de acesso, do pelo menos um primeiro atributo e do pelo menos um segundo atributo identifica se a instrução de acesso de dados é um tipo normal de instrução de acesso de dados que pode ser interrompida ou um tipo dispositivo de instrução de acesso de dados que não pode ser interrompida.
12. Aparelho de processamento de dados (2), de acordo com qualquer uma das reivindicações 1 a 11, caracterizado pelo fato de que a instrução de acesso de dados especifica um endereço de um local no armazenamento de dados (6), e o aparelho de processamento de dados (2) é configurado para determinar o pelo menos um primeiro atributo e o pelo menos um segundo atributo com base em pelo menos uma porção do endereço.
13. Aparelho de processamento de dados (2), de acordo com qualquer uma das reivindicações 1 a 12, caracterizado pelo fato de que compreende uma primeira unidade de atributo de memória (20) configurada para armazenar primeiros dados que definem o pelo menos um primeiro atributo, em que o conjunto de circuitos de processamento (4) é configurado para definir os primeiros dados em resposta ao primeiro software.
14. Aparelho de processamento de dados (2), de acordo com qualquer uma das reivindicações 1 a 13, caracterizado pelo fato de que compreende uma segunda unidade de atributo de memória (22) configurada para armazenar segundos dados que definem o pelo menos um segundo atributo, em que o conjunto de circuitos de processamento (4) é configurado para definir os segundos dados em resposta ao segundo software.
15. Aparelho de processamento de dados (2), compreendendo: meio de processamento para processamento de dados; meio de armazenamento de dados (6) para armazenamento de dados (6); em que o meio de processamento é configurado para executar primeiro software em um primeiro nível de privilégio e para executar segundo software em um segundo nível de privilégio mais alto que o primeiro nível de privilégio; em resposta a uma instrução de acesso de dados para acessar dados no meio de armazenamento de dados (6), o aparelho de processamento de dados (2) é configurado para determinar (102, 106) pelo menos um atributo de acesso para a instrução de acesso de dados com base em pelo menos um primeiro atributo definido pelo primeiro software e pelo menos um segundo atributo definido pelo segundo software, cada um do pelo menos um primeiro atributo e do pelo menos um segundo atributo especificando se a execução da instrução de acesso de dados pode ser interrompida; e o aparelho caracterizado pelo fato de que: em resposta a um tipo predeterminado de instrução de acesso de dados para a qual o pelo menos um segundo atributo especifica que a execução da instrução de acesso de dados pode ser interrompida, o aparelho de processamento de dados (2) é configurado para determinar (112) o pelo menos um atributo de acesso que especifica que a execução da instrução de acesso de dados pode ser interrompida mesmo se o pelo menos um primeiro atributo especificar que a execução da instrução de acesso de dados não pode ser interrompida.
16. Método de processamento de dados para um aparelho de processamento de dados (2) que compreende conjunto de circuitos de processamento (4) configurado para processar dados e um armazenamento de dados (6) configurado para armazenar dados, em que o conjunto de circuitos de processamento (4) é configurado para executar primeiro software em um primeiro nível de privilégio e para executar segundo software em um segundo nível de privilégio mais alto que o primeiro nível de privilégio; o método compreendendo: em resposta a uma instrução de acesso de dados para acessar dados no armazenamento de dados (6), determinar (102, 106) pelo menos um atributo de acesso para a instrução de acesso de dados com base em pelo menos um primeiro atributo definido pelo primeiro software e pelo menos um segundo atributo definido pelo segundo software, cada um do pelo menos um primeiro atributo e do pelo menos um segundo atributo especificando se a execução da instrução de acesso de dados pode ser interrompida; e o método caracterizado pelo fato de que: em resposta a um tipo predeterminado de instrução de acesso de dados para a qual o pelo menos um segundo atributo especifica que a execução da instrução de acesso de dados pode ser interrompida, determinar (112) o pelo menos um atributo de acesso que especifica que a execução da instrução de acesso de dados pode ser interrompida mesmo se o pelo menos um primeiro atributo especificar que a execução da instrução de acesso de dados não pode ser interrompida.
BR112016002977-1A 2013-08-23 2014-07-15 Aparelho e método de processamento de dados BR112016002977B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1315108.9A GB2517493A (en) 2013-08-23 2013-08-23 Handling access attributes for data accesses
GB1315108.9 2013-08-23
PCT/GB2014/052154 WO2015025129A1 (en) 2013-08-23 2014-07-15 Handling access attributes for data accesses

Publications (2)

Publication Number Publication Date
BR112016002977A2 BR112016002977A2 (pt) 2017-08-01
BR112016002977B1 true BR112016002977B1 (pt) 2022-06-21

Family

ID=49355838

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016002977-1A BR112016002977B1 (pt) 2013-08-23 2014-07-15 Aparelho e método de processamento de dados

Country Status (10)

Country Link
US (2) US10354092B2 (pt)
EP (1) EP3036622B1 (pt)
JP (1) JP6511446B2 (pt)
KR (1) KR102269912B1 (pt)
CN (1) CN105453029B (pt)
BR (1) BR112016002977B1 (pt)
GB (1) GB2517493A (pt)
IL (1) IL243889B (pt)
TW (1) TWI630554B (pt)
WO (1) WO2015025129A1 (pt)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2940575B1 (en) * 2014-05-02 2018-05-09 Nxp B.V. Controller circuits, data interface blocks, and methods for transferring data
GB2546742B (en) 2016-01-26 2019-12-11 Advanced Risc Mach Ltd Memory address translation management
US11205152B1 (en) * 2016-03-18 2021-12-21 Amazon Technologies, Inc. Virtual logistical network overlay for physical logistical network
GB2564400B (en) * 2017-07-06 2020-11-25 Advanced Risc Mach Ltd Graphics processing
EP3726390B1 (en) * 2018-02-02 2024-04-24 Huawei Technologies Co., Ltd. Method and device for protecting kernel integrity
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10880401B2 (en) * 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
GB2578135B (en) 2018-10-18 2020-10-21 Advanced Risc Mach Ltd Range checking instruction
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4087856A (en) * 1976-06-30 1978-05-02 International Business Machines Corporation Location dependence for assuring the security of system-control operations
JPS55112651A (en) * 1979-02-21 1980-08-30 Fujitsu Ltd Virtual computer system
US5325536A (en) * 1989-12-07 1994-06-28 Motorola, Inc. Linking microprocessor interrupts arranged by processing requirements into separate queues into one interrupt processing routine for execution as one routine
JP2759407B2 (ja) 1993-04-15 1998-05-28 ローレルバンクマシン株式会社 硬貨包装機
US5889973A (en) * 1995-03-31 1999-03-30 Motorola, Inc. Method and apparatus for selectively controlling interrupt latency in a data processing system
FR2775370B1 (fr) * 1998-02-20 2001-10-19 Sgs Thomson Microelectronics Procede de gestion d'interruptions dans un microprocesseur
US6574736B1 (en) * 1998-11-30 2003-06-03 Microsoft Corporation Composable roles
SE519869C2 (sv) * 2000-12-01 2003-04-15 Saab Ab Datoranordning och förfarande för exekvering av programvaror av olika kritikalitet
DE10206865C1 (de) * 2002-02-18 2003-05-15 Daimler Chrysler Ag Reaktionszeit-Beschränkung eines Software-Prozesses
US20040005483A1 (en) * 2002-03-08 2004-01-08 Chhiu-Tsu Lin Perovskite manganites for use in coatings
US7944953B2 (en) * 2002-04-03 2011-05-17 Tvworks, Llc Method and apparatus for transmitting data in a data stream
GB2392998B (en) * 2002-09-16 2005-07-27 Advanced Risc Mach Ltd Handling interrupts during multiple access program instructions
JP2004139503A (ja) 2002-10-21 2004-05-13 Matsushita Electric Ind Co Ltd 記憶装置及びその制御方法
US20040111593A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Interrupt handler prediction method and system
US20040168047A1 (en) * 2003-02-24 2004-08-26 Matsushita Electric Industrial Co., Ltd. Processor and compiler for creating program for the processor
US7543331B2 (en) * 2003-12-22 2009-06-02 Sun Microsystems, Inc. Framework for providing a configurable firewall for computing systems
US7147938B2 (en) * 2004-06-30 2006-12-12 Eastman Kodak Company Organic element for electroluminescent devices
US8166483B2 (en) * 2004-08-06 2012-04-24 Rabih Chrabieh Method and apparatus for implementing priority management of computer operations
US20060064528A1 (en) * 2004-09-17 2006-03-23 Hewlett-Packard Development Company, L.P. Privileged resource access
JP4345630B2 (ja) * 2004-09-29 2009-10-14 ソニー株式会社 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US20060218425A1 (en) 2005-02-25 2006-09-28 Zhimin Ding Integrated microcontroller and memory with secure interface between system program and user operating system and application
JP2007004661A (ja) * 2005-06-27 2007-01-11 Hitachi Ltd 仮想計算機の制御方法及びプログラム
US8726292B2 (en) * 2005-08-25 2014-05-13 Broadcom Corporation System and method for communication in a multithread processor
US8443188B2 (en) * 2006-11-30 2013-05-14 Microsoft Corporation Using code access security for runtime accessibility checks
US8869294B2 (en) * 2006-12-05 2014-10-21 Intel Corporation Mitigating branch prediction and other timing based side channel attacks
US8136091B2 (en) * 2007-01-31 2012-03-13 Microsoft Corporation Architectural support for software-based protection
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
GB2460393B (en) * 2008-02-29 2012-03-28 Advanced Risc Mach Ltd A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry
KR101496329B1 (ko) * 2008-03-28 2015-02-26 삼성전자주식회사 네트워크의 디바이스 보안 등급 조절 방법 및 장치
US8347380B1 (en) * 2008-06-30 2013-01-01 Symantec Corporation Protecting users from accidentally disclosing personal information in an insecure environment
US8450300B2 (en) * 2009-07-13 2013-05-28 Cempra Pharmaceuticals Inc. Fusidic acid dosing regimens for treatment of bacterial infections
GB2474666B (en) * 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
US8489789B2 (en) * 2010-02-05 2013-07-16 Advanced Micro Devices, Inc. Interrupt virtualization
US8826231B1 (en) * 2010-06-28 2014-09-02 The Boeing Company Methods and systems for deploying software applications
JP5541036B2 (ja) * 2010-09-21 2014-07-09 富士通株式会社 メモリアクセス制御プログラム、メモリアクセス制御方法、及び情報処理装置
US9798873B2 (en) * 2011-08-04 2017-10-24 Elwha Llc Processor operable to ensure code integrity
US8898459B2 (en) * 2011-08-31 2014-11-25 At&T Intellectual Property I, L.P. Policy configuration for mobile device applications
US8695010B2 (en) * 2011-10-03 2014-04-08 International Business Machines Corporation Privilege level aware processor hardware resource management facility
US8856789B2 (en) * 2012-09-06 2014-10-07 Assured Information Security, Inc. Facilitating execution of a self-modifying executable
GB2517494B (en) * 2013-08-23 2021-02-24 Advanced Risc Mach Ltd Handling time intensive instructions
KR101920980B1 (ko) * 2014-03-19 2018-11-21 인텔 코포레이션 멀티-운영 체제 디바이스들에 대한 액세스 격리
US9747218B2 (en) * 2015-03-20 2017-08-29 Mill Computing, Inc. CPU security mechanisms employing thread-specific protection domains
US9870466B2 (en) * 2015-09-26 2018-01-16 Mcafee, Inc. Hardware-enforced code paths
US20170123800A1 (en) * 2015-11-04 2017-05-04 International Business Machines Corporation Selective resource activation based on privilege level
US10261919B2 (en) * 2016-07-08 2019-04-16 Hewlett Packard Enterprise Development Lp Selective memory encryption
US10650156B2 (en) * 2017-04-26 2020-05-12 International Business Machines Corporation Environmental security controls to prevent unauthorized access to files, programs, and objects
US10635831B1 (en) * 2018-01-06 2020-04-28 Ralph Crittenden Moore Method to achieve better security using a memory protection unit
US11042485B2 (en) * 2018-06-20 2021-06-22 Vmware, Inc. Implementing firmware runtime services in a computer system

Also Published As

Publication number Publication date
TW201514857A (zh) 2015-04-16
JP6511446B2 (ja) 2019-05-15
WO2015025129A1 (en) 2015-02-26
US10354092B2 (en) 2019-07-16
JP2016532205A (ja) 2016-10-13
GB201315108D0 (en) 2013-10-09
EP3036622B1 (en) 2018-03-07
US20190286831A1 (en) 2019-09-19
EP3036622A1 (en) 2016-06-29
IL243889B (en) 2019-05-30
IL243889A0 (en) 2016-04-21
KR20160045735A (ko) 2016-04-27
BR112016002977A2 (pt) 2017-08-01
US20160210465A1 (en) 2016-07-21
CN105453029B (zh) 2018-11-09
CN105453029A (zh) 2016-03-30
US11055440B2 (en) 2021-07-06
KR102269912B1 (ko) 2021-06-28
GB2517493A (en) 2015-02-25
TWI630554B (zh) 2018-07-21

Similar Documents

Publication Publication Date Title
BR112016002977B1 (pt) Aparelho e método de processamento de dados
US8639910B2 (en) Handling writes to a memory including asymmetric and symmetric components
JP7065099B2 (ja) メモリシステムリソースの分割または性能監視
JP2020514872A (ja) Tlbまたはキャッシュ割り当ての分割
JP7065098B2 (ja) メモリシステムリソースの分割または性能監視
PT2229630E (pt) Tradução de endereços dinâmica com controlo de formato
CN109952567B (zh) 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置
JP2020514868A (ja) メモリ分割
JP2001142779A (ja) 改善されたメモリ管理ユニット及びキャッシュメモリを有するマイクロプロセッサを用いたデータ処理方法
TW200825904A (en) Virtualizing performance counters
US10846222B1 (en) Dirty data tracking in persistent memory systems
JP2020514871A (ja) メモリシステムリソースの分割または性能監視
GB2562062B (en) An apparatus and method for managing capability metadata
JP6722182B2 (ja) コンテキスト依存のバリア命令の実行
JP2001142780A (ja) 改善されたメモリ管理ユニット及びキャッシュメモリを有するマイクロプロセッサを用いたデータ処理方法
US11074181B2 (en) Dirty data tracking in persistent memory systems
Bhattacharjee et al. The Virtual Memory Abstraction

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 15/07/2014, OBSERVADAS AS CONDICOES LEGAIS