BR112016002997B1 - Aparelho para processamento de informação, e, método implementado por máquina - Google Patents

Aparelho para processamento de informação, e, método implementado por máquina Download PDF

Info

Publication number
BR112016002997B1
BR112016002997B1 BR112016002997-6A BR112016002997A BR112016002997B1 BR 112016002997 B1 BR112016002997 B1 BR 112016002997B1 BR 112016002997 A BR112016002997 A BR 112016002997A BR 112016002997 B1 BR112016002997 B1 BR 112016002997B1
Authority
BR
Brazil
Prior art keywords
time
instructions
intensive
exception
information processing
Prior art date
Application number
BR112016002997-6A
Other languages
English (en)
Other versions
BR112016002997A2 (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 BR112016002997A2 publication Critical patent/BR112016002997A2/pt
Publication of BR112016002997B1 publication Critical patent/BR112016002997B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • 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/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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
    • 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/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

aparelho para processamento de informação, e, método implementado por máquina. a execução das instruções de tempo intensivo pode levar a eventos críticos sendo respondidos tarde ou não sendo respondidos nunca. um aparelho para processamento de informação compreende sistema de circuitos de processamento (60) para executar instruções que compreendem uma ou mais instruções de tempo intensivo e sistema de circuitos de geração de exceção (100) para gerar pelo menos uma exceção para o sistema de circuitos de processamento. o sistema de circuitos de processamento mantém um valor de controle (20) para indicar se as instruções de tempo intensivo podem ser executadas ou não. quando uma instrução de tempo intensivo for encontrada, se o valor de controle indicar que instruções de tempo intensivo não podem ser executadas, então, uma primeira exceção dispara o sistema de circuitos de processamento para suprimir a execução da instrução de tempo intensivo. alternativamente, se o valor de controle indicar que instruções de tempo intensivo podem ser executadas, então, a instrução de tempo intensivo é executada.

Description

CAMPO
[001] A presente técnica é direcionada para o campo dos dispositivos de processamento de dados. Mais particularmente, a presente técnica pode ter relevância para tratamento de instruções de tempo intensivo em dispositivos de processamento de dados.
FUNDAMENTOS
[002] Em sistemas em tempo real, é frequentemente necessário responder a um evento em particular em um período de tempo ou em um tempo específico. A fim de alcançar isto, tais sistemas frequentemente se baseiam no comportamento determinístico do sistema como um todo. Por exemplo, pode ser necessário prover software com acesso a um processador ou um outro dispositivo de hardware, tal como um sensor, em intervalos ou tempos predeterminados.
[003] Um exemplo de um sistema em tempo real é um sistema de implementação de airbag que é desenhado para detectar a colisão de um veículo e, na detecção de uma colisão como esta, para implementar os airbags. Em um sistema como este, pode ser essencial que os airbags sejam implementados em um período de tempo muito curto desde que um evento de colisão foi detectado.
[004] Entretanto, o problema de responder a um evento em particular em um dado período de tempo é composto se o hardware estiver ocupado. Em particular, se o processador estiver executando uma instrução demorada, então, há um atraso antes de qualquer outro trabalho poder ser realizado. Considerando o sistema de implementação de airbag, por exemplo, se o processador começar a execução de uma instrução demorada imediatamente antes de um evento de colisão ocorrer, então, pode ser necessário que o processador complete a execução da instrução demorada antes de os airbags poderem ser implementados. Isto pode levar à situação na qual uma colisão ocorreu, mas o sistema de implementação de airbag não irá operar por um longo período de tempo até que a instrução demorada seja completada.
[005] Em sistemas em tempo real, portanto, a execução de instruções demoradas em um tempo inconveniente pode ter um significativo efeito prejudicial no desempenho geral do sistema, e pode mesmo levar à completa falha do sistema.
[006] Uma maneira de lidar com tais instruções é simplesmente terminar sua execução quando um evento crítico ocorrer. Entretanto, isto desperdiça todos os recursos do processador que já foram gastos na instrução, e isto pode frequentemente exigir o gasto de ainda mais recursos do processador para restaurar o estado do processador ao que ele era antes de a execução da instrução demorada começar. Adicionalmente, algumas instruções são tanto, por sua natureza, ininterrompíveis, quanto podem produzir inconvenientes efeitos laterais se interrompidas.
SUMÁRIO DA INVENÇÃO
[007] De acordo com um aspecto, é provido um aparelho para processamento de informação que compreende sistema de circuitos de processamento configurado para executar instruções que compreendem uma ou mais instruções de tempo intensivo; e sistema de circuitos de geração de exceção configurado para gerar pelo menos uma exceção para o dito sistema de circuitos de processamento, em que o dito sistema de circuitos de processamento é configurado para manter um valor de controle para indicar se as ditas instruções de tempo intensivo podem ser executadas; em que o dito sistema de circuitos de geração de exceção é configurado, em resposta a uma das ditas instruções de tempo intensivo, quando o dito valor de controle estiver em um primeiro estado que indica que as ditas instruções de tempo intensivo não podem ser executadas, para gerar uma primeira exceção para disparar o sistema de circuitos de processamento para suprimir a execução da dita uma das ditas instruções de tempo intensivo; e em que o dito sistema de circuitos de geração de exceção é configurado, em resposta a uma das ditas instruções de tempo intensivo, quando o dito valor de controle estiver em um segundo estado que indica que as ditas instruções de tempo intensivo podem ser executadas, para executar a dita uma das ditas instruções de tempo intensivo.
[008] A presente técnica reconhece que a execução de instruções de tempo intensivo pode, algumas vezes, ser prejudicial, particularmente, em um sistema em tempo real quando tais instruções ocorrerem antes de um evento crítico que deve ser respondido de forma relativamente rápida. Por exemplo, se o sistema devesse iniciar a execução de uma instrução de tempo intensivo e um evento crítico ou exceção devessem ocorrer de forma imediatamente posterior, a instrução de tempo intensivo pode precisar completar antes de o evento crítico ou a exceção poderem ser respondidos. Em sistemas em tempo real, isto pode ser inaceitável, já que pode ser necessário que a exceção ou o evento sejam respondidos em um período de tempo muito curto.
[009] De acordo com o aspecto exposto, um valor de controle é provido para indicar se instruções de tempo intensivo podem ser executadas ou não, isto é, se permite-se que instruções de tempo intensivo sejam executadas, por um sistema de circuitos de processamento. Se o valor de controle for definido em um estado no qual instruções de tempo intensivo não podem ser executadas, então, uma tentativa de executar uma instrução de tempo intensivo irá resultar em uma primeira exceção sendo gerada pelo sistema de circuitos de geração de exceção, fazendo com que a execução desta instrução de tempo intensivo seja suprimida. Alternativamente, se o estado do valor de controle for de maneira tal que instruções de tempo intensivo podem ser executadas, então, a execução destas instruções continua e nenhuma primeira exceção é gerada. Portanto, pelo controle de um estado do valor de controle, instruções de tempo intensivo podem ser permitidas ou reprovadas conforme exigido. Desta maneira, se for conhecido que um evento crítico deve acontecer, ou tem uma alta probabilidade de ocorrer, então, o valor de controle pode ser definido para reprovar instruções de tempo intensivo para levar até este evento. Portanto, quando o próprio evento ocorrer, não deve haver instruções demoradas que ocorrem e o evento pode ser respondido rapidamente.
[0010] Há muitos diferentes exemplos de instruções de tempo intensivo. Em algumas modalidades, uma instrução de tempo intensivo pode ser considerada como uma instrução que exige múltiplos ciclos de processamento do sistema de circuitos de processamento para executar. Em vez deste exemplo, ou além dele, instruções de tempo intensivo podem compreender instruções que não podem ser interrompidas uma vez iniciadas.
[0011] Além do mais, ou em vez de cada um destes dois exemplos, uma instrução de tempo intensivo pode compreender pelo menos uma de: uma instrução de raiz quadrada com ponto flutuante, uma instrução de divisão, uma instrução de múltiplas cargas não interrompíveis, uma instrução de múltiplos armazenamentos não interrompíveis e pelo menos uma instrução tipo instrução única - múltiplos dados (SIMD) predeterminada.
[0012] Instruções de raiz quadrada de ponto flutuante e instruções de divisão com número inteiro ou ponto flutuante podem ser demoradas simplesmente devido à natureza destas instruções que exigem um grande número de ciclos de processamento para completar. Pode ser preferível não interromper estas instruções, já que fazê-lo exigirá que a operação de tempo intensivo comece novamente. Além do mais, é possível que uma instrução posterior na ordem do programa que executa depois ou em paralelo com a instrução de raiz quadrada ou de divisão de tempo intensivo pode sobrescrever os registros de entrada da instrução de raiz quadrada ou de divisão antes de esta instrução ter completado, tornando muito difícil ou mesmo impossível que estas instruções sejam reiniciadas se interrompidas. Instruções de carga e armazenamento podem ser marcadas como sendo não interrompíveis, por exemplo, se os endereços de memória que são referenciados nas instruções forem tratados como memória tipo Dispositivo. Tal memória pode ser mapeada para um dispositivo de hardware, e leitura ou gravação nestes locais de memória podem fazer com que o dispositivo aja de uma maneira em particular. A interrupção destas instruções pode levar a comportamento incorreto ou não determinístico do dispositivo de hardware. Instruções SIMD são instruções para as quais um único operador de processamento é executado em paralelo em múltiplos elementos de dados nos mesmos operando(s) de entrada. Pelo menos algumas operações SIMD podem envolver muitos ciclos do processador e, como com instruções de divisão com número inteiro ou ponto flutuante, pode não ser possível reiniciar tais instruções se interrompidas.
[0013] Outros exemplos apropriados do termo "instrução de tempo intensivo" ficarão aparentes aos versados na técnica e podem ser usados em vez de, ou além de, qualquer um destes exemplos providos anteriormente.
[0014] O sistema de circuitos de processamento pode ser 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. Isto é, o primeiro software executa em um nível menos privilegiado que o segundo software. O termo "mais alto" refere-se ao nível de privilégio e não qualquer valor numérico associado com o nível de privilégio. Desta maneira, um nível mais privilegiado pode ser numericamente mais alto ou mais baixo que um nível menos privilegiado. No geral, software com privilégio "mais alto" pode ter direitos que não são disponíveis para o software em um privilégio "mais baixo".
[0015] Em algumas destas modalidades, o segundo software pode ser configurado para controlar o sistema de circuitos de processamento para mudar o dito valor de controle.
[0016] O sistema de circuitos de geração de exceção pode ser configurado para gerar a primeira exceção em resposta a uma das ditas instruções de tempo intensivo do dito primeiro software. Isto é, o sistema de circuitos de geração de exceção pode gerar a primeira exceção quando o primeiro software tentar executar uma das instruções de tempo intensivo. O comportamento do primeiro software pode, portanto, ser gerenciado pelo valor de controle.
[0017] Portanto, o segundo software que executa em um nível mais privilegiado pode definir o valor de controle, e o primeiro software que executa em um nível menos privilegiado pode ser afetado pelo valor de controle. Tais modalidades são adequadas para sistemas nos quais um conjunto de software é gerenciado por uma outra peça de software, tal como em um ambiente virtualizado.
[0018] O sistema de circuitos de geração de exceção pode ser configurado para apenas gerar a primeira exceção em resposta a uma das instruções de tempo intensivo do software em execução em um nível de privilégio mais baixo que o dito segundo nível de privilégio. Isto é, uma primeira exceção será gerada apenas para software que executa em um nível de privilégio mais baixo que o segundo nível de privilégio. Dito diferentemente, o sistema de circuitos de geração de exceção é configurado para não gerar a primeira exceção em resposta a uma das instruções de tempo intensivo do software em execução no dito segundo nível de privilégio. Em algumas destas modalidades, o sistema de circuitos de geração de exceção é configurado para não gerar a dita primeira exceção em resposta a uma das ditas instruções de tempo intensivo do software em execução no nível mais privilegiado. Desta maneira, alguns softwares podem sempre ser intitulados para gerar instruções de tempo intensivo. Por exemplo, o hipervisor ou o software de gerenciamento podem ser intitulados para sempre executar instruções de tempo intensivo.
[0019] O primeiro software pode compreender um ou mais sistemas operacionais convidados e o segundo software pode compreender um hipervisor. As presentes técnicas são bem adequadas a um ambiente que inclui um hipervisor e um ou mais sistemas operacionais virtualizados convidados, já que o hipervisor pode controlar o comportamento de cada sistema operacional convidado para garantir que recursos sejam distribuídos razoavelmente. Por exemplo, tendo o hipervisor definido o valor de controle, é possível para limitar o efeito das instruções de tempo intensivo emitidas por um primeiro sistema operacional convidado em um segundo sistema operacional convidado.
[0020] O valor de controle pode ser mudado em resposta a um ou mais eventos predeterminados, tal como uma comutação de contexto, que muda qual software está sendo executado em um instante em particular no sistema de circuitos de processamento. Por exemplo, uma comutação de contexto pode suspender o processamento de um sistema operacional convidado e retomar o processamento de um outro sistema operacional convidado ou um hipervisor. Em tais modalidades, o sistema de circuitos de processamento é responsivo à comutação de contexto para mudar o valor de controle para o segundo estado. Isto é, em resposta a uma comutação de contexto, o sistema de circuitos de processamento muda o valor de controle de maneira tal que instruções de tempo intensivo possam ser executadas. Em alguns casos, a permissão de instruções de tempo intensivo imediatamente depois de uma comutação de contexto é o tempo mais apropriado para que tais instruções sejam executadas, já que é improvável que um outro sistema operacional comece a execução muito brevemente depois que uma comutação de contexto tiver ocorrido. Desta maneira, o sistema operacional tem o máximo tempo disponível para realizar instruções de tempo intensivo antes de a próxima comutação de contexto ocorrer.
[0021] Um outro exemplo de um evento predeterminado é uma segunda exceção, que pode ser gerada um primeiro período de tempo predeterminado antes de um evento esperado. Por exemplo, um evento esperado pode ser uma comutação de contexto e a segunda exceção pode ocorrer um segundo período de tempo predeterminado depois de uma comutação de contexto prévia. Isto é, depois que um período de tempo predeterminado decorrer depois que uma comutação de contexto ocorrer, a segunda exceção é gerada, fazendo com que o valor de controle mude de estado, de maneira tal que instruções de tempo intensivo não possam ser executadas. Em uma modalidade que faz uso de um hipervisor, o segundo software (por exemplo, o hipervisor) pode controlar o sistema de circuitos de processamento em resposta à segunda exceção. Comutações de contexto são tipicamente periódicas. Portanto, pela supressão de instruções de tempo intensivo depois que um período de tempo tiver decorrido desde a última comutação de contexto, e antes de a próxima comutação de contexto ser esperada, é menos provável que a execução de uma instrução de tempo intensivo atrase uma comutação de contexto futuro, e, portanto, é menos provável que outro software em execução no aparelho de hardware seja afetado.
[0022] Em alguns casos, o primeiro período de tempo predeterminado é menor que o segundo período de tempo predeterminado. Em particular, uma razão do primeiro período de tempo predeterminado pelo segundo período de tempo pode ser 1:9. Em outras palavras, o período de tempo para o qual instruções de tempo intensivo podem ser executadas pode ser mais longo que o período de tempo para o qual instruções de tempo intensivo não podem ser executadas, com o período de tempo para o qual instruções de tempo intensivo não podem ser executadas sendo brevemente antes da ocorrência de uma subsequente comutação de contexto. A vantagem desta característica é que instruções de tempo intensivo podem, no geral, ser permitidas (90 % do tempo), o que permite que o dispositivo de processamento de dados opere normalmente. Apenas por um curto período de tempo as instruções de tempo intensivo são suprimidas.
[0023] Em resposta à segunda exceção, o sistema de circuitos de processamento pode ser configurado para mudar o valor de controle para o dito primeiro estado que indica que as ditas instruções de tempo intensivo não podem ser executadas. Desta maneira, em preparação para um evento esperado, instruções de tempo intensivo são reprovadas, assim, tornando o sistema mais capaz de rapidamente responder ao evento esperado, em vez de ser exigido executar instruções de tempo intensivo.
[0024] Em algumas modalidades, o dito sistema de circuitos de processamento é configurado para comutar para execução do dito segundo software em resposta à primeira exceção. Há uma variedade de maneiras nas quais o segundo software pode reagir à primeira exceção ser gerada, alguns exemplos dos quais são descritos a seguir. Será percebido pelos versados na técnica que estes exemplos não são limitantes. Além do mais, estes exemplos podem ser combinados de qualquer maneira apropriada.
[0025] O segundo software pode ser configurado para controlar o dito sistema de circuitos de processamento para mudar um primeiro software ativo da dita pluralidade de primeiros softwares. Isto é, em resposta à dita primeira exceção, o segundo software muda o primeiro software ativo da dita pluralidade de primeiros softwares. Por exemplo, um diferente sistema operacional convidado pode ser comutado no início, antes do que uma comutação de contexto futura normalmente permitiria. Desta maneira, ciclos de processamento do sistema de circuitos de processamento não são desperdiçados e podem ser gastos de acordo com o sistema operacional convidado que é comutado.
[0026] Em resposta à dita primeira exceção, o dito sistema de circuitos de processamento pode ser configurado para não executar a dita pluralidade de primeiros softwares até que uma subsequente comutação de contexto ocorra. Em uma situação como esta, nenhum da pluralidade de primeiros softwares será executado até que uma outra comutação de contexto seja recebida. Pela não alteração de qual do primeiro software é executado em resposta à primeira exceção ser gerada, a natureza determinística do aparelho para processamento é mantida. Isto é, o tempo no qual uma peça particular do primeiro software devia ser executada não irá mudar. Entretanto, não permite- se que o primeiro software que emitiu uma instrução de tempo intensivo continue a execução. Uma vez que uma comutação de contexto ocorre, um primeiro software ativo da dita pluralidade de primeiros softwares pode ser mudado, e pode ser permitido que este primeiro software ativo da dita pluralidade de primeiros softwares execute instruções da forma normal, e a instrução demorada será executada posteriormente quando o processamento comutar de volta para o primeiro software original.
[0027] Em alguns casos, em resposta à dita primeira exceção, o dito sistema de circuitos de processamento é configurado para continuar a execução de um primeiro software ativo da dita pluralidade de primeiros softwares sem executar a dita uma das ditas instruções de tempo intensivo. Isto é, nestes casos, o primeiro software ativo do dito primeiro software permanece ativo e permite-se que continue em execução. Entretanto, as instruções de tempo intensivo que fizeram com que a primeira exceção fosse gerada não são executadas e podem precisar ser reemitidas em um tempo posterior.
[0028] De acordo com um segundo aspecto, é provido um método implementado por máquina para um aparelho para processamento de informação, dito método compreendendo as etapas de: executar uma ou mais instruções que compreendem uma ou mais instruções de tempo intensivo; manter um valor de controle para indicar se as ditas instruções de tempo intensivo podem ser executadas; em resposta a uma das ditas instruções de tempo intensivo, quando o dito valor de controle indicar que as ditas instruções de tempo intensivo não podem ser executadas, gerar uma primeira exceção para suprimir a execução da dita uma das ditas instruções de tempo intensivo; e, em resposta a uma das ditas instruções de tempo intensivo, quando o dito valor de controle indicar que as ditas instruções de tempo intensivo podem ser executadas, executar a dita uma das ditas instruções de tempo intensivo.
[0029] De acordo com um terceiro aspecto, é provido um aparelho para processamento de informação que compreende: meio de processamento para executar instruções que compreendem uma ou mais instruções de tempo intensivo; e meio de geração de exceção para gerar pelo menos uma exceção para o dito sistema de circuitos de processamento, em que o dito meio de processamento é configurado para manter um valor de controle para indicar se as ditas instruções de tempo intensivo podem ser executadas; em que o dito meio de geração de exceção é configurado, em resposta a uma das ditas instruções de tempo intensivo, quando o dito valor de controle estiver em um primeiro estado que indica que as ditas instruções de tempo intensivo não podem ser executadas, para gerar uma primeira exceção para disparar o meio de processamento para suprimir a execução da dita uma das ditas instruções de tempo intensivo; e em que o dito meio de geração de exceção é configurado, em resposta a uma das ditas instruções de tempo intensivo, quando o dito valor de controle estiver em um segundo estado que indica que as ditas instruções de tempo intensivo podem ser executadas, para executar a dita uma das ditas instruções de tempo intensivo.
BREVE DESCRIÇÃO DOS DESENHOS
[0030] A presente técnica será descrita adicionalmente, a título de exemplo apenas, em relação às modalidades da mesma, da forma ilustrada nos desenhos anexos, nos quais: A figura 1 mostra esquematicamente uma representação hierárquica do software executado por um aparelho para processamento de informação no qual as presentes técnicas podem ser aplicadas; A figura 2 mostra esquematicamente um aparelho para processamento de informação de acordo com uma modalidade; A figura 3 mostra um exemplo de permissão / desabilitação da execução de instruções de tempo intensivo com base no estado de um valor de controle; A figura 4A mostra esquematicamente uma resposta a uma primeira exceção de acordo com uma modalidade; A figura 4B mostra esquematicamente uma resposta a uma primeira exceção de acordo com uma segunda modalidade; A figura 4C mostra esquematicamente uma resposta a uma primeira exceção de acordo com uma terceira modalidade; A figura 5 mostra esquematicamente um método de resposta a instruções de tempo intensivo de acordo com uma modalidade.
DESCRIÇÃO DE MODALIDADES
[0031] A figura 1 mostra esquematicamente software em execução em um sistema virtualizado que pode fazer uso das técnicas atualmente descritas.
[0032] O software é hierárquico e compreende um hipervisor 10 em execução em um nível de exceção EL2 (também referido como um nível de privilégio ou nível de execução), que gerencia inúmeros sistemas operacionais convidados em execução no nível de exceção EL1. O nível de exceção indica o grau de privilégio que é dado ao software em execução neste nível de exceção. Neste exemplo, o hipervisor executa em um mais alto nível de exceção que os sistemas operacionais convidados, e, então, o hipervisor tem mais privilégios que os sistemas operacionais convidados. Este exemplo em particular mostra três níveis de exceção (EL2, EL1 e EL0). Entretanto, será percebido que as técnicas aqui descritas são aplicáveis em um sistema que compreende qualquer número plural de níveis de exceção.
[0033] Os sistemas operacionais convidados incluem sistemas operacionais em tempo real 30 e sistemas operacionais ricos 50. Sistemas operacionais em tempo real são tipicamente desenhados para responder rapidamente a eventos detectados em vez de continuamente executar tarefas solicitadas por um usuário. Muitos dos eventos podem ser críticos, indicando que eles devem ser respondidos em um período de tempo para evitar falha catastrófica do sistema. Sistemas operacionais ricos também podem responder a eventos, mas são tipicamente não acionados pelos mesmos e, tipicamente, não lidam com eventos críticos de nenhuma maneira. Exemplos de sistemas operacionais ricos incluem aqueles que são bem conhecidos em ambientes domésticos, tais como "Windows" e "Linux". Por exemplo, um sistema operacional em tempo real pode controlar airbags ou freios em um carro, enquanto que um sistema operacional rico pode controlar um aparelho de som do carro.
[0034] Cada sistema operacional 30, 50 pode gerenciar um ou mais tarefas em tempo real ou não em tempo real 40. As tarefas operam no nível de exceção ainda mais baixo EL0.
[0035] Nesta modalidade, o hipervisor compartilha seus recursos entre os múltiplos sistemas operacionais convidados. Isto é, em qualquer momento, apenas um dos sistemas operacionais convidados está ativamente executando e outros sistemas operacionais devem esperar. A seleção do sistema operacional ativo e a determinação de qual sistema operacional deve ser executado a seguir são controladas pelo hipervisor.
[0036] Será percebido, portanto, que o desempenho de cada sistema operacional convidado é parcialmente determinado pelo comportamento dos outros sistemas operacionais convidados. Por exemplo, se um dos sistemas operacionais ricos 50 começar a execução de uma tarefa que é particularmente demorada e, portanto, ininterrompível, então, o hipervisor 10 pode não permitir que os sistemas operacionais em tempo real 30 a compartilhem o sistema de circuitos de processamento até que a instrução demorada tenha acabado de ser executada. Portanto, se os sistemas operacionais em tempo real estiverem esperando para responder a um evento crítico, então, eles devem esperar.
[0037] Na modalidade mostrada na figura 1, o hipervisor 10 define um valor de controle 20, que controla se permite-se que os sistemas operacionais convidados 30, 50 ou uma das tarefas 40 gerenciadas por estes sistemas operacionais convidados executem instruções de tempo intensivo, o que pode impedir que os sistemas operacionais em tempo real 30 respondam a eventos críticos em tempo real. Desta maneira, pela mudança de um estado do valor de controle, é possível inibir ou suprimir a execução de instruções de tempo intensivo para habilitar que eventos críticos em tempo real sejam tratados prontamente. O valor de controle 20 pode formar parte da memória 70, dos registros 90, do sistema de circuitos de processamento 60, ou pode ser um dispositivo integralmente separado.
[0038] A figura 2 mostra esquematicamente um aparelho para processamento de informação para implementar as presentes técnicas. Nesta modalidade, o sistema de circuitos de processamento 60 é provido para executar uma ou mais instruções. As uma ou mais instruções podem incluir instruções que são de tempo intensivo. Neste contexto, uma instrução de tempo intensivo pode ser uma instrução que exige uma pluralidade de ciclos de relógio do sistema de circuitos de processamento 60 para sua execução. Um ou mais tipos distintos de instruções podem ser predeterminados como instruções demoradas.
[0039] A resposta do sistema de circuitos de processamento 60 à execução tentada de uma instrução de tempo intensivo é dependente de um estado do valor de controle 20. Por exemplo, se o valor de controle 20 for definido no valor 0 ou falso, isto indica que instruções de tempo intensivo são permitidas. Inversamente, se o valor de controle for definido no valor 1 ou verdadeiro, então, isto indica que instruções de tempo intensivo não são permitidas. Será percebido pelos versados na técnica que estes valores podem, certamente, ser invertidos ou que outras representações podem ser possíveis. Por exemplo, o valor de controle pode representar um conjunto de condições nas quais permite-se que instruções de tempo intensivo sejam executadas.
[0040] Em resposta a uma instrução de tempo intensivo ser encontrada pelo sistema de circuitos de processamento 60 (por exemplo, em um estado de emissão ou um estágio de execução) quando o valor de controle 20 indicar que instruções de tempo intensivo são permitidas, o sistema de circuitos de processamento 60 irá executar esta instrução de tempo intensivo. Alternativamente, em resposta a uma instrução de tempo intensivo ser encontrada quando o valor de controle 20 indicar que instruções de tempo intensivo não são permitidas, o sistema de circuitos de geração de exceção 100 irá gerar uma primeira exceção (ou interrupção). A primeira exceção faz com que o sistema de circuitos de processamento 60 desative um sistema operacional ativo e, em vez disto, execute o hipervisor 10. O hipervisor 10 responde pela supressão da instrução de tempo intensivo, de forma que ela não seja executada. O hipervisor pode, então, tomar ação adicional para permitir o progresso à frente sem executar a instrução de tempo intensivo.
[0041] O sistema de circuitos de geração de exceção 100 pode gerar outras exceções, além da primeira exceção. Um exemplo de uma outra exceção que pode ser emitida é uma exceção de comutação de contexto, que faz com que o sistema de circuitos de processamento comute entre a execução dos diferentes sistemas operacionais. Uma exceção como esta pode ser gerada periodicamente com base no valor de um contador de ciclos 110.
[0042] Na modalidade mostrada na figura 2, o sistema de circuitos de geração de exceção 100 gera uma segunda exceção para controlar o sistema de circuitos de processamento 60 para inverter o valor de controle 20. Consequentemente, a execução de instruções de tempo intensivo pode ser mudada. O contador de ciclos 110 é usado para emitir periodicamente esta segunda exceção. Consequentemente, o sistema de circuitos de processamento 60 pode ser feito para periodicamente permitir ou reprovar instruções de tempo intensivo a serem emitidas, ou pode ser feito para alternar entre os dois estados em um dado período.
[0043] O aparelho para processamento de informação inclui adicionalmente uma memória 70 acessada por meio de uma unidade de proteção de memória (MPU) 80, que restringe acesso à memória 70. O aparelho para processamento de informação também compreende um conjunto de registros 90. Em outras modalidades, pode ser provida uma unidade de gerenciamento de memória (MMU) no lugar da, ou além da, MPU.
[0044] Instruções de tempo intensivo podem exigir uma pluralidade de ciclos de processamento do sistema de circuitos de processamento 60 a fim de ser executadas. Entretanto, em algumas modalidades, as instruções de tempo intensivo são um conjunto predefinido. Por exemplo, o conjunto predefinido pode incluir uma instrução de raiz quadrada com ponto flutuante e uma instrução de divisão. O conjunto predefinido também pode incluir instruções de múltiplas cargas não interrompíveis nas quais uma pluralidade de valores de dados armazenados na memória 70 são transferidos para os registros 90. Similarmente, a lista predefinida pode incluir instruções de múltiplos armazenamentos não interrompíveis, em que uma pluralidade de valores de dados armazenados nos registros 90 são transferidos para a memória 70. A MPU 80 pode indicar que uma instrução de múltiplas cargas ou múltiplos armazenamentos em particular não é interrompível. Isto pode ocorrer, por exemplo, pela definição de um bit em particular na MPU 80 em relação a uma faixa em particular de endereços de memória da memória 70. Isto pode ser realizado quando se lida com memória tipo dispositivo, de acordo com o que, leitura e gravação nas partes da memória que são diretamente mapeadas para um dispositivo de hardware controlam este dispositivo de hardware. Tais instruções devem ser não interrompíveis a fim de garantir que não surja uma situação na qual apenas um subconjunto de valores de dados é armazenado em, ou lidos a partir de, uma memória, o que pode resultar no dispositivo de hardware agir de uma maneira incorreta ou não determinística.
[0045] A lista de instruções predeterminada também pode incluir pelo menos uma única instrução - múltiplos dados (SIMD) predeterminada, tais instruções podendo ser usadas a fim de realizar um grande número de operações em paralelo em múltiplas peças de dados pela emissão de apenas uma única instrução. Por exemplo, uma única (SIMD) instrução pode ser usada para realizar uma multiplicação de matriz.
[0046] A figura 3 mostra esquematicamente o uso do valor de controle para controlar se instruções de tempo intensivo podem ser executadas.
[0047] No tempo t0, o valor de controle é definido em 0, indicando que instruções de tempo intensivo são permitidas.
[0048] No tempo t1, uma instrução de tempo intensivo é emitida. Já que, no tempo t1, o valor de controle é definido em 0, indicando que instruções de tempo intensivo são permitidas, permite-se que a instrução prossiga e a instrução é, portanto, executada pelo sistema de circuitos de processamento 60.
[0049] No tempo t2, o valor de controle é definido em 1, indicando que instruções de tempo intensivo não são permitidas. Instruções de tempo intensivo podem ser reprovadas no tempo t2 devido à proximidade de um evento crítico em tempo real esperado no tempo t4. Pela reprovação de instruções de tempo intensivo em íntima proximidade com o esperado evento crítico em tempo real, pode ser impedida a situação na qual uma resposta ao evento crítico em tempo real é atrasada em decorrência de tratamento uma instrução de tempo intensivo.
[0050] No tempo t3, uma instrução de tempo intensivo adicional é emitida. Já que, no tempo t3, o valor de controle é 1, indicando que instruções de tempo intensivo não são permitidas, não será permitido que a instrução de tempo intensivo seja executada e, em vez disto, uma primeira exceção será gerada pelo sistema de circuitos de geração de exceção 100 para fazer com que o sistema de circuitos de processamento 60 suprima a instrução de tempo intensivo.
[0051] Finalmente, no tempo t4, o esperado evento crítico em tempo real ocorre. Já que instruções de tempo intensivo foram reprovadas antes da ocorrência do evento crítico em tempo real, é improvável que quaisquer instruções de tempo intensivo estejam sendo processadas no tempo t4. Desta maneira, é possível que o evento crítico em tempo real seja respondido quase imediatamente, com pouco atraso.
[0052] A figura 4A mostra um primeiro exemplo no qual um sistema de circuitos de processamento 60 responde à primeira exceção gerada pelo sistema de circuitos de geração de exceção 100 em resposta a uma instrução de tempo intensivo ser emitida quando o valor de controle 20 indicar que tais instruções não são permitidas. Da forma mostrada na figura 4A, o sistema de circuitos de processamento 60 é configurado para ciclo entre execução de três diferentes sistemas operacionais OS1, OS2 e OS3. Execução ocorre em distintas fatias de tempo 130, com cada fatia de tempo sendo dedicada a um sistema operacional convidado em particular. A comutação de um sistema operacional para um outro (isto é, de uma fatia de tempo para uma outra) é referida como uma comutação de contexto. Antes da ocorrência de cada comutação de contexto, uma segunda exceção é gerada (indicada pelas linhas pontilhadas na figura 4A). A segunda exceção faz com que o sistema de circuitos de processamento 60 mude o valor armazenado no valor de controle 20, de maneira tal que instruções de tempo intensivo não sejam permitidas. Depois que a comutação de contexto tiver ocorrido, o valor de controle 20 é definido para permitir instruções de tempo intensivo uma vez mais.
[0053] Desta maneira, como pode-se ver, a partir da figura 4A, cada fatia de tempo 130 pode ser concebida como um primeiro período de tempo 140 no qual instruções de tempo intensivo são permitidas, e um segundo período de tempo 120 no qual instruções de tempo intensivo não são permitidas. A figura 4A mostra que o segundo período de tempo 120 é significativamente mais curto que o primeiro período de tempo 140. Por exemplo, a razão do primeiro período de tempo 140 pelo segundo período de tempo 120 pode ser 9:1. Consequentemente, instruções de tempo intensivo são, no geral, permitidas, exceto em que elas não são permitidas imediatamente antes de uma comutação de contexto ocorrer. Desta maneira, há muito pouco atraso no tratamento de cada comutação de contexto, já que é improvável que quaisquer instruções de tempo intensivo precisem completar antes da comutação de contexto poder ocorrer. Portanto, os três sistemas operacionais OS1, OS2 e OS3 executam em agendas regulares e permite-se que sejam executados em tempos determinísticos, com muito pouco, vários devido à comutação de contexto ser atrasada. Quando uma tentativa for feita para executar uma instrução de tempo intensivo, quando o valor de controle 20 indicar que tais instruções não são permitidas, o sistema de circuitos de geração de exceção 100 irá gerar uma primeira exceção, fazendo com que o hipervisor seja executado pelo processador 60. O hipervisor pode, então, responder em uma de diversas maneiras, da forma ilustrada pelas figuras 4A, 4B e 4C.
[0054] Na figura 4A, o sistema de circuitos de processamento 60 responde à primeira exceção pela supressão da execução da instrução de tempo intensivo e execução de nenhum dos sistemas operacionais OS1, OS2 ou OS3. Desta maneira, por um período 150 entre o encontro da instrução de tempo intensivo e a próxima comutação de contexto, software que forma parte do hipervisor pode ser executado, mas os sistemas operacionais convidados não podem.
[0055] A figura 4B é similar à figura 4A, mas mostra uma diferente resposta à ocorrência de uma primeira exceção no tempo t3. Neste exemplo, a instrução de tempo intensivo ainda é suprimida, mas em vez da não execução de nenhum dos sistemas operacionais OS1, OS2 e OS3, a operação de comutação de contexto prevista que ocorria brevemente é apresentada. Desta maneira, permite-se que o sistema operacional OS1 execute no início. Nesta modalidade, os recursos de processamento não são desperdiçados.
[0056] Entretanto, a natureza determinística do sistema muda, já que o próximo sistema operacional é feito para executar anteriormente ao que seria ordinariamente previsto. Portanto, pode ser mais simples esperar a próxima comutação de contexto, da forma mostrada na figura 4A, em vez de mudar as sincronizações de comutação de contexto.
[0057] A figura 4C é similar às figuras 4A e 4B. A instrução de tempo intensivo ainda é suprimida. Entretanto, em resposta à primeira exceção que ocorre no tempo t3, a execução do sistema operacional OS3 continua. Por exemplo, se a instrução de tempo intensivo ocorreu como parte de uma primeira tarefa sob OS3, OS3 pode ser capaz de continuar a execução de uma segunda tarefa diferente, em vez da primeira tarefa. O hipervisor, então, realiza alguma ação a fim de impedir a execução da instrução de tempo intensivo. Por exemplo, o hipervisor pode fazer com que o sistema operacional convidado emita sua própria comutação de contexto a fim de comutar uma tarefa que fez com que a instrução de tempo intensivo fosse executada e, em vez disto, executa uma diferente tarefa. Alternativamente, o hipervisor pode responder à instrução de tempo intensivo pela emissão de um erro ou exceção para indicar que a operação solicitada não pode ser atualmente realizada.
[0058] A figura 5 mostra esquematicamente um método de resposta a uma instrução de tempo intensivo de acordo com uma modalidade.
[0059] Na etapa S200, a próxima instrução é carregada. Na etapa S210, o sistema de circuitos de processamento 60 determina se a instrução carregada é uma instrução de tempo intensivo ou não. Se a instrução não for uma instrução de tempo intensivo, então, na etapa S220, a instrução é executada e o método retorna para a etapa S200. Entretanto, se, na etapa S210, for determinado que a instrução é uma instrução de tempo intensivo, então, na etapa S230, é verificado se o valor de controle indica que instruções de tempo intensivo são permitidas. Se for determinado que o valor de controle indica que instruções de tempo intensivo não são permitidas, então, na etapa S240, uma primeira exceção é gerada e, na etapa S250, a instrução de tempo intensivo é suprimida. O método, então, retorna para a etapa S200. Entretanto, se, na etapa S230, for determinado que instruções de tempo intensivo são permitidas, então, na etapa S260, a instrução de tempo intensivo é executada e o método retorna par a etapa S200.
[0060] Embora modalidades em particular tenham sido aqui descritas, será percebido que a técnica não é limitada às mesmas e que muitas modificações e adições às mesmas podem ser feitas no escopo da invenção. Por exemplo, várias combinações das características das seguintes reivindicações dependentes podem ser feitas com as características das reivindicações independentes sem fugir do escopo da presente invenção.

Claims (23)

1. Aparelho para processamento de informação, caracterizado pelo fato de que compreende: sistema de circuitos de processamento configurado para executar instruções que compreendem uma ou mais instruções de tempo intensivo e uma ou mais outras instruções que não são instruções de tempo extensivo; e sistema de circuitos de geração de exceção configurado para gerar pelo menos uma exceção para o sistema de circuitos de processamento, em que o sistema de circuitos de processamento é configurado para manter um valor de controle para indicar se as instruções de tempo intensivo podem ser executadas; em que o sistema de circuitos de geração de exceção é configurado, em resposta a uma das instruções de tempo intensivo, quando o valor de controle estiver em um primeiro valor que indica que as instruções de tempo intensivo não podem ser executadas, para gerar uma primeira exceção para disparar o sistema de circuitos de processamento para suprimir a execução da uma das instruções de tempo intensivo; e em que, em resposta a uma das instruções de tempo intensivo, a uma das instruções de tempo intensivo é permitida a ser executada quando o valor de controle é um segundo valor indicando que as instruções de tempo intensivo podem ser executadas; e em que em resposta a uma das outras instruções, a uma das outras instruções é permitida a ser executada quando o valor controle é o primeiro valor e quando o valor de controle é o segundo valor.
2. Aparelho para processamento de informação de acordo com a reivindicação 1, caracterizado pelo fato de que as instruções de tempo intensivo compreendem instruções que exigem múltiplos ciclos de processamento do sistema de circuitos de processamento para executar.
3. Aparelho para processamento de informação de acordo com qualquer uma das reivindicações1 ou 2, caracterizado pelo fato de que as instruções de tempo intensivo compreendem instruções que não podem ser interrompidas.
4. Aparelho para processamento de informação de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que as instruções de tempo intensivo compreendem pelo menos uma de: uma instrução de raiz quadrada com ponto flutuante, uma instrução de divisão, uma instrução de múltiplas cargas não interrompíveis, uma instrução de múltiplos armazenamentos não interrompíveis e pelo menos uma instrução tipo instrução única - múltiplos dados (SIMD) predeterminada.
5. Aparelho para processamento de informação de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o sistema 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.
6. Aparelho para processamento de informação de acordo com a reivindicação 5, caracterizado pelo fato de que o segundo software é configurado para controlar o sistema de circuitos de processamento para mudar o valor de controle.
7. Aparelho para processamento de informação de acordo com qualquer uma das reivindicações 5 ou 6, caracterizado pelo fato de que o sistema de circuitos de geração de exceção é configurado para gerar a primeira exceção em resposta a uma das instruções de tempo intensivo do primeiro SOFTWARE.
8. Aparelho para processamento de informação de acordo com qualquer uma das reivindicações 5 a 7, caracterizado pelo fato de que o sistema de circuitos de geração de exceção é configurado para apenas gerar a primeira exceção em resposta a uma das instruções de tempo intensivo de SOFTWARE em execução em um nível de privilégio mais baixo que o segundo nível de privilégio.
9. Aparelho para processamento de informação de acordo com qualquer uma das reivindicações 5 a 8, caracterizado pelo fato de que o primeiro SOFTWARE compreende um ou mais sistemas operacionais convidados; em que o segundo SOFTWARE compreende um hipervisor.
10. Aparelho para processamento de informação de acordo com qualquer uma das reivindicações 1 a 9, caracterizado pelo fato de que o sistema de circuitos de processamento é configurado para mudar o valor de controle em resposta a um ou mais eventos predeterminados.
11. Aparelho para processamento de informação de acordo com a reivindicação 10, caracterizado pelo fato de que os um ou mais eventos predeterminados incluem uma comutação de contexto.
12. Aparelho para processamento de informação de acordo com a reivindicação 11, caracterizado pelo fato de que, em resposta à comutação de contexto, o sistema de circuitos de processamento é configurado para mudar o valor de controle para o segundo estado.
13. Aparelho para processamento de informação de acordo com qualquer uma das reivindicações 10 a 12, caracterizado pelo fato de que os um ou mais eventos predeterminados incluem uma segunda exceção; e em que o sistema de circuitos de geração de exceção é configurado para gerar a segunda exceção um primeiro período de tempo predeterminado antes de um evento esperado.
14. Aparelho para processamento de informação de acordo com a reivindicação 13, caracterizado pelo fato de que o evento esperado é uma comutação de contexto e a segunda exceção ocorre um segundo período de tempo predeterminado depois de uma comutação de contexto prévia.
15. Aparelho para processamento de informação de acordo com a reivindicação 14, caracterizado pelo fato de que o primeiro período de tempo predeterminado é menor que o segundo período de tempo predeterminado.
16. Aparelho para processamento de informação de acordo com a reivindicação 15, caracterizado pelo fato de que uma razão do primeiro período de tempo predeterminado pelo segundo período de tempo predeterminado é 1:9.
17. Aparelho para processamento de informação de acordo com qualquer uma das reivindicações 13 a 16, caracterizado pelo fato de que, em resposta à segunda exceção, o sistema de circuitos de processamento é configurado para mudar o valor de controle para o primeiro estado.
18. Aparelho para processamento de informação de acordo com qualquer uma das reivindicações 5 a 9, caracterizado pelo fato de que o sistema de circuitos de processamento é configurado para comutar para execução do segundo SOFTWARE em resposta à primeira exceção.
19. Aparelho para processamento de informação de acordo com a reivindicação 18, caracterizado pelo fato de que o sistema de circuitos de processamento é configurado para executar um de uma pluralidade de primeiros SOFTWARES no primeiro nível de privilégio.
20. Aparelho para processamento de informação de acordo com a reivindicação 19, caracterizado pelo fato de que, em resposta à primeira exceção, o segundo SOFTWARE é configurado para controlar o sistema de circuitos de processamento para mudar um primeiro SOFTWARE ativo da pluralidade de primeiros SOFTWARES.
21. Aparelho para processamento de informação de acordo com a reivindicação 20, caracterizado pelo fato de que, em resposta à primeira exceção, o sistema de circuitos de processamento é configurado para não executar a pluralidade de primeiros SOFTWARES até uma subsequente comutação de contexto.
22. Aparelho para processamento de informação de acordo com qualquer uma das reivindicações 19 a 21, caracterizado pelo fato de que, em resposta à primeira exceção, o sistema de circuitos de processamento é configurado para continuar a execução de um primeiro SOFTWARE ativo da pluralidade sem executar a uma das instruções de tempo intensivo.
23. Método implementado por máquina para um aparelho para processamento de informação, caracterizado pelo fato de que o método compreende as etapas de: cutar uma ou mais instruções que compreendem uma ou mais instruções de tempo intensivo e uma ou mais instruções que não são instruções de tempo intensivo; ter um valor de controle para indicar se as instruções de tempo intensivo podem ser executadas; em resposta a uma das instruções de tempo intensivo, quando o valor de controle indicar que as instruções de tempo intensivo não podem ser executadas, gerar uma primeira exceção para suprimir a execução da uma das instruções de tempo intensivo; e em resposta a uma das instruções de tempo intensivo, quando o valor de controle indicar que as instruções de tempo intensivo podem ser executadas, permitindo a execução da uma das instruções de tempo intensivo; em resposta a uma das outras instruções, permitir a execução de uma das outras instruções quando o valor de controle é o primeiro valor e quando o valor de controle é o segundo valor.
BR112016002997-6A 2013-08-23 2014-07-07 Aparelho para processamento de informação, e, método implementado por máquina BR112016002997B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1315109.7 2013-08-23
GB1315109.7A GB2517494B (en) 2013-08-23 2013-08-23 Handling time intensive instructions
PCT/GB2014/052053 WO2015025127A1 (en) 2013-08-23 2014-07-07 Handling time intensive instructions

Publications (2)

Publication Number Publication Date
BR112016002997A2 BR112016002997A2 (pt) 2017-08-01
BR112016002997B1 true BR112016002997B1 (pt) 2022-05-31

Family

ID=49355839

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016002997-6A BR112016002997B1 (pt) 2013-08-23 2014-07-07 Aparelho para processamento de informação, e, método implementado por máquina

Country Status (10)

Country Link
US (1) US10963250B2 (pt)
EP (1) EP3036629B1 (pt)
JP (1) JP6427575B2 (pt)
KR (1) KR102235142B1 (pt)
CN (1) CN105474174B (pt)
BR (1) BR112016002997B1 (pt)
GB (1) GB2517494B (pt)
IL (1) IL244199B (pt)
TW (1) TWI654561B (pt)
WO (1) WO2015025127A1 (pt)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2517493A (en) * 2013-08-23 2015-02-25 Advanced Risc Mach Ltd Handling access attributes for data accesses
US9367322B1 (en) 2015-07-27 2016-06-14 International Business Machines Corporation Age based fast instruction issue
US10942509B2 (en) 2018-01-19 2021-03-09 Ge Aviation Systems Llc Heterogeneous processing in unmanned vehicles
US11029985B2 (en) 2018-01-19 2021-06-08 Ge Aviation Systems Llc Processor virtualization in unmanned vehicles

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058410A (en) 1996-12-02 2000-05-02 Intel Corporation Method and apparatus for selecting a rounding mode for a numeric operation
US6427202B1 (en) * 1999-05-04 2002-07-30 Microchip Technology Incorporated Microcontroller with configurable instruction set
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US7181600B1 (en) * 2001-08-02 2007-02-20 Mips Technologies, Inc. Read-only access to CPO registers
US7779239B2 (en) * 2004-07-28 2010-08-17 Intel Corporation User opt-in processor feature control capability
US7590823B1 (en) * 2004-08-06 2009-09-15 Xilinx, Inc. Method and system for handling an instruction not supported in a coprocessor formed using configurable logic
JP5010164B2 (ja) * 2006-03-31 2012-08-29 株式会社日立製作所 サーバ装置及び仮想計算機の制御プログラム
US7797681B2 (en) 2006-05-11 2010-09-14 Arm Limited Stack memory selection upon exception in a data processing system
US20080072019A1 (en) * 2006-09-19 2008-03-20 Avinash Sodani Technique to clear bogus instructions from a processor pipeline
US20090037918A1 (en) * 2007-07-31 2009-02-05 Advanced Micro Devices, Inc. Thread sequencing for multi-threaded processor with instruction cache
US8397235B2 (en) 2008-10-07 2013-03-12 Futurewei Technologies, Inc. User tolerance based scheduling method for aperiodic real-time tasks
JP5353227B2 (ja) 2008-12-24 2013-11-27 富士通株式会社 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。
US8429648B2 (en) * 2009-05-28 2013-04-23 Red Hat, Inc. Method and apparatus to service a software generated trap received by a virtual machine monitor
JP4965638B2 (ja) * 2009-12-25 2012-07-04 インターナショナル・ビジネス・マシーンズ・コーポレーション タスクの切り換えを制御するシステムおよび方法
CN101826000A (zh) * 2010-01-29 2010-09-08 北京龙芯中科技术服务中心有限公司 流水线微处理器的中断响应确定方法、装置及微处理器核
CN101866281B (zh) * 2010-06-13 2013-05-22 清华大学 一种多周期指令执行方法和装置
GB2482701C (en) * 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling
GB2489000B (en) * 2011-03-14 2019-09-11 Advanced Risc Mach Ltd Diagnosing code using single step execution
US9146767B2 (en) * 2012-06-19 2015-09-29 Raytheon Company Secure cloud hypervisor monitor

Also Published As

Publication number Publication date
GB2517494B (en) 2021-02-24
JP2016531363A (ja) 2016-10-06
IL244199B (en) 2019-06-30
IL244199A0 (en) 2016-04-21
JP6427575B2 (ja) 2018-11-21
KR102235142B1 (ko) 2021-04-02
GB2517494A (en) 2015-02-25
EP3036629B1 (en) 2021-06-09
US20160202977A1 (en) 2016-07-14
CN105474174A (zh) 2016-04-06
WO2015025127A1 (en) 2015-02-26
EP3036629A1 (en) 2016-06-29
GB201315109D0 (en) 2013-10-09
BR112016002997A2 (pt) 2017-08-01
TW201508636A (zh) 2015-03-01
KR20160045699A (ko) 2016-04-27
TWI654561B (zh) 2019-03-21
CN105474174B (zh) 2020-02-28
US10963250B2 (en) 2021-03-30

Similar Documents

Publication Publication Date Title
US10936303B2 (en) Secure IoT device update
US7925923B1 (en) Migrating a virtual machine in response to failure of an instruction to execute
JP5969550B2 (ja) パフォーマンスカウンタの仮想化
KR100726317B1 (ko) 게스트 소프트웨어의 특권 레벨에 기초한 가상 머신모니터로의 전이
US10402567B2 (en) Secure boot for multi-core processor
CN101364184A (zh) 在虚拟机环境中检测自旋循环
US20180285600A1 (en) Connected secure iot processor
EP3646224B1 (en) Secure key storage for multi-core processor
US20180165448A1 (en) Multiple cores with hierarchy of trust
US20200150996A1 (en) Dynamic control of halt polling based on receiving a monitoring instruction executed by a guest
Mollison et al. Bringing theory into practice: A userspace library for multicore real-time scheduling
BR112016002997B1 (pt) Aparelho para processamento de informação, e, método implementado por máquina
KR20170131366A (ko) 공유 리소스 액세스 제어 방법 및 장치
JP6679419B2 (ja) メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラ
EP4080361A1 (en) Virtual mode execution manager
US11907056B2 (en) Runtime fault detection testing in data processing system
Im et al. On-demand virtualization for live migration in bare metal cloud
KR20190077235A (ko) 반도체 장치
US20240086219A1 (en) Transmitting interrupts from a virtual machine (vm) to a destination processing unit without triggering a vm exit

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 07/07/2014, OBSERVADAS AS CONDICOES LEGAIS