BR102016004711B1 - Processo de sequenciamento de comandos de execução para executar uma pluralidade de lotes de instruções por uma unidade de tratamento, meio legível por computador não transitório, processo de execução de lotes de instruções em uma unidade de tratamento, e, circuito integrado - Google Patents

Processo de sequenciamento de comandos de execução para executar uma pluralidade de lotes de instruções por uma unidade de tratamento, meio legível por computador não transitório, processo de execução de lotes de instruções em uma unidade de tratamento, e, circuito integrado Download PDF

Info

Publication number
BR102016004711B1
BR102016004711B1 BR102016004711-0A BR102016004711A BR102016004711B1 BR 102016004711 B1 BR102016004711 B1 BR 102016004711B1 BR 102016004711 A BR102016004711 A BR 102016004711A BR 102016004711 B1 BR102016004711 B1 BR 102016004711B1
Authority
BR
Brazil
Prior art keywords
instructions
batch
batches
instantaneous value
counter
Prior art date
Application number
BR102016004711-0A
Other languages
English (en)
Other versions
BR102016004711A2 (pt
Inventor
Mikael Deschamps
Gilles Saint-Aubin
Original Assignee
Safran Aerotechnics Sas
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 Safran Aerotechnics Sas filed Critical Safran Aerotechnics Sas
Publication of BR102016004711A2 publication Critical patent/BR102016004711A2/pt
Publication of BR102016004711B1 publication Critical patent/BR102016004711B1/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
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

PROCESSO DE SEQUENCIAMENTO DE COMANDOS DE EXECUÇÃO, PROCESSO DE EXECUÇÃO, PROGRAMA DE COMPUTADOR E CIRCUITO INTEGRADO. A invenção se refere a um processo de sequenciamento de comando de execução de N lotes de instruções; com N inteiro natural superior ou igual a dois; o dito processo sendo executado por uma unidade de comando própria para receber periodicamente interrupções temporais e para gerar comandos de execução de lote de instruções a executar, a dita unidade de comando compreendendo pelo menos um contador principal. O processo compreende as etapas seguintes: a) inicializar (34) o contador principal; b) incrementar (39) o contador principal, com a recepção (38) de uma interrupção temporal (IT); c) gerar (40) um comando de execução de um lote de instruções a executar, o dito lote de instruções sendo escolhido em função de um valor instantâneo p do contador principal; d) repetir as etapas a) a d).

Description

[0001] A presente invenção se situa no domínio dos processos de sequenciamento de comando de execução de tarefas. Esses processos são geralmente chamados de sequenciadores.
[0002] A presente invenção se refere também a um programa de execução de lotes de instruções, a um programa de computador e a um circuito integrado.
[0003] Esse processo de execução, esse processo de sequenciamento, esse programa de computador e esse circuito integrado podem, por exemplo, ser utilizados no domínio aeronáutico.
[0004] Os processos de sequenciamento são estabelecidos para gerir tarefas predefinidas de um programa principal, por exemplo, um programa de gestão de potência elétrica de um avião. Esses processos são desenvolvidos especificamente para o programa que eles vão gerir temporalmente. Janelas temporais são atribuídas à execução de cada tarefa do programa principal. O tempo de duração de cada janela temporal é determinado em função da carga de software e dos tempos de latência de cada tarefa. Ele é fixado uma vez que o processo de sequenciamento foi programado. No entanto, quando o construtor deseja acrescentar a esse programa principal uma funcionalidade suplementar ou um módulo específico, por exemplo, para adaptar o programa principal a uma gama de aviões ou mais simplesmente para responder a um comando específico de um cliente, o conjunto do programa de sequenciamento deve ser de novo desenvolvido e programado para levar em consideração essa funcionalidade suplementar. Esse desenvolvimento leva tempo e é custoso.
[0005] O objetivo da presente invenção é propor um processo de sequenciamento evolutivo, quer dizer um processo no qual é sempre possível acrescentar um comando de execução para uma nova funcionalidade sem ter necessidade de reprogramar o conjunto do processo de sequenciamento.
[0006] Com essa finalidade, a invenção tem como objeto um processo de sequenciamento de comando de execução de N lotes de instruções; com N inteiro natural superior ou igual a dois; o dito processo sendo executado por uma unidade de comando própria para receber periodicamente interrupções temporais e para gerar comandos de execução de lote de instruções a executar, a dita unidade de comando compreendendo pelo menos um contador principal, caracterizado pelo fato de que o processo compreende as etapas seguintes: a) inicializar o contador principal; b) incrementar o contador principal, com a recepção de uma interrupção temporal; c) gerar um comando de execução de um lote de instruções a executar, o dito lote de instruções sendo escolhido em função de um valor instantâneo p do contador principal; d) repetir as etapas a) a d).
[0007] Vantajosamente, esse processo de sequenciamento é configurado em função das necessidades em carga de software e em latência do programa principal. A adição de um comando de execução de um novo lote de instruções é feita simplesmente e rapidamente sem impacto sobre o sequenciamento dos lotes de instruções já existentes.
[0008] Vantajosamente, esse processo de sequenciamento apresenta uma estrutura padrão. Ele pode se adaptar a diferentes necessidades de carga de software e de latência.
[0009] Vantajosamente, esse processo de sequenciamento é simples de programar. Além disso, esse processo permite adicionar simplesmente uma nova tarefa a um programa principal no decorrer do desenvolvimento desse programa principal.
[0010] De acordo com modos especiais de realização, o processo de sequenciamento compreende uma ou várias das características seguintes:
[0011] - a dita unidade de comando compreende uma memória que estoca um limite predefinido e um contador secundário e no qual cada lote de instruções é identificado por um número inteiro superior ou igual a zero chamado de posição, os valores da dita posição sendo compreendidos entre Rmin e Rmax, a etapa de geração compreendendo as etapas seguintes:
[0012] inicializar o contador secundário;
[0013] ii) calcular uma variável V em função do valor instantâneo p do contador principal e de um valor instantâneo s do contador secundário;
[0014] iii) determinar se a variável calculada V é um inteiro relativo; • se a dita variável calculada V é um inteiro relativo:
[0015] - comparar o valor instantâneo s do contador secundário com o limite predefinido;
[0016] - quando o valor instantâneo s do contador secundário é inferior ao limite predefinido, gerar o valor instantâneo s do contador secundário para identificar a posição do lote de instruções a executar; • se a variável calculada V não é um inteiro relativo, incrementar o contador secundário s e repetir as etapas ii) e iii).
[0017] - o processo volta para a etapa a), quando o valor instantâneo s do contador secundário é superior ao limite predefinido.
[0018] - a etapa de cálculo ii) da variável V é realizada a partir da fórmula mencionada abaixo: V = (p - 2s) / (2 x 2s)
[0019] na qual p é o valor instantâneo do contador principal e s é o valor instantâneo do contador secundário.
[0020] - os lotes de instrução são estocados em um a memória de trabalho, os ditos lotes de instruções sendo destinados a ser executados periodicamente por uma unidade de tratamento de acordo com períodos diferentes uns dos outros, o processo compreendendo uma etapa de identificação, prévia à etapa de inicialização a), no decorrer da qual cada lote de instruções é identificado pro uma posição, a dita posição sendo atribuída em função do período de execução desejado para cada lote de instruções, a posição menor sendo atribuída ao lote de instruções que tem o menor período de execução desejado.
[0021] - o dito limite predefinido é superior ao número total N de lotes de instruções a executar, o dito processo compreendendo por outro lado uma etapa de identificação de um lote de instruções suplementar a executar por um número inteiro superior à posição máxima Rmax que identifica um lote de instruções já registrado na dita memória de trabalho, e uma etapa de registro na memória de trabalho (9) de um lote de instruções suplementares a executar.
[0022] - o dito limite predefinido é igual a número total N de lotes de instruções a executar.
[0023] - O processo compreende uma etapa de modificação do período definido entre a recepção de duas interrupções temporais consecutivas.
[0024] - O processo compreende por outro lado uma etapa de comparação do valor instantâneo p do contador principal com 2Rmax+1, • se o dito valor instantâneo p do contador principal é inferior a 2Rmax+1, o processo volta para a etapa a). • se o dito valor instantâneo p do contador principal é superior a 2Rmax+1, o contador principal é incrementado de uma unidade e o processo volta para a etapa b).
[0025] A invenção também se refere a um programa informático, caracterizado pelo fato de que ele compreende instruções para executar o processo de acordo com as características mencionadas acima, quando elas são executadas por uma unidade de comando.
[0026] A invenção se refere, além disso, a um processo de execução de pelo menos N lotes de instruções registrados em uma memória de trabalho com N inteiro natural superior ou igual a dois; cada lote de instrução sendo identificado por um número inteiro superior ou igual a zero, chamado de posição; o dito processo sendo executado por uma unidade de tratamento conectada à dita memória de trabalho,
[0027] caracterizado pelo fato de que os lotes de instruções são executados periodicamente; o período de um lote de instrução de posição i é igual a duas vezes o período de um lote de instrução de posição i-1, para todo inteiro natural I compreendido entre 1 e N.
[0028] A invenção tem também como objeto um circuito integrado que compreende:
[0029] - um gerador de interrupções próprio para gerar periodicamente interrupções temporais,
[0030] - uma unidade de comando própria para recepcionar as ditas interrupções temporais,
[0031] - uma memória de trabalho que contém N lotes de instruções, cada lote de instruções sendo identificado por um número inteiro superior ou igual a zero; chamado de posição;
[0032] caracterizado pelo fato de que a dita unidade de comando é própria para executar o processo de sequenciamento de comando de execução de lotes de instruções mencionado acima.
[0033] O circuito integrado compreende por outro lado uma unidade de tratamento conectada à dita memória de trabalho e à unidade de comando, caracterizado pelo fato de que a dita unidade de tratamento é própria para executar o processo de comando de execução dos lotes de instruções mencionado acima.
[0034] A invenção será melhor compreendida com a leitura da descrição que vai se seguir, dada unicamente a título de exemplo e feita fazendo-se referência às figuras nas quais:
[0035] - a figura 1 é uma vista esquemática de um exemplo de circuito integrado de acordo com a presente invenção;
[0036] - a figura 2 é um diagrama que representa uma parte das etapas do processo de sequenciamento de acordo com a invenção assim como uma etapa do processo de execução de acordo com a invenção;
[0037] - a figura 3 é um diagrama que representa um detalhe de uma etapa do processo de sequenciamento ilustrado na figura 2;
[0038] - as figuras 4 e 5 representam um exemplo de implementação do processo de sequenciamento de acordo com a invenção, no qual quatro lotes de instruções são executados; em especial: • a figura 4 é uma gráfico que representa as janelas temporais atribuídas à execução de quatro lotes de instruções; • a figura 5 é um gráfico que representa as interrupções de interrupções temporais geradas para obter as janelas temporais ilustradas na figura 4;
[0039] - a figura 6 é um diagrama que representa as etapas do processo de sequenciamento de acordo com a invenção que permite acrescentar o sequenciamento de um lote de instruções suplementar;
[0040] - a figura 7 e um diagrama que representa uma etapa do processo de sequenciamento de acordo com a invenção no decorrer da qual o tempo de duração das janelas temporais é modificado; e
[0041] - a figura 8 é um diagrama que ilustra etapas de uma variante de realização do processo de sequenciamento de acordo com a invenção.
[0042] O processo de execução de lotes de instruções e o processo de sequenciamento de comandos de acordo com a invenção são executados por um circuito integrado 2 representado na figura 1. Esse circuito integrado 2 compreende um gerador de interrupções 4 próprio para gerar periodicamente interrupções temporais IT, uma unidade de comando 6 conectada ao gerador de interrupções temporais 4, uma unidade de tratamento 7 conectada à unidade de comando 6 e uma memória de trabalho 9 conectada à unidade de tratamento 7.
[0043] O gerador de interrupções temporais 4 compreende um relógio e um gestor de interrupções não representados. Ele é próprio para gerar uma interrupção temporal IT, por exemplo, a cada 50 μs ou a cada 1 ms.
[0044] O gerador de interrupções temporais 4 pode compreender um elemento de comando 10 que permite fazer variar a duração entre as interrupções temporais IT.
[0045] A memória de trabalho 9 compreende N lotes de instruções. Cada lote de instruções é identificado por um número inteiro natural superior ou igual a zero, chamado de posição R. Os valores da dita posição são compreendidos entre uma posição mínima Rmin e uma posição máxima Rmax. No exemplo de realização representado nas figuras 1 a 5, os números inteiros que constituem as posições R são números sucessivos. Eles começam em 0 e se terminam em N-1. Assim, nesse exemplo, a memória de trabalho 9 compreende quatro lotes de instruções 140, 141, 142, 143 cada um deles associado a uma posição entre as posições 0, 1, 2 e 3.
[0046] A unidade de comando 6 compreende uma memória de comando 8 que contém instruções para executar o processo de sequenciamento de acordo com a presente invenção. Essas instruções constituem um microprograma geralmente chamado de sequenciador 12. Esse sequenciador 12 compreende um limite M predefinido por um operador no decorrer de uma etapa de configuração. Esse limite predefinido M pode ser modificado pro um operador depois do desenvolvimento do sequenciador.
[0047] A unidade de comando 6 é própria para recepcionar as interrupções temporais IT que provêm do gerador de interrupções temporais 4 e para executar o sequenciador 12 para gerar, em uma ordem predefinida e a momentos predefinidos, comandos de execução dos lotes de instruções 140, 141, 142, 143.
[0048] A unidade de comando 6 compreende um contador principal 18 próprio para incrementar um valor instantâneo p para contar o número de interrupções temporais IT recepcionadas, e um contador secundário 16 próprio para incrementar um valor de cálculo intermediário s chamado abaixo de valor instantâneo s.
[0049] A unidade de comando 6 é adaptada para gerar um comando de execução de um lote de instruções 140, 141, 142, 143 escolhido entre os lotes de instruções registrados na memória de trabalho 9, com a recepção de certas interrupções temporárias IT a partir dos valores instantâneos s e p como descrito abaixo.
[0050] A unidade de tratamento 7 é própria para receber o comando gerado pela unidade de comando 6 e para desencadear a execução de um lote de instruções 140, 141, 142, 143.
[0051] A unidade de comando 6 e a unidade de tratamento 7 são, por exemplo, constituídas por um ou vários Asic, processador de cálculo ou DMA.
[0052] Em variante, a unidade de comando 6, a unidade de tratamento 7, a memória de comando 8 e a memória de trabalho 9 são constituídas por um processador.
[0053] Em variante, as posições não são números sucessivos. Em um tal caso, as janelas temporais no decorrer das quais nenhum lote de instruções é executado, são geradas para a ou as posições que faltam. Em variante, o valor das posições não começa em zero.
[0054] Em variante, o limite predefinido M é igual ao número N de lotes de instruções registrado na memória de trabalho 9. Nesse caso, a rapidez da execução do processo de sequenciamento é acelerada. Mas, o limite predefinido M deve ser modificado em caso de registro de um novo lote de instruções na memória de trabalho 9.
[0055] Em referência à figura 2, o processo de sequenciamento de acordo com a invenção começa por uma etapa prévia de configuração 32 no decorrer da qual um operador cria os lotes de instruções 140, 141, 142, 143 a partir do conjunto das instruções das quais ele deve planejar a execução.
[0056] As instruções a executar são distribuídas em lotes em função da carga de software exigida, do tempo de duração de execução das instruções e da latência.
[0057] O operador define também um limite, dito limite predefinido M. Esse limite predefinido M é igual ao número máximo de lotes de instruções que poderia ser executado pela unidade de tratamento 7. Esse limite é, por exemplo, igual ao número de lotes de instruções registrado na memória de trabalho 9, quer dizer N, adicionado do número de novas funcionalidades que poderiam, em caso de necessidade ser acrescentadas ao programa principal e que seria preciso sequenciar.
[0058] No decorrer de uma etapa 33, cada lote de instruções 140, 141, 142, 143 é identificado por um número inteiro natural superior a zero, abaixo chamado de posição R. Essa identificação é realizada considerando-se o período no qual o lote de instruções deve ser executado. O número inteiro que tem o valor menor é atribuído ao lote de instruções que deve ser executado com o menor período. Os lotes de instruções identificados por sua posição são registrados na memória de trabalho 9.
[0059] No decorrer de uma etapa 34, o contador principal 18 é inicializado em zero.
[0060] Quando a unidade de comando 6 recepciona uma interrupção temporal, no decorrer de uma etapa 38, ela é desviada da tarefa que ela está executando e ela incrementa, no decorrer de uma etapa 39, o contador principal 18 de uma unidade.
[0061] No decorrer de uma etapa 40, a unidade de comando 6 pode eventualmente gerar um comando que identifica um lote de instruções a executar. A etapa 40 é descrita em detalhe abaixo em ligação com a figura 3.
[0062] Esse comando é transmitido à unidade de tratamento 7 que seleciona, na memória de trabalho 9, o lote de instruções identificado por uma posição R igual ao número inteiro recebido da unidade de comando 6 e o executa, no decorrer de uma etapa 52. Como explicitado ulteriormente, esse número inteiro é o valor instantâneo s proveniente do contador secundário. A execução desse lote de instruções estará terminada quando a unidade de comando 6 recepcionar uma nova interrupção temporal.
[0063] Quando a unidade de comando 6 não gera comando no decorrer da etapa 40, o processo de acordo com a invenção retorna para a etapa 38 no decorrer da qual ele espera a recepção de uma nova interrupção temporal. Nesse caso, não há lote de instruções elegível para a interrupção temporal IT. A unidade de comando 6 não transmite nenhum comando de execução de um lote de instruções para essa interrupção temporal. Nenhum lote de instruções é desencadeado por essa interrupção temporal.
[0064] A etapa 40 de geração ou de não geração de um comando de execução compreende subetapas 41 a 50 ilustradas na figura 3.
[0065] No decorrer de uma subetapa 41, o contador secundário 16 é inicializado em zero.
[0066] No decorrer de uma subetapa 42, a unidade de comando 6 calcula uma variável V de acordo com a fórmula abaixo: V = (p - 2s) / (2 x 2s),
[0067] na qual p é o valor instantâneo do contador principal 18 e s é o valor instantâneo do contador secundário 16.
[0068] No decorrer de uma subetapa 44, a unidade de comando 6 verifica se a variável calculada V é um interior relativo.
[0069] Se a variável calculada V não for um inteiro relativo, o processo de acordo com a invenção prossegue por uma subetapa 46 no decorrer da qual o contador secundário 16 é incrementado de uma unidade. E depois, o processo retorna à subetapa 42, no decorrer de uma subetapa 43.
[0070] Se a variável calculada V for um inteiro relativo, a unidade de comando 6 verifica, no decorrer de uma subetapa 48, se o valor instantâneo s do contador secundário é inferior ao limite predefinido M.
[0071] Se o valor instantâneo s do contador secundário for inferior ao limite predefinido M, a unidade de comando 6 gera, no decorrer de uma subetapa 50, um comando de execução de um lote de instruções. Esse comando contém o valor instantâneo s do contador secundário 16. Esse valor instantâneo s identifica a posição R do lote de instruções que será executado pela unidade de tratamento 7. Esse valor instantâneo s é transmitido à unidade de tratamento 7. Assim, o processo de sequenciamento de acordo com a invenção atribui à interrupção temporal IT recepcionada no decorrer da etapa 38, o lote de instruções identificado pelo valor instantâneo s gerado pela unidade de comando 6.
[0072] Finalmente, a unidade de comando 6 retorna à etapa 38 no decorrer da qual a unidade de comando 6 espera a próxima interrupção temporal IT.
[0073] Se, no decorrer da subetapa 48, o valor instantâneo s do contador secundário é superior ao limite predefinido M, o contador principal 18 é inicializado no decorrer da subetapa 49.
[0074] E depois, o processo de acordo com a invenção retorna para a etapa 38. A unidade de comando 6 está à espera de uma nova interrupção temporal IT.
[0075] Se o operador deseja acrescentar uma nova funcionalidade ao programa de computador principal, a parte de programa (subrotina) que gera essa nova funcionalidade constituirá um lote de instruções suplementar.
[0076] No decorrer de uma etapa 54, ilustrada na figura 6, um operador identifica o lote de instruções suplementares por uma nova posição. Essa nova posição é igual à posição máxima Rmax já atribuída a um lote de instruções adicionada de uma unidade. Essa nova posição deve ser inferior ou igual ao limite predefinido M. Se esse não for o caso, o operador pode modificar o limite predefinido M.
[0077] No decorrer de uma etapa 56, o operador registra o lote de instruções suplementares na memória de trabalho 9.
[0078] Depois da adição de uma funcionalidade suplementar, o processo de sequenciamento de acordo com a invenção é classicamente executado. Ele começa então pela etapa 34 de inicialização do contador principal 18.
[0079] O operador pode, se ele o desejar, modificar o tempo de duração D das janelas temporais no decorrer das quais os lotes de instruções são executados. Para isso, o operador modifica, no decorrer de uma etapa 58, o tempo de duração D entre a recepção de duas interrupções temporais IT por comando do elemento de comando 10 do gerador de interrupções. Essa modificação acarreta uma modificação do tempo de duração D das janelas temporais.
[0080] Depois de modificação desse tempo de duração D, o processo de sequenciamento de acordo com a invenção é classicamente executado. Ele começa pela etapa 34 de inicialização do contador principal 18.
[0081] A figura 4 representa um exemplo de janelas temporais atribuídas à execução dos quatro lotes de instruções ilustrados na figura 1 utilizando-se o processo de sequenciamento de acordo com a invenção. As janelas temporais atribuídas aos lotes de instruções têm todas elas o mesmo tempo de duração D. Esse tempo de duração D corresponde ao tempo de duração entre a geração de duas interrupções temporais IT sucessivas, como ilustrado na figura 5.
[0082] O primeiro lote de instruções 140 é executado em todas as janelas temporais 22. O segundo lote de instruções 141 é executado em todas as janelas temporais 24. O terceiro lote de instruções 142 é executado em todas as janelas temporais 26. O quarto lote de instruções 143 é executado em todas as janelas temporais 28. O período de um lote de instruções é definido no presente pedido de patente como o tempo entre o início da execução de um lote de instruções e o início da execução seguinte desse mesmo lote de instruções. O período do lote de instruções que tem a menor posição Rmin é designado abaixo pela referência P0.
[0083] Como visível na figura 4, o período de execução de um lote de instruções é um múltiplo de uma potência de dois (2) ou de um meio (1/2) do período de execução de um outro lote de instruções. Assim, por exemplo, o período P1 do lote de instruções 141 de posição 1 é igual a duas vezes o período P0 do lote de instruções 140 de posição 0. De maneira geral, o período de um lote de instruções de posição i será igual a duas vezes o período de um lote de instrução de posição i- 1, para qualquer inteiro natural i compreendido entre 1 e N.
[0084] Finalmente, como visível na figura 4, o processo de sequenciamento de acordo com a invenção compreende janelas temporais 30 no decorrer das quais nenhum lote de instruções é executado. Essas janelas temporais 30 permitem prever tempo disponível para uma eventual execução de um lote de instruções suplementar. Esse lote de instruções suplementar corresponderia a uma nova funcionalidade que poderia ser acrescentada ao programa principal. Se nenhuma nova funcionalidade for acrescentada ao programa principal, essas janelas temporais 30 permanecem “vazias”, quer dizer que a unidade de tratamento 7 não executará nenhum lote de instruções durante o tempo de duração dessas últimas.
[0085] Essas janelas temporais 30 não atribuídas têm um período igual a duas vezes o período do lote de instruções de posição mais elevada registrado na memória de trabalho 9. Assim, o período das janelas temporais não atribuídas é igual a 2N o período do lote de instrução de posição 0, com N o número de lotes de instruções.
[0086] Qualquer que seja o número de lotes de instruções a executar, o processo de sequenciamento de acordo com a invenção gera sempre janelas temporais no decorrer das quais nenhum lote de instruções é executado, ditas janelas temporais não atribuídas. Quando uma primeira nova funcionalidade é acrescentada ao programa principal, o processo de acordo com a invenção permite sequenciar um lote de instruções suplementar que corresponde a essa primeira nova funcionalidade, sem impacto sobre o sequenciamento já existente, como descrito em ligação com a figura 6. O acrescentamento desse lote de instruções suplementar, cria o aparecimento de novas janelas temporais não atribuídas que poderão eventualmente servir para o acrescentamento de uma segunda nova funcionalidade. Essas novas janelas temporais não atribuídas têm sempre um período igual a duas vezes o período do lote de instruções de posição mais elevada. Essa posição corresponde nesse caso à posição do lote de instruções da primeira nova funcionalidade.
[0087] De acordo com uma variante de realização da invenção, o processo de sequenciamento compreende as etapas ilustradas nas figuras 2 e 3 assim como as etapas ilustradas na figura 8.
[0088] As etapas 32 a 52 se desenrolam da mesma maneira que no processo de sequenciamento com exceção do fato de que de acordo com essa variante de realização, o contador principal 18 é inicializado em uma unidade (= 1) no decorrer das etapas 34 e 49, e o contador secundário 16 é inicializado no valor da posição mínima Rmin. De acordo com essa variante, a posição máxima Rmax pode ser superior ao limite predefinido M e ao número N de lotes de instruções.
[0089] Por outro lado, de acordo com essa variante de realização, o processo compreende, além disso, as etapas ilustradas na figura 8. Assim, depois da subetapa 50 de geração de um comando de execução de um lote de instruções, a unidade de comando 6 verifica, no decorrer de uma etapa 60, que o valor instantâneo p do contador principal 18 é inferior a 2Rmax+1 na qual Rmax é a posição mais elevada dos lotes de instruções registrados na memória de trabalho 9.
[0090] Se o valor p é inferior a 2 x 2(N-1), a unidade de comando 6 incrementa o contador principal 18, no decorrer de uma etapa 62.
[0091] E depois, a unidade de comando 6 retorna para a etapa 38 no decorrer da qual ela espera a recepção de uma interrupção temporal IT.
[0092] Se o valor instantâneo p é superior a 2 x 2(N-1), a unidade de comando 6 retorna para a etapa 34 no decorrer da qual o contador principal é inicializado em uma unidade.
[0093] Por exemplo, o número de lotes de instruções N é igual a dois. O primeiro lote de instruções apresenta uma posição igual a 1. O segundo lote de instruções apresenta uma posição igual a 3. O limite predefinido M é igual a 5. O primeiro lote de instruções vai ser executado 1 vez a cada 4 interrupções temporais. O segundo lote de instruções vai ser executado a cada 16 interrupções temporais.
[0094] Vantajosamente, nesse modo de realização, o período de execução mais longo não está mais limitado pelo limite predefinido M.
[0095] Essa variante de realização é utilizada com um limite predefinido M superior ao número N de lotes de instruções. Ela permite não varrer todas as posições possíveis, mas sim unicamente as posições que identificam lotes de instruções. O processo de sequenciamento que utiliza essa variante é mais rápido e permite acrescentar funcionalidades suplementares sem ter que modificar o limite predefinido M depois de sua concepção.
[0096] As etapas ilustradas nas figuras 6 e 7 podem também ser executadas com essa variante de realização.

Claims (12)

1. Processo de sequenciamento de comandos de execução para executar uma pluralidade de lotes de instruções por uma unidade de tratamento, o dito processo sendo executado por uma unidade de comando (6) própria para receber periodicamente interrupções temporais (IT) e para transmitir comandos para a unidade de tratamento para executar a pluralidade de lotes de instruções (140, 141, 142, 143), o processo caracterizado pelo fato de que compreende as etapas seguintes: a) inicializar (34, 39) um contador principal (18) em uma memória da unidade de comando para ter um valor instantâneo principal de zero; b) incrementar (39) o valor instantâneo principal do contador principal (18), com a recepção (38) de uma interrupção temporal (IT); c) em resposta ao recebimento da interrupção temporal, gerar (40) um comando para executar um lote de instruções (140, 141, 142, 143) dentre a pluralidade de lotes de instruções pelo menos em parte por: i) inicializar (41) um contador secundário (16) na memória para ter um valor instantâneo secundário de zero; ii) calcular (42) um valor baseado no valor instantâneo principal do contador principal (18) e no valor instantâneo secundário do contador secundário (16); iii) determinar (44) se a variável calculada é um número inteiro; e - se o valor calculado for um número inteiro: - comparar (48) o valor instantâneo secundário do contador secundário a um limite predefinido (M) armazenado na memória; e - baseado em determinar que o valor instantâneo secundário do contador secundário (16) é menor que o limite predefinido (M), transmitir (50) um comando configurado para fazer com que a unidade de tratamento execute um lote de instruções particular dentre a pluralidade de lotes de instruções, o comando incluindo o valor instantâneo secundário do contador secundário (16) para identificar uma posição (R) do lote de instruções (140, 141, 142, 143) em particular; - se o valor calculado não for um número inteiro, incrementar (46) o valor instantâneo secundário do contador secundário (16) e repetir as etapas ii) e iii); d) repetir as etapas a) a d) pelo menos uma vez.
2. Processo de acordo com a reivindicação 1, caracterizado pelo fato de que o processo volta para a etapa a), quando o valor instantâneo secundário do contador secundário (16) é superior ao limite predefinido (M).
3. Processo de acordo com a reivindicação 1, caracterizado pelo fato de que o valor é calculado a partir da seguinte fórmula: V = (p - 2s) / (2 x 2s) na qual p é o valor instantâneo principal do contador principal (18), s é o valor instantâneo secundário do contador secundário (16) e V é o valor calculado.
4. Processo de acordo com a reivindicação 1, caracterizado pelo fato de que compreende, anterior à etapa a), uma etapa de identificação (33), em que cada lote de instruções na pluralidade de lotes de instruções é identificado por uma posição (R) respectiva que é atribuída ao lote de instruções em função de um período de execução desejado para o lote de instruções (140, 141, 142, 143), em que uma posição (R) menor é atribuída ao lote de instruções (140, 141, 142, 143) que tem um menor período de execução desejado (P0, P1, P2, P3) dentre a pluralidade de lotes de instruções e uma posição máxima é atribuída a outro lote de instruções tendo um maior período de execução dentre a pluralidade de lotes de instruções.
5. Processo de acordo com a reivindicação 4, caracterizado pelo fato de que o limite predefinido (M) é superior a um número total de lotes de instruções dentre a pluralidade de lotes de instruções, o dito processo compreendendo adicionalmente: receber um lote de instruções suplementar a executar pela unidade de tratamento; atribuir um valor de posição ao lote de instruções adicional, o valor de posição sendo um número inteiro que é maior que a posição (R) máxima; e salvar o lote de instruções adicional em uma memória de trabalho que é acessível à unidade de tratamento.
6. Processo de acordo com a reivindicação 1, caracterizado pelo fato de que o dito limite predefinido (M) é igual a um número total de lotes de instruções dentre a pluralidade de lotes de instruções.
7. Processo de acordo com a reivindicação 1, caracterizado pelo fato de que ele compreende ainda modificar um período definido entre a recepção de duas interrupções temporais (IT) consecutivas.
8. Processo de acordo com a reivindicação 5, caracterizado pelo fato de que compreende adicionalmente: comparar o valor instantâneo principal do contador principal (18) com 2Rmax+1, em que Rmax é a posição máxima, e • se o dito valor instantâneo do contador principal (18) for inferior a 2Rmax+1, o processo volta para a etapa a), ou • se o dito valor instantâneo do contador principal (18) for superior a 2Rmax+1, incrementar o contador principal (18) de uma unidade e voltar para a etapa b).
9. Meio legível por computador não transitório, caracterizado pelo fato de que compreende instruções que são executáveis por uma unidade de comando para fazer com que a unidade de comando implemente operações compreendendo: a) inicializar (34, 39) um contador principal (18) em uma memória da unidade de comando para ter um valor instantâneo principal de zero; b) incrementar (39) o valor instantâneo principal do contador principal (18), com a recepção (38) de uma interrupção temporal (IT); c) em resposta ao recebimento da interrupção temporal, gerar (40) um comando para executar um lote de instruções (140, 141, 142, 143) dentre a pluralidade de lotes de instruções pelo menos em parte por: i) inicializar (41) um contador secundário (16) na memória para ter um valor instantâneo secundário de zero; ii) calcular (42) um valor baseado no valor instantâneo principal do contador principal (18) e no valor instantâneo secundário do contador secundário (16); iii) determinar (44) se a variável calculada é um número inteiro; e - se o valor calculado for um número inteiro: - comparar (48) o valor instantâneo secundário do contador secundário a um limite predefinido (M) armazenado na memória; e - baseado em determinar que o valor instantâneo secundário do contador secundário (16) é menor que o limite predefinido (M), transmitir (50) um comando configurado para fazer com que a unidade de tratamento execute um lote de instruções particular dentre a pluralidade de lotes de instruções, o comando incluindo o valor instantâneo secundário do contador secundário (16) para identificar uma posição (R) do lote de instruções (140, 141, 142, 143) em particular; - se o valor calculado não for um número inteiro, incrementar (46) o valor instantâneo secundário do contador secundário (16) e repetir as etapas ii) e iii); d) repetir as etapas a) a d) pelo menos uma vez.
10. Processo de execução de lotes de instruções em uma unidade de tratamento, o processo sendo caracterizado pelo fato de que compreende: determinar pela unidade de tratamento, uma respectiva posição para cada lote de instruções dentre uma pluralidade de lotes de instruções armazenados em uma memória de trabalho; e executar, pela unidade de tratamento, a pluralidade de lotes de instruções em uma sequência específica, na qual cada lote de instruções dentre a pluralidade de lotes de instruções é executado em um respectivo período, com base na respectiva posição para o lote de instruções, o respectivo período sendo uma duração entre o início de execuções sucessivas do lote de instruções, em que a duração é igual a duas vezes outro período para outro lote de instruções dentre a pluralidade de lotes de instruções com uma posição igual à respectiva posição menos um.
11. Circuito integrado (2) que compreende: - um gerador de interrupções temporais (4) próprio para gerar periodicamente interrupções temporais (39, 54), - uma unidade de comando (6) própria para recepcionar as ditas interrupções temporais (39, 54), - uma memória de trabalho (9) que contém N lotes de instruções (140, 141, 142, 143), cada lote de instruções sendo identificado por um número inteiro superior ou igual a zero; chamado de posição (R); caracterizado pelo fato de que a dita unidade de comando (6) é própria para executar o processo de sequenciamento de comando de execução de lotes de instruções conforme definido em qualquer uma das reivindicações 1 a 9.
12. Circuito integrado (2) de acordo com a reivindicação 11, caracterizado pelo fato de que compreende adicionalmente uma unidade de tratamento (7) conectada à dita memória de trabalho (9) e à unidade de comando (6), em que a dita unidade de tratamento (7) é própria para executar o processo de sequenciamento de comando de execução de lotes de instruções conforme definido na reivindicação 10.
BR102016004711-0A 2015-03-03 2016-03-02 Processo de sequenciamento de comandos de execução para executar uma pluralidade de lotes de instruções por uma unidade de tratamento, meio legível por computador não transitório, processo de execução de lotes de instruções em uma unidade de tratamento, e, circuito integrado BR102016004711B1 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1551790A FR3033427B1 (fr) 2015-03-03 2015-03-03 Procede de sequencement de commandes d'execution, procede d'execution, programme d'ordinateur et circuit integre
FR1551790 2015-03-03

Publications (2)

Publication Number Publication Date
BR102016004711A2 BR102016004711A2 (pt) 2016-09-06
BR102016004711B1 true BR102016004711B1 (pt) 2023-04-04

Family

ID=53200135

Family Applications (1)

Application Number Title Priority Date Filing Date
BR102016004711-0A BR102016004711B1 (pt) 2015-03-03 2016-03-02 Processo de sequenciamento de comandos de execução para executar uma pluralidade de lotes de instruções por uma unidade de tratamento, meio legível por computador não transitório, processo de execução de lotes de instruções em uma unidade de tratamento, e, circuito integrado

Country Status (5)

Country Link
US (1) US10761845B2 (pt)
EP (2) EP3989065A1 (pt)
BR (1) BR102016004711B1 (pt)
CA (1) CA2922336C (pt)
FR (1) FR3033427B1 (pt)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108701030B (zh) * 2017-09-05 2022-05-27 深圳欣锐科技股份有限公司 一种基于处理器的数据处理方法和装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3975703B2 (ja) * 2001-08-16 2007-09-12 日本電気株式会社 情報処理システムにおける優先実行制御方法及びその装置並びにプログラム
JP4068106B2 (ja) * 2005-08-05 2008-03-26 三菱電機株式会社 リアルタイム組込み簡易モニタプログラム
US20090217272A1 (en) * 2008-02-26 2009-08-27 Vita Bortnikov Method and Computer Program Product for Batch Processing
JP5747584B2 (ja) * 2011-03-15 2015-07-15 オムロン株式会社 制御装置およびシステムプログラム
KR20130049110A (ko) * 2011-11-03 2013-05-13 삼성전자주식회사 인터럽트 할당 방법 및 장치
FR2993070B1 (fr) * 2012-07-09 2014-07-18 Commissariat Energie Atomique Procede d'execution, au sein d'un systeme embarque multitaches, d'une application cadencee par plusieurs domaines de temps differents incluant une gestion d'interruptions
US9411641B2 (en) * 2012-10-04 2016-08-09 Lawrence J. Dickson Method and apparatus implemented in processors for real-time scheduling and task organization based on response time order of magnitude
US9329880B2 (en) * 2013-02-13 2016-05-03 Red Hat Israel, Ltd. Counter for fast interrupt register access in hypervisors
DE102013202774A1 (de) * 2013-02-20 2014-08-21 Robert Bosch Gmbh Vorrichtung, Verfahren und System zum Steuern eines Prozessors

Also Published As

Publication number Publication date
FR3033427A1 (fr) 2016-09-09
EP3073376A3 (fr) 2016-12-21
FR3033427B1 (fr) 2018-05-18
CA2922336A1 (fr) 2016-09-03
US10761845B2 (en) 2020-09-01
US20160259642A1 (en) 2016-09-08
CA2922336C (fr) 2023-05-23
EP3989065A1 (fr) 2022-04-27
EP3073376A2 (fr) 2016-09-28
EP3073376B1 (fr) 2022-12-14
BR102016004711A2 (pt) 2016-09-06

Similar Documents

Publication Publication Date Title
US9465610B2 (en) Thread scheduling in a system with multiple virtual machines
TWI687866B (zh) 在多執行緒處理器中之排程任務
US6356795B1 (en) Synchronization method
EP3474152B1 (en) Instruction set
JP2848606B2 (ja) マクロ命令パイプラインを用いてマイクロ命令を変更する方法及び装置
JP2019079528A5 (pt)
RU2660614C2 (ru) Способ выполнения задач в критической системе реального времени
US9727502B2 (en) System and method for direct memory access transfers
BR102016004711B1 (pt) Processo de sequenciamento de comandos de execução para executar uma pluralidade de lotes de instruções por uma unidade de tratamento, meio legível por computador não transitório, processo de execução de lotes de instruções em uma unidade de tratamento, e, circuito integrado
US9513969B2 (en) Method for the management of task execution in a computer system
US20190354486A1 (en) Microcontroller simple memory relocation function
GB2569268A (en) Controlling timing in computer processing
CA3041881C (en) Data exchange in a computer
Chmiel et al. Popular microcontrollers execute IEC 61131-3 standard operators and functional blocks in simply automatic control tasks
Koizumi et al. H3VP: History based highly reliable hybrid value predictor
JPWO2017029785A1 (ja) 仮想計算機システムの性能予測装置、性能予測方法およびコンピュータプログラム
CN113515063B (zh) 多核心处理器电路
JP2019152985A (ja) 監視回路、監視システム、モータ制御システム
Moisuc et al. Hardware event handling in the hardware real-time operating systems
CN105550023B (zh) 一种定时器事件的处理方法及装置
Ivanescu et al. Implementation of sequential function charts with microcontrollers
JP5770333B2 (ja) マルチスレッドプロセッサ
WO2020168474A1 (zh) 提升数据流机运行效率的方法、装置、设备及存储介质
CN112799821A (zh) 一种调度多个执行时机可变的周期任务的方法
US9582619B1 (en) Simulation of a circuit design block using pattern matching

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B25D Requested change of name of applicant approved

Owner name: SAFRAN AEROTECHNICS SAS (FR)

B06A Patent application procedure suspended [chapter 6.1 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 02/03/2016, OBSERVADAS AS CONDICOES LEGAIS