BR112016002977B1 - Aparelho e método de processamento de dados - Google Patents
Aparelho e método de processamento de dados Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000004044 response Effects 0.000 claims description 22
- 238000013500 data storage Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 claims description 5
- 238000003672 processing method Methods 0.000 claims description 2
- 230000000717 retained effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- 230000001010 compromised effect Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/629—Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4818—Priority circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task 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.
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)
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)
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 |
-
2013
- 2013-08-23 GB GB1315108.9A patent/GB2517493A/en not_active Withdrawn
-
2014
- 2014-07-15 EP EP14742314.9A patent/EP3036622B1/en active Active
- 2014-07-15 US US14/912,300 patent/US10354092B2/en active Active
- 2014-07-15 KR KR1020167005602A patent/KR102269912B1/ko active IP Right Grant
- 2014-07-15 WO PCT/GB2014/052154 patent/WO2015025129A1/en active Application Filing
- 2014-07-15 JP JP2016535521A patent/JP6511446B2/ja active Active
- 2014-07-15 BR BR112016002977-1A patent/BR112016002977B1/pt active IP Right Grant
- 2014-07-15 CN CN201480045561.1A patent/CN105453029B/zh active Active
- 2014-08-06 TW TW103126934A patent/TWI630554B/zh active
-
2016
- 2016-02-01 IL IL243889A patent/IL243889B/en active IP Right Grant
-
2019
- 2019-06-06 US US16/433,296 patent/US11055440B2/en active Active
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 |