BRPI1101401A2 - relàgio virtual estritamente crescente para temporizaÇço de alta precisço de programas em sistemas de multiprocessamento - Google Patents

relàgio virtual estritamente crescente para temporizaÇço de alta precisço de programas em sistemas de multiprocessamento Download PDF

Info

Publication number
BRPI1101401A2
BRPI1101401A2 BRPI1101401-6A BRPI1101401A BRPI1101401A2 BR PI1101401 A2 BRPI1101401 A2 BR PI1101401A2 BR PI1101401 A BRPI1101401 A BR PI1101401A BR PI1101401 A2 BRPI1101401 A2 BR PI1101401A2
Authority
BR
Brazil
Prior art keywords
program
processing core
virtual
value
time
Prior art date
Application number
BRPI1101401-6A
Other languages
English (en)
Inventor
Claudio Luis De Amorim
Diego Leonel Cadette Dutra
Lauro Luis Armondi Whately
Original Assignee
Inst Alberto Luiz Coimbra De Pos Graduacao E Pesquisas De Engenharia Coppe Ufrj
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 Inst Alberto Luiz Coimbra De Pos Graduacao E Pesquisas De Engenharia Coppe Ufrj filed Critical Inst Alberto Luiz Coimbra De Pos Graduacao E Pesquisas De Engenharia Coppe Ufrj
Priority to BRPI1101401-6A priority Critical patent/BRPI1101401A2/pt
Priority to US14/004,436 priority patent/US20140019793A1/en
Priority to PCT/BR2012/000069 priority patent/WO2012129623A1/pt
Priority to EP12763031.7A priority patent/EP2693297A4/en
Publication of BRPI1101401A2 publication Critical patent/BRPI1101401A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/06Clock generators producing several clock signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock

Abstract

RELàGIO VIRTUAL ESTRITAMENTE CRESCENTE PARA TEMPORIZAÇçO DE ALTA PRECISçO DE PROGRAMAS EM SISTEMAS DE MULTIPROCESSAMENTO. A presente invenção se refere a um método de implementação de relógios virtuais que garantam a temporização estritamente crescente e de alta precisão de programas executados em sistemas computacionais compostos de múltiplas unidades de processamento, cada unidade com múltiplos núcleos de processamento, onde cada núcleo tem um con:ador de tempo e funciona com uma de múltiplas frequências de operação de forma assincrona com as dos demais núcleos e ainda altere a frequência de operação dinamicamente. O método constrói um Relógio Virtual Estritamente Crescente (RVEC) utilizando um contador de tempo do sistema computacional como o contador de tempo base, sobre o qual é implementada uma camada de controle sobre os eventos do sistema que defasem, adiantando ou atrasando, a contagem e tempo decorrido, de forma que o RVEC forneça ao sistema computacional um contador de tempo com valor estritamente crescente e de alta precisão. A leitura da informação de um RVEC por um programa será feita através do sistema operacional ou de instrução de hardware. Um programa criará um RVEC sobre um contador de tempo do sistema computacional isolando-o das defasagens na contagem de tempo causadas por mudanças internas do sistema computacional tais como alteração na frequência de operação do núcleo de processamento, como substituições internas do contador de tempo pelo sistema. O presente método garante que o valor retornado por um RVEC será estritamente crescente e de alta precisão.

Description

I /30 RELÓGIO VIRTUAL ESTRITAMENTE CRESCENTE PARA TEMPORIZAÇÃO DE ALTA PRECISÃO DE PROGRAMAS EM SISTEMAS DE MUTIPROCESSAMENTO
Campo Técnico
Esta invenção se relaciona com a temporização correta, estritamente crescente, e de alta precisão de programas em sistemas computacionais compostos de uma pluralidade de unidades de processamento formadas por uma pluralidade de núcleos de processamento, onde cada núcleo tem um contador de tempo e funciona com uma de múltiplas freqüências de operação de forma assíncrona com as dos demais núcleos, e ainda, altere a freqüência de operação dinamicamente.
Setor Técnico
Esta invenção se inclui no campo de sistemas de computação composto de um sistema operacional e uma pluralidade de unidades de processamento, interconectadas por um barramento compartilhado de acesso a memória principal ou por uma rede de interconexão, onde cada unidade de processamento é formada por uma pluralidade de núcleos de processamento.
Estado da Técnica
Um sistema computacional com uma unidade de processamento central (UCP) utiliza tipicamente um contador de ciclos do relógio da UCP como uma referência precisa para medir o tempo decorrido na execução de um programa. Para isso, o contador interno é incrementado a cada T segundos, onde T = 1/F, e F é a freqüência de operação (em Hertz) da UCP, ou por interrupções periódicas do próprio sistema. Esse contador de tempo do sistema ou simplesmente relógio do sistema é utilizado para aferir o tempo total de execução de um programa pelo sistema computacional, calculando a diferença dos valores do relógio do sistema ao iniciar e ao terminar a execução do programa. Porém, uma UCP pode ser compartilhada por múltiplos programas, com cada um dos programas sendo selecionado em rodízio e utilizar uma fração de tempo da UCP por vez até terminar sua execução. Neste caso, o tempo de execução de um programa será a soma de todos os tempos em IO execução do programa, ou seja, a soma dos intervalos de tempo durante os quais o programa encontrava-se em execução na UCP. Quando uma UCP é compartilhada, o relógio do sistema também é usado para aferir os intervalos de tempo em execução de cada um dos programas individualmente. Um intervalo de tempo em execução é obtido pela diferença dos valores do relógio do sistema imediatamente antes de um programa receber do sistema operacional o controle da execução da UCP e imediatamente depois que ele retornar o controle de execução da UCP ao sistema operacional. Quando uma UCP é compartilhada, o sistema computacional geralmente utiliza um contador de tempo de execução e um contador de tempo em execução separadamente para cada um dos programas, processos ou tarefas em execução, e usa o relógio do sistema como fonte dessas informações. Entretanto, a execução de um programa pode ser interrompida freqüentemente e de forma assíncrona por diferentes eventos do sistema computacional que não são precisamente contabilizados no tempo de execução dos programas tais como interrupções com tempos de duração variados do subsistema de entrada/saída, e eventuais
perdas de interrupções. A imprecisão acumulada na contabilidade desses
eventos de sistema torna defasada, para mais ou para menos, a contagem do
tempo em execução de um programa medida pelo relógio do sistema, tornando
imprecisa a medição dos tempos de execução dos programas. Uma alternativa
comumente utilizada para corrigir a defasagem gerada pelo relógio do sistema
é regularmente sincronizar o seu valor corrente com o de outro contador de
tempo que seja livre desses eventos do sistema que afetam a precisão da
temporização dos programas. Porém, o problema de temporização precisa se
torna ainda mais complexo em sistemas computacionais modernos, pois esses
adicionam outras características que limitam e muitas vezes impedem que se
meça com precisão o tempo de corrido entre dois eventos consecutivos de um
programa, processo ou tarefa, utilizando-se apenas os recursos de hardware e
software disponíveis nesses sistemas computacionais, aumentando ainda mais
a imprecisão da temporização dos programas, causadas por um relógio de sistema.
Mais precisamente, um sistema computacional moderno é composto de um sistema operacional e uma pluralidade de unidades de processamento, com cada unidade de processamento formada por uma pluralidade de núcleos de processamento, onde cada núcleo de processamento tem um contador de tempo e funciona com uma de múltiplas freqüências de operação de forma assíncrona com as dos demais núcleos, e ainda, pode alterar dinamicamente a freqüência de operação através do escalonamento de freqüências executado pelo sistema operacional Entretanto, esses sistemas computacionais não conseguem utilizar os circuitos internos do núcleo de processamento para aferir precisamente o tempo de execução decorrido de um programa devido à defasagem na temporização dos programas causados pelos referidos eventos de sistema. Por conta disso, nesses sistemas faz-se necessário que as medições temporais sejam complementadas com o auxílio de circuitos secundários externos aos núcleos de processamento, p. ex„ utilizando contadores tais como Real Time Counter (RTC) e High Precision Event Timers (HPET). Nesses casos, enquanto os circuitos internos de um núcleo de processamento funcionam atualizando seu contador de tempo isoladamente do funcionamento externo do sistema, os circuitos secundários funcionam emitindo interrupções a uma freqüência fixa, que são interceptadas e utilizadas pelo núcleo de processamento para atualizar um contador de tempo em memória principal. Desse modo, o contador de tempo na memória principal ficará livre dos eventos do sistema que defasam a contagem de tempo Ocorre que um contador externo de tempo utilizado como relógio pelo sistema também ficará com o valor de tempo decorrido defasado, em relação ao valor inicial do relógio, devido à latência de acesso à memória principal e a eventuais perdas de interrupções não contabilizadas na temporização do sistema. Assim, é também necessária à ressincronização do contador de tempo externo a intervalos periódicos tomando como referência uma base de tempo confiável como a fornecida externamente por um relógio atômico que é acessado utilizando um protocolo de comunicação como o Network Time Protocol (NTP). Entretanto, a ressincronização através de protocolos tal como o NTP produz uma solução de temporização de baixa precisão, que varia de milissegundos até segundos, dependendo do tráfego da rede de comunicação como à utilizada para acessar o relógio atômico.
A ocorrência desse tipo de problema é comum em cluster (agregado) de computadores e uma das soluções propostas é implementar um relógio global para servir de referência de tempo para o cluster, utilizando um algoritmo de sincronização combinado com um circuito de temporização de alta precisão em hardware localizado em um nó central do cluster. Um relógio global pode ser construído inteiramente em hardware, software, ou através de uma combinação de ambos Nos relógios globais construídos inteiramente em software, é necessário ressincronizar os relógios periodicamente. Para evitar o problema de ressincronização, foram propostas também soluções híbridas e outras inteiramente em hardware que utilizam um único oscilador remoto para todos os contadores locais, ao custo de utilização de um hardware especializado.
Um sistema computacional dispõe de múltiplos relógios ou contadores de tempo que são usados como relógios globais ou relógios virtuais para fins de contagem de tempo de execução de cada programa. Nos casos onde apenas um dos relógios existentes no sistema computacional é utilizado para medir o tempo decorrido diz-se que o sistema computacional possui um relógio global Diferentemente, um relógio virtual está associado exclusivamente ao avanço do tempo de execução individual de um programa; desta forma, um relógio virtual é diferente de um relógio global do sistema computacional.
A patente USPTO 7155629 B2 (2004/0205368 A1) apresenta um método para manter relógios virtuais (RVs) denominados VRTCs (Virtual Real Time Counters), lógicos em sistemas computacionais particionados (ex„ máquinas virtuais) utilizando um relógio global do tipo RTC. O método compreende um mecanismo que, quando uma partição altera o valor corrente do relógio global, atualiza os relógios virtuais de forma a manter seus valores coerentes. O método tem como premissa a existência de um único relógio global para o sistema computacional sob o qual todos os relógios virtuais são criados e mantidos, além de assumir a existência de um sistema de gerenciamento de partições virtuais que atualiza todas as partições em caso de alguma mudança. Os relógios virtuais são criados e mantidos pelo'sistema de gerenciamento e o mesmo é responsável por ressincronizá-los quando de uma mudança feita sobre o relógio global é feita por alguma partição virtual. Como o método tem como base a existência de um relógio global do tipo RTC. o mesmo não consegue evitar as variações na contagem de tempo transcorrido devido aos referidos eventos de sistema e necessita de um mecanismo externo de ressincronização. Porém, uso de um mecanismo de ressincronização externo não garante que leituras sucessivas do relógio global ou virtual retornem valores estritamente crescentes e de alta precisão. Observa-se que um relógio é dito estritamente crescente se os valores lidos do relógio vO e v1 7 β O em dois instantes sucessivos tO e t1 (t1>t0), respectivamente, forem tais que v1>v0 e dito monotonicamente crescente se v1>=v0.
A patente USPTO 7228243 B2 apresenta um método para manter um relógio global de sistema monotonicamente crescente e de alta resolução em sistemas computacionais. O método compreende um mecanismo dentro do sistema operacional que armazena, disponibiliza e mantém consistente um relógio global monotonicamente crescente para os programas. Para isso, o método necessita que o sistema operacional armazene o último valor lido do contador de hardware de alta precisão em intervalos de 10 milissegundos. Quando ocorre uma solicitação de leitura, o mecanismo de leitura do método realiza a leitura do contador de alta precisão e retorna o maior valor entre o valor corrente lido do contador de hardware de alta precisão e o valor armazenado pelo sistema operacional no último intervalo. Como o método tem como base a existência de um relógio global de alta precisão que funciona através de circuito assíncrono gerador interrupções, o mesmo não consegue evitar as variações do tempo causadas por perdas de interrupções ou imprecisões no intervalo entre interrupções e necessita de um mecanismo externo de ressincronização. A necessidade de um mecanismo de sincronização externo não garante que os valores retornados por leituras sucessivas, do relógio implementado pelo método, sejam precisos e estritamente crescentes
A patente USPTO 2009/0251367 (WO 2004/088880, US2004/0190378, US 2008/0018530) apresenta um método para um relógio virtual (RV) que estima a variação de tempo absoluto em sistemas móveis utilizando pelo menos dois relógios remotos externos, um deles sendo um GPS e outro um contador remoto secundário capaz de prover informações de tempo relativo (ex. Estação Rádio Base (ERB) de celulares). O método utiliza valores de tempo absoluto, recebidos através do GPS. e de tempo relativo do contador remoto, para estimar a variação de tempo absoluto a ser utilizada pelo dispositivo móvel com baixa precisão, devido ao longo intervalo de tempo entre consultas ao GPS. Portanto, a baixa precisão do método não consegue evitar variações na contagem de tempo transcorrido, por exemplo, dado dois tempos sucessivos tO e t1 e duas leituras vO e v1, respectivamente, do valor do contador de tempo pelo dispositivo móvel, o método não consegue garantir que o valor v1 seja estritamente maior que o valor vO se ocorrer uma atualização de tempo absoluto, através do GPS entre tO e t1.
A patente USPTO 6550015 B1 descreve um método para construção de relógios do tipo RTC virtuais com suporte mínimo de hardware, sendo que esses RVs são compostos por uma área de memória local e um relógio global em hardware que é incrementado a taxas fixas. Sendo a área de memória vinculada ao relógio virtual atualizada com base no número de ciclos decorridos. O mecanismo proposto permite criar um ou mais relógios que >0 gerem interrupções para o sistema computacional em taxas múltiplas da taxa de incremento do relógio global O mecanismo proposto assume como base a existência de um relógio global compartilhado entre todas as instâncias de RVs criadas. Como o RV criado tem como objetivo funcionar de forma similar ao RTC1 o uso deste para aferir o tempo sofre dos problemas descritos anteriormente, já que também necessitará de um mecanismo externo de ressincronização como o NTP. Porém, o uso de um mecanismo de ressincronização externo não garante que leituras sucessivas do relógio global ou virtual retornem valores estritamente crescentes e de alta precisão
As patentes USPTO 7475002 B1 e 2007/0033589 A1, apresentam dois métodos para ressincronização de RVs com o relógio global do sistema computacional. Ambas possuem mecanismos de ressincronização que entram em funcionamento quando a diferença entre o RV e o relógio global torna-se superior a um limite pré-definido. Estes dois métodos lidam com a recuperação de interrupções perdidas geradas por um relógio global, desta forma neste cenário existe um mecanismo responsável por averiguar as perdas de interrupções do relógio global pelas máquinas virtuais e com base nestas re- gerar essas interrupções em uma taxa superior à taxa real do relógio global. A abordagem de relógio baseado em interrupção faz com que a perda ou ressincronização do mesmo distorça leituras feitas sobre o relógio virtual durante o funcionamento do mecanismo de ressincronização, por fim ainda como ambos os trabalhos assumem relógios baseados em interrupção como relógio global, eles necessitam de um mecanismo externo de ressincronização como o NTP. Porém, uso de um mecanismo de ressincronização externo não garante que leituras sucessivas do relógio global ou virtual retornem valores sempre estritamente crescentes e de alta precisão. Η) /30 Observa -se também que os procedimentos de ressincronização aumentam o erro imposto às medições temporais, mesmo sob condições ideais. Por exemplo, quando à carga de utilização de um núcleo de processamento encontra-se alta, um relógio externo como o do fornecido pelo NTP somente consegue manter a temporização dos sistemas computacionais com baixa precisão que pode chegar à ordem de segundos. Em sistemas com múltiplos núcleos de processamento, uma solução que tem sido adotada é obrigar todos os núcleos a operarem a mesma freqüência, limitando dessa forma o uso de mecanismos de escalonamento de freqüências que permitem que as unidades operem em diferentes freqüências Esses mecanismos são utilizados para controlar o consumo de energia e a dissipação de calor dos novos processadores, por permitir exatamente não forçar o uso de uma única freqüência comum de operação para todos os núcleos. Portanto, são necessários novos métodos de temporização que suportem as mudanças de freqüências de operação de um processador de modo a garantir a temporização correta, estritamente crescente, e de alta precisão dos programas processados.
Como visto pelo estado da técnica previamente descrito todas as soluções apresentadas utilizam relógios que podem apresentar valores imprecisos. Nossa solução corrige essa falha garantindo que leituras sucessivas do relógio global ou virtual retornem valores sempre estritamente crescentes e de alta precisão. I I /30 Sumário da Invenção
A presente invenção se refere a um método de temporização para sistemas computacionais composto de um sistema operacional e uma pluralidade de unidades de processamento, interconectadas por um barramento compartilhado de acesso a memória principal ou por uma rede de interconexão, onde cada unidade de processamento é formada por uma pluralidade de núcleos de processamento. O método aqui descrito permite que, tanto as freqüências dos núcleos de processamento sejam ajustadas independentemente umas das outras, sem prejudicar as medições temporais dos programas, assim como migrar a execução de programas entre os núcleos de processamento, que funcionem com diferentes freqüências de operação, e ainda garantir a temporização correta e de alta precisão dos programas migrantes.
O método aqui inventado cria um Relógio Virtual Estritamente Crescente (RVEC) encapsulando o circuito de temporização do hardware, p. ex., o circuito de temporização do núcleo de processamento, e utiliza informações de temporização associadas ao RVEC previamente criado. A atualização de uma instância do RVEC é realizada sem intervenções externas ao sistema computacional, porém pode ser disparada por uma ação externa sobre um RVEC1 tais como mudanças na freqüência de operação do núcleo de processamento associado a um RVEC. Observe ainda que, o método não limita o número de instâncias RVECs que possam coexistir num sistema computacional. O método é implementado através de um mecanismo responsável por responder as leituras do valor de qualquer instância RVEC garantindo que o valor retornado seja estritamente crescente e de alta precisão. Para isso, o mecanismo utiliza uma área de armazenamento para cada instância RVEC, além do acesso ao circuito de temponzação de cada núcleo. Essa área de armazenamento contém uma estrutura de controle composta de um indicador de tempo anterior TA e um indicador de tempo consolidado TC associados a uma instância O indicador de tempo anterior TA da estrutura de controle armazena o instante de tempo, com o valor lido do mecanismo de temporização usado pela instância do RVEC, do último evento de mudança de freqüência ocorrido; onde um evento de mudança de freqüência pode ser uma alteração de freqüência de operação do núcleo de processamento, uma mudança de circuito de temporização, uma migração da execução de um programa entre dois núcleos de processamento, ou outro evento que possa afetar a temporização de uma instância do RVEC. O indicador de tempo consolidado TC da estrutura de controle armazena o tempo decorrido desde que a instância RVEC foi criada até o instante anterior ao último evento de mudança ocorrido associado à instância RVEC, instante esse armazenado no indicador de tempo anterior TA da estrutura de controle.
Com base nos valores de TA e TC armazenados na estrutura de controle da instância RVEC, e dado que é conhecida a freqüência de operação corrente FP do núcleo de processamento onde o programa está executando e TP é o valor corrente lido do mecanismo de temporização usado pela instância 13 '30 RVEC no dito núcleo, pode-se calcular a qualquer instante, o tempo decorrido TD desde a criação de uma instância RVEC, seja por inicialização do sistema, criação de um programa ou processo, ou outro evento de interesse. Sendo o valor do tempo decorrido TD calculado pela equação:
TD = (TP-TA) * FP + TC
O presente método de RVEC, ou simplesmente método RVEC, descrito nesta invenção necessita para seu correto funcionamento que o mecanismo que encapsula os circuitos do hardware de temporização, atualize as informações armazenadas na estrutura de controle da instância RVEC quando da migração do programa de um núcleo de processamento de origem NC para um núcleo de processamento de destino ND1 ou quando a freqüência de operação corrente FP, em Hertz, do núcleo de processamento associado a uma ou mais instâncias RVEC for alterada de uma freqüência de operação inicial Fl para uma nova freqüência de operação FF. Com a inserção desse mecanismo, as instâncias RVEC fornecem aos programas em execução, informações de temporização com precisão de nanossegundos, isolando assim seu funcionamento do circuito em hardware, sujeito à defasagem de contagem de tempo. Em ambos os casos faz-se necessário atualizar o tempo consolidado TC mantido pela instância RVEC, onde o novo valor do tempo consolidado TC' é calculado pela equação:
TC' = (TP-TA) * Fl + TC Utilizando o método RVEC descrito nos parágrafos anteriores é possível manter a temporização correta após uma instância RVEC ser criada por um programa, mesmo que seja alterada a freqüência de operação do núcleo de processamento ou mudado o próprio núcleo de processamento que estiver executando o programa. Ou seja, basta esse mecanismo tratar os pedidos de mudança de freqüência para que o valor informado por qualquer instância RVEC seja estritamente crescente e de alta precisão. O acesso à informação de temporização é feito através de uma consulta ao RVEC criado. A consulta retorna o valor do tempo em nanossegundos com base no valor corrente informado pelo circuito de hardware e das informações vinculadas ao RVEC consultado.
Descrição Detalhada da Invenção
O presente método RVEC pode ser implementado em qualquer tipo de sistema computacional de processamento de dados. Um exemplo de sistema computacional e também um exemplo da invenção são apresentados a seguir, onde o exemplo é apenas ilustrativo e não representa qualquer limitação em relação ao tipo de sistema computacional que pode utilizar o presente método RVEC.
Um sistema computacional pode ser composto por uma ou mais unidades centrais de processamento (UCPs), onde cada UCP pode ter múltiplos núcleos de processamento que trabalha com uma freqüência de operação F (em Hertz) e um tempo de ciclo T=1/F, onde cada núcleo possui /30
um relógio próprio que funciona de forma independente dos demais e é incrementado à dita freqüência F1 Figura 1. Os núcleos mesmo estando em processadores diferentes podem se comunicar através de memória compartilhada ou por passagem de mensagens. Sem perda de generalidade, pode-se considerar esse sistema computacional como tendo apenas um processador com dois núcleos de processamento e uma memória cache nível três compartilhada entre os núcleos
Nesse exemplo, o presente método RVEC é construído com um conjunto de instruções ou micro-instruções, e estruturas de controle 0 armazenadas em memória principal, uma estrutura de controle para cada instância RVEC ativo no sistema computacional. Uma estrutura de controle é composta de um indicador de tempo anterior TA e um indicador de tempo consolidado TC, e associada a uma instância RVEC. O indicador de tempo anterior TA da estrutura de controle armazena o instante de tempo do último > evento de mudança ocorrido associado à instância RVEC associada, com o valor lido do mecanismo de temporização usado pela instância RVEC, e o indicador de tempo consolidado TC da estrutura de controle armazena o tempo decorrido desde que a instância RVEC foi criada até o instante anterior ao último evento de mudança ocorrido associado à instância RVEC.
A criação de uma nova instância RVEC é feita por solicitação de um programa executando sobre um dos núcleos. O método RVEC aloca uma nova estrutura de controle para a instância que esta sendo criada, sendo que o indicador de tempo consolidado TC é inicializado com o valor zero, enquanto que indicador de tempo anterior TA recebe o valor corrente lido do mecanismo de temporização usado pela instância do RVEC, neste caso o contador de ciclos do núcleo de processamento onde está sendo criada a nova instância RVEC e cuja freqüência de operação poderá ser alterada em qualquer instante de tempo durante o funcionamento do mesmo.
Uma instância criada do RVEC manterá correto o tempo decorrido de execução de um programa tanto na presença de mudanças de freqüência de operação do núcleo de processamento, como na migração da execução do programa entre núcleos. As consultas a uma instância criada do RVEC serão feitas através de uma ou múltiplas instruções executadas pelo núcleo de processamento onde o programa estiver executando A informação de tempo decorrido TD indicada por uma instância de um RVEC é calculada com base nos dados armazenados na estrutura de controle da dita instância RVEC, valores de TA e TC, no valor corrente TP do contador de tempo do núcleo de processamento e na freqüência atual FP do dito núcleo de processamento Sendo o valor do tempo decorrido TD calculado pela equação:
TD = (TP-TA) * FP + TC.
O presente método RVEC é composto também por um procedimento de atualização do tempo decorrido de um programa através da captura de todas as mudanças que possam ocorrer no núcleo de processamento e afetar a contagem de tempo decorrido, tais como mudanças na freqüência de operação do núcleo de processamento ou migração da execução entre núcleos de processamento durante a execução do programa. Ao detectar e atender a requisição de uma mudança de freqüência ou de uma troca de núcleo, o mecanismo de controle do método RVEC entrará em funcionamento para armazenar e atualizar as informações necessárias para o correto funcionamento de contagem de tempo decorrido das instâncias RVEC afetadas pela mudança de freqüência ou por troca de núcleos de processamento.
Quando ocorrer uma alteração na freqüência de operação do núcleo de processamento, o presente método RVEC capturará essa alteração e garantirá a consistência da estrutura de controle das instâncias que utilizam o contador de tempo do núcleo que irá sofrer a alteração de freqüência de operação. Essa consistência é feita atualizando os valores de TC e TA da estrutura de controle de todas as instâncias que serão afetadas pela alteração na freqüência Fl para uma nova freqüência de operação FF do dito núcleo.
O procedimento de consistência calculará um novo valor de tempo consolidado TC' referente ao instante de tempo em que a alteração na freqüência de operação será feita e atualizará TA como valor corrente TP do contador de tempo do núcleo de processamento que terá sua freqüência alterada. O novo valor do tempo consolidado TC' para todas as instâncias afetadas é calculado pela equação:
TC' = (TP-TA) * Fl + TC. 18 /.10 A migração da execução entre núcleos de processamento durante a execução de um programa também é capturada de forma a garantir a consistência da estrutura de controle das instâncias RVEC do programa migrante entre os núcleos de processamento. Essa consistência é feita de maneira equivalente ao caso de alteração de freqüência de operação, atualizando os valores de TC e TA da estrutura de controle da instância RVEC associada ao programa O procedimento de consistência necessita para isso saber a freqüência de operação atual do núcleo de origem NC e valor corrente TP do contador de tempo do núcleo de processamento. O novo valor do tempo consolidado TC' para todas as instâncias afetadas é calculado pela equação.
TC' = (TP-TA) * FP + TC.
Tendo o novo tempo consolidado TC' sido calculado, o procedimento de migração do método RVEC atualizará o valor de TA com o valor do contador de tempo TP do núcleo de processamento destino ND e inserirá o programa migrante no topo da fila de programas do núcleo de processamento ND. O procedimento de migração terminará após este entregar a execução ao escalonador do sistema operacional do núcleo de processamento ND de destino que ficará responsável por decidir qual será o programa que deve ser executado no núcleo ND.
Além do exemplo de construção descrito anteriormente, o método RVEC proposto pode ser construído de várias outras maneiras devido à diversidade de componentes presentes nos sistemas computacionais atuais. A variedade de opções disponíveis permite construir os mecanismos do método RVEC de formas diferenciadas mesmo em uma única implementação do método, onde a forma como cada um dos mecanismos e procedimentos descritos é construída, depende apenas do desejo do projetista e da disponibilidade de recursos computacionais.
Objetivos da Invenção
Os objetivos da invenção compreendem:
Um método para construção e manutenção de relógios virtuais que forneçam medições temporais corretas, estritamente crescentes, e de 0 alta precisão dos programas executados em sistemas computacionais
sujeitos a alterações que afetem a temporização dos programas tais como a· migração da execução do programa entre núcleos de processamento ou mudança na freqüência de operação do núcleo de processamento, compreendendo os seguintes procedimentos:
í
• Um procedimento para criação de uma instância RVEC ou de outro mecanismo de temporização sobre o qual, outras instâncias RVEC serão criadas;
• Um procedimento de atualização que mantenha o valor do tempo ) decorrido de uma pluralidade de instâncias de um RVEC já criadas
quando ocorrem alterações que afetem a temporização utilizada como base pelo RVEC; • Um procedimento de acesso a uma instância do RVEC para a leitura da contagem do tempo decorrido;
• Um procedimento para descarte de uma instância RVEC previamente criada sem que afete outras instâncias RVEC que não foram construídas sobre a instância que será removida;
• Um procedimento de migração para instâncias RVEC para ser executado sempre que uma instância RVEC necessitar de alterar o método ou circuito de temporização sobre o qual foi criada;
• Um mecanismo que implemente o método RVEC em sistemas computacionais;
• Suportar mecanismos de temporização para sistemas de tempo real;
• Implementações do método RVEC construídos em hardware, software ou usando uma combinação de ambos.
Em seguida, descreveremos uma aplicação preferencial da invenção, ressaltando que esta descrição de modo algum limita o uso e escopo da invenção.
Seja um programa de distribuição de dados em tempo real [p. ex., fluxos (streams) de vídeos], composto por tarefas que executam concorrentemente, onde a execução de cada tarefa deve atender a um limite de tempo pré-estabelecido para garantir qualidade de serviço (e.x., não haver interrupção na exibição de um vídeo). Ainda, para que os limites temporais de execução sejam respeitados pelas tarefas, a aplicação deve regularmente realizar medições temporais através do hardware para saber o tempo de execução decorrido e escolher a próxima tarefa a ser executada. Assuma que o sistema computacional sobre o qual esse processo é executado possui dois núcleos de processamento, denominados núcleos 1 e 2.
Suponha que após o primeiro minuto de execução o núcleo 2 tenha sua freqüência de operação reduzida em 50% e que o núcleo 1 inicialmente execute um programa com restrições de tempo real. Considere que o programa do núcleo 1 foi migrado para o núcleo 2 devido a um procedimento de balanceamento de carga do sistema. Como as freqüências de operação dos dois núcleos de processamento são diferentes, também o serão os valores de seus contadores de tempo locais, portanto, inviabilizando o programa de usar indistintamente os valores desses contadores como base correta de temporização
Nesse caso, usando a presente invenção, a temporização correta será obtida utilizando uma instância do RVEC associada ao programa de tempo real que foi migrado sem se preocupar com a mudança de núcleo de processamento. Com um RVEC, a alteração de núcleo de processamento e, portanto, do circuito temporal, fará com que seja executado o procedimento de migração e atualização das estruturas internas do RVEC, escondendo desta forma do programa de tempo real a mudança do circuito de temporização. Quando o programa realizar uma consulta ao RVEC para obter uma nova informação temporal, esta será calculada com base no valor corrente do novo contador em hardware e das informações armazenadas nas estruturas de controle do relógio virtual. Além do cenário descrito acima podem ocorrer mudanças de freqüências ao longo da execução do programa em um mesmo núcleo de processamento, sendo que isto não representa um problema dentro do escopo da invenção. Nesse caso ocorre a execução do procedimento de alteração de freqüência de operação que atualizará as estruturas de controle do relógio virtual.
Breve Descrição Dos Desenhos
São apresentadas as figuras numeradas 1, 2, 3, 4 e 5 para melhor compreensão da invenção.
IO Figura 1 - ilustra uma das possíveis arquiteturas de sistema computacional sobre o qual o método de Relógio Virtual Estritamente Crescente (RVEC) inventado é utilizado.
Figura 2 - ilustra um processador com múltiplos núcleos de processamento utilizado em um sistema computacional.
Figura 3 - ilustra o procedimento de alteração de freqüência de operação construído para o método de Relógio Virtual Estritamente Crescente (RVEC)
Figura 4 - ilustra o procedimento de migração de núcleo de processamento construído para o método de Relógio Virtual Estritamente Crescente (RVEC). Figura 5 - ilustra um processador com múltiplos núcleos de processamento e suporte em hardware ao método de Relógio Virtual Estritamente Crescente (RVEC).
A Figura 1 é um diagrama de blocos ilustrando a arquitetura de um sistema computacional sobre o qual a invenção é construída.
Um sistema computacional 100 é composto por uma ou mais
unidades de centrais de processamento (UCP) 101, onde cada UCP possui um
ou mais núcleos de processamento (referir a 200 Figura 2) e se comunica com
a memória principal 102 através de um barramento de memória 103. Outros
dispositivos são conectados ao barramento de Entrada/Saída (E/S) 105, e se
conectam ao barramento de memória 103 através da controladora de E/S 104
com exceção da placa de vídeo 110 que se conecta diretamente ao barramento de memória 103.
Dessa forma, quando um dispositivo de entrada e saída (interface de rede 106, interface de teclado e mouse 107, interface de disco rígido (HD) 108, interface de disco removível 109) deseja se comunicar com uma UCP 101 ou com a memória principal 102, ele deve utilizar o barramento de E/S 105 para se comunicar com a controladora de E/S 104. A controladora E/S 104 irá então acessar o barramento de memória para executar a tarefa solicitada pelo dispositivo. O método RVEC inventado pode, por exemplo, utilizar uma UCP
101 e memória RAM 102 para criar e manter as informações necessárias para funcionamento do relógio virtual. /30
A Figura 2 apresenta um diagrama de blocos de uma UCP com um processador composto de múltiplos núcleos de processamento.
O processador 200 é composto por múltiplos núcleos de processamento 201, onde cada núcleo contém um contador de ciclos privado TSC 202, cache nível 1 de instruções (I-L1) 203, cache nível 1 de dados (D-L1) 204 e cache nível 2 (L2) privada 205. A memória cache de último nível (Ln) 206 é compartilhada por todos os núcleos. Observe que a figura apresentada busca apenas exemplificar uma possível organização de um processador com múltiplos núcleos de processamento e níveis e organização de memórias IO caches, sendo que implementações reais podem modificar essa organização Sendo importante salientar ainda que tal omissão não afeta a descrição geral de um processador com múltiplos núcleos, por fim esses níveis intermediários podem ser constituídos por memórias privadas, compartilhadas ou híbridas (privadas, mas que realizam comunicação com a cache de mesmo nível de outro núcleo) A memória cache de último nível 206, pode ser tanto compartilhada como híbrida. Sendo que quando compartilhada ela ainda pode ser de acesso uniforme ou não. Cada núcleo de processamento 201 possui ao menos um relógio interno (TSC) 202 que incrementa seu valor ao termino de cada ciclo de processamento O circuito sistema dinâmico de voltagem e freqüência, ou DVFS (em inglês Dynamic Voltage and Frequency System) 207 é responsável por alterar a duração de um ciclo de processamento, modificando a freqüência de operação do núcleo durante o seu funcionamento. O circuito TSC 202 de um núcleo é inicializado com o valor zero quando o núcleo de processamento é ligado e sofre apenas incrementos positivos até que o núcleo de processamento seja desligado. O valor de TSC pode ser lido utilizando uma instrução do processador, a qual armazenará o valor corrente do TSC em um registrador ou em uma posição de memória.
A Figura 3 é um diagrama de blocos ilustrando o procedimento de alteração de freqüência de operação com suporte para um RVEC.
O procedimento de alteração de freqüência com suporte para RVEC 300 é composto por múltiplas etapas que são executadas por diferentes subsistemas dentro de um sistema computacional. Na Figura 3, o solicitante de um pedido de alteração 301 será ou um sistema operacional ou um programa de usuário. Uma vez feito o pedido, ele será recebido pelo sistema operacional (S.O.) 302 que o repassará ao drive RVEC 303. O drive RVEC passará a ser o responsável por gerenciar o procedimento de alteração de freqüência do núcleo, para isso ele atualizará suas estruturas de controle internas 304, contabilizando nesta etapa o tempo decorrido de execução do núcleo que sofrerá alteração em sua freqüência de operação. O drive RVEC enviará o pedido de alteração de freqüência para o drive DVFS 305. que realizará as ações necessárias para que a freqüência de operação seja alterada 306. Uma !0 vez a freqüência de operação alterada, o controle retornará ao drive RVEC 307, que finalizará as atualizações necessárias em suas estruturas internas e informará ao S.O. que alteração pedida foi realizada. O sistema operacional 26 /?·,() então informará ao solicitante que a freqüência de operação do núcleo foi alterada com sucesso 308
O suporte a invenção é feito com a introdução das etapas 303, 304, 305 e 307 no procedimento de alteração de freqüência de operação de um núcleo. Observe que enquanto o procedimento foi explicado para o DVFS1 nada impede que esse procedimento seja utilizado com outro mecanismo de alteração de freqüência de operação.
A Figura 4 é um diagrama de blocos ilustrando o mecanismo de migração de programas ou processos entre núcleos de processamento com suporte para uma instância RVEC.
O procedimento de migração de programas entre núcleos de processamento com suporte para RV 400 é composto por múltiplas etapas que são executadas por diferentes subsistemas dentro de um sistema computacional. Na Figura 4 é apresentada uma possível implementação dessa funcionalidade em um sistema computacional com múltiplos núcleos de processamento. O solicitante de um pedido de migração de núcleo 401 pode ser tanto um programa de usuário quanto um sistema operacional. Em ambos os casos, o sistema operacional recebe o pedido de alteração 402 e o encaminha para o subsistema de escalonamento 403, que nesta organização é o responsável por executar a migração do programa entre núcleos de processamento. O escalonador é responsável por escolher o novo núcleo de processamento para onde o processo será migrado 404 e uma vez tomada à decisão, o escalonador informará ao drive de RV que será realizada uma migração entre núcleos. O drive RVEC dará inicio ao algoritmo de migração e retornará o controle da execução ao escalonador 405. Com a execução retornando para o escalonador este realiza a migração do programa entre os núcleos informando ao drive RVEC o término da mesma 406. O drive RVEC ao receber a confirmação de que o programa foi migrado, poderá terminar o algoritmo de migração e atualizar suas estruturas de controle 407 para então retornar o controle para o escalonador O escalonador então colocará o programa que foi migrado em uma de suas filas de execução e informará o sistema Operacional (SO) que a migração foi concluída com sucesso 408. O sistema operacional ao receber a confirmação do escalonador informará o término da migração ao solicitante 409
A Figura 5 apresenta um diagrama de blocos detalhando um processador com múltiplos núcleos de processamento e suporte em hardware para o método RVEC.
O processador 500 é composto por múltiplos núcleos de processamento 501, onde cada núcleo contém um contador de ciclos privado TSC 502, cache nível 1 de instruções (I-L1) 503, cache nível 1 de dados (D-L1) 504 e cache nível 2 (L2) privada 505. A memória cache de último nível (Ln) 506 é compartilhada entre todos os núcleos. Observe que a figura apresentada busca apenas exemplificar uma possível organização de um processador com múltiplos núcleos de processamento e níveis e organização de memórias caches, sendo que implementações reais podem modificar essa organização. /30
Sendo importante salientar ainda que tal omissão não afeta a descrição geral de um processador com múltiplos núcleos, por fim esses níveis intermediários podem ser constituídos por memórias privadas, compartilhadas ou híbridas (privadas, mas que realizam comunicação com a cache de mesmo nível de outro núcleo). A memória cache de último nível 506, pode ser tanto compartilhada como híbrida. Sendo que quando compartilhada ela ainda pode ser de acesso uniforme ou não. Cada núcleo de processamento 501 possui ao menos um relógio interno (TSC) 502 que incrementa seu valor ao termino de um ciclo de processamento O circuito DVFS 507 é responsável por permitir IO que a duração desse ciclo de processamento denominada freqüência de operação do núcleo seja alterada durante o funcionamento do mesmo. O circuito de controle e estrutura de controle RVEC 508 é responsável por construir um contador de tempo estritamente crescente e preciso para o núcleo de processamento, para isso o circuito de controle deve poder acessar o TSC 502 e calcular com base no valor no valor corrente informado pelo TSC a temporização real do núcleo. A estrutura de controle do RVEC 508 armazena informações tais como o número de ciclos retornados pelo TSC 502, quando da ultima alteração no núcleo de processamento que afete a temporização do dito núcleo e o valor consolidado do tempo de execução do dito núcleo até o instante desta ultima alteração utilizando para isso dois registradores dedicados. 2<) /30 Utilização Industrial
As indústrias que se beneficiarão mais imediatamente do depósito desta invenção serão as de computação móvel e de computação sob demanda, onde se deseja reduzir a quantidade de energia gasta pelo processador em instantes de baixa demanda sem com isso atrapalhar a temporização feita pelas aplicações. Como esses dispositivos são cada vez mais construídos utilizando unidades de processamento 101 com múltiplos núcleos de processamento, o método de Relógios Virtuais Estritamente Crescentes (RVEC) revelado oferecerá maior flexibilidade para o balanceamento de carga entre esses núcleos fornecendo assim maiores chances para reduzir a freqüência ou até mesmo desligarem-se alguns desses núcleos. Sendo que os procedimentos 300 e 400 podem ser construídos sem a presença de um sistema de operacional central. O processador 500 pode ter a lógica de controle de Relógio Virtual Estritamente Crescente construída integralmente em hardware dentro do núcleo de processamento, como pode ter esta lógica de controle implementada através de um hardware dedicado externo ao núcleo de processamento ou mesmo através de um sistema operacional.
O presente método RVEC pode ser utilizado na construção de novos equipamentos eletrônicos que tenham limitações especificas com relação ao consumo de energia, e que necessitam de temporização precisa para seu correto funcionamento Outras aplicações do método RVEC inventado são a manutenção do tempo em execução dos programas em um sistema computacional ou a construção de núcleos de processamento eficientes do ponto de vista energético, ou seja, que alterem sua freqüência de operação de acordo com a carga de trabalho corrente.

Claims (33)

1.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação composto de uma pluralidade de unidades de processamento com um sistema operacional e uma pluralidade de programas armazenados em memória, dita unidade de processamento formada por uma pluralidade de núcleos de processamento, dito núcleo de processamento ter um contador de tempo e uma pluralidade de freqüências de operação, caracterizado por: receber o controle de fluxo de execução e um endereço de memória de um programa em um núcleo de processamento; criar uma instância de relógio virtual no dito endereço de memória e associar dita instância a dito programa, dita instância ser uma estrutura de controle composta de um indicador de tempo anterior TA e um indicador de tempo consolidado TC; associar dita instância de relógio virtual a dito contador de tempo do núcleo de processamento do dito programa com valor de freqüência de operação corrente FP; atribuir o valor corrente do contador de tempo a dito indicador de tempo anterior TA e o valor zero a dito indicador de tempo consolidado TC da dita instância de relógio virtual; retornar o controle de fluxo de execução e confirmar a construção da dita instância de relógio virtual ao dito programa.
2.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com a reivindicação 1, caracterizado pela dita pluralidade de unidades de processamento serem interconectadas por uma de barramento compartilhado de acesso à memória principal e rede de interconexão.
3.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 1 e 2, caracterizado pelo dito indicador de tempo consolidado ser um tempo de execução de um núcleo de processamento.
4.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 1 e 2, caracterizado pelo dito indicador de tempo consolidado ser um tempo de execução do sistema de computação.
5.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 1 e 2, caracterizado por um núcleo de processamento trabalha com uma freqüência de operação F (em Hertz) e um tempo de ciclo T=1/F e incrementar o contador de tempo do dito núcleo à dita freqüência F.
6.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 1 e 2, caracterizado por um programa ser uma pluralidade de aplicações, sistemas operacionais, máquinas virtuais, monitores de máquinas virtuais, firmware e microprogramas.
7.- Método para construir relógios virtuais estritamente crescentes em um sistema computacional de acordo com as reivindicações 1, 2, 3, 4, 5 e 6 caracterizado por: detectar alteração no contador de tempo de um núcleo de processamento associado a uma instância de relógio virtual, dita alteração ser uma de: mudança de valor corrente Fl para valor FF da freqüência de operação do núcleo de processamento do dito contador de tempo; migração de um programa de um núcleo de processamento NC para outro núcleo de processamento ND; atualizar indicador de tempo anterior e indicador de tempo consolidado da estrutura de controle da dita instância de relógio virtual;
8.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 1, -2, 3, 4, 5, 6 e 7, caracterizado pela mudança de Fl para FF do valor de freqüência de operação de um núcleo de processamento.
9.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 1, -2, 3, 4, 5, 6 e 7, caracterizado pela migração de um programa entre um núcleo de processamento corrente NC e um núcleo de processamento destino ND.
10.- Método para construir relógios virtuais em um sistema de computação de acordo com as reivindicações 1, 2, 3, 4, 5, 6, 7, 8 e 9 caracterizado por atender a uma pluralidade de requisições de leitura do valor de uma instância de relógio virtual emitidas por um programa.
11.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 1, -2, 3, 4, 5, 6, 7, 8, 9 e 10, caracterizado por descartar uma instância de relógio virtual.
12.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 1, -2, 3, 4, 5, 6, 7, 8, 9, 10 e 11, caracterizado por suportar uma pluralidade de instâncias de relógio virtual.
13.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 e 12, caracterizado por isolar a interferência entre si das estruturas de controle de uma pluralidade de instâncias de relógio virtual.
14.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 e 13, caracterizado por suportar uma pluralidade de contadores de tempo em hardware
15.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 e 13, caracterizado por suportar uma pluralidade de contadores de tempo em software.
16.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 e --15, caracterizado pelo dito contador de tempo ser um relógio virtual.
17.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 e 16, caracterizado por construir um relógio virtual com valor estritamente crescente e de alta precisão.
18.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação compreendendo um contador de tempo ser um mecanismo composto de um circuito dedicado e lógica de controle em hardware, dito mecanismo caracterizado por' receber de um programa o controle de fluxo, um endereço de memória e o pedido de construção de uma instância de relógio virtual; construir dita instância de relógio virtual no dito endereço de memória; retornar o controle de fluxo de execução ao dito programa.
19.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação compreendendo um contador de tempo ser um mecanismo composto de um circuito dedicado, registradores de um núcleo de processamento e uma lógica de controle em software, dito mecanismo caracterizado por: receber de um programa o controle de fluxo e o pedido de construção de uma instância de relógio virtual; gerar uma interrupção do sistema de computação; executar o tratador de interrupção do dito sistema operacional; alocar uma área na memória do sistema operacional; construir dita instância de relógio virtual na dita área de memória; terminar o tratamento da interrupção e retornar o controle de fluxo de execução ao dito programa.
20.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação compreendendo um contador de tempo ser um mecanismo com lógica de controle em software, dito mecanismo caracterizado por: receber o controle de fluxo de execução e o pedido de construção de uma instância de relógio virtual através de uma chamada ao sistema operacional feita por um programa; alocar uma área na memória do sistema operacional; construir dita instância de relógio virtual na dita área de memória; associar instância de relógio virtual ao programa nas estruturas internas do sistema operacional; retornar o controle de fluxo de execução ao programa.
21.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação com um contador de tempo de acordo com a reivindicação 18, compreendendo ler e enviar o valor de uma instância de relógio virtual, dita leitura e envio de valor, caracterizado por: receber de um programa o controle de fluxo e um endereço de armazenamento do valor corrente da dita instância de relógio virtual; ler os valores dos indicadores de tempo anterior TA e de tempo consolidado TC armazenados na estrutura de controle da dita instância de relógio virtual; ler o valor do dito contador de tempo TP associado à dita instância de relógio virtual do dito núcleo de processamento com freqüência de operação FP; usar valores TA, TC, TP, FP e calcular o valor do tempo decorrido TD da instância de relógio virtual, dito TD = (TP-TA) * FP + TC; armazenar o valor TD no dito endereço de armazenamento; retornar o controle de fluxo de execução ao programa.
22.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação com um contador de tempo de acordo com a reivindicação 19, compreendendo ler e enviar o valor de uma instância de relógio virtual, dita leitura e envio de valor, caracterizado por: receber de um programa o controle de fluxo e um endereço de armazenamento do valor corrente da dita instância de relógio virtual; gerar uma interrupção do sistema de computação e executar o tratador de interrupção do sistema operacional; informar ao sistema operacional o endereço da instância de relógio virtual; ler e armazenar valores dos indicadores de tempo anterior TA e de tempo consolidado TC da instância de relógio virtual em registradores do circuito dedicado de núcleo de processamento do dito programa; ler valor do dito contador de tempo TP associado à dita instância de relógio virtual do dito núcleo e ler valor de freqüência de operação corrente FP; usar valores TA1 TC, TP1 FP e calcular o valor do tempo decorrido TD da instância de relógio virtual, dito TD = (TP-TA) * FP + TC; armazenar valor de tempo decorrido TD da instância de relógio virtual no dito endereço; terminar o tratamento da interrupção e retornar o controle de fluxo ao programa.
23.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação com um contador de tempo de acordo com a reivindicação 20, compreendendo ler e enviar o valor de uma instância de relógio virtual, dita leitura e envio de valor, caracterizado por: receber o controle do fluxo de execução e um endereço de memória através de uma chamada ao sistema operacional feita por um programa; ler valores dos indicadores de tempo anterior TA e de tempo consolidado TC da instância de relógio virtual associada a dito programa; ler valor do dito contador de tempo TP associado à dita instância do relógio virtual do núcleo de processamento do dito programa e ler valor da freqüência de operação FP do dito núcleo; usar valores TA1 TC, TP, FP e calcular o valor do tempo decorrido TD da instância de relógio virtual, dito TD = (TP-TA) * FP + TC; armazenar valor TD no dito endereço de memória; retornar o controle de fluxo de execução ao dito programa.
24.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação com mecanismo contador de tempo e detecção de mudança de freqüência de operação de um núcleo de processamento de valor corrente Fl para valor FF de acordo com as reivindicações 8 e 18, caracterizado por: detectar em hardware mudança de freqüência de operação corrente do dito núcleo de processamento do dito contador de tempo; ler, através de um circuito dedicado e lógica de controle em hardware, dita pluralidade de valores dos indicadores de tempo anterior TA e dos indicadores de tempo consolidado TC das estruturas de controle da pluralidade de instâncias de relógios virtuais estritamente crescentes associadas ao dito contador de tempo; ler valor do contador de tempo TP associado à dita pluralidade de instâncias de relógios virtuais estritamente crescentes do dito núcleo de processamento e valor de freqüência de operação corrente Fl; usar valores TP, Fl1 TA, TC e calcular uma pluralidade de valores de tempo consolidado TC', dito TC' = (TP-TA) * Fl + TC; armazenar dito valor TP na dita pluralidade de indicadores de tempo anterior TA e dita pluralidade de valores TC' na dita pluralidade de indicadores de tempo consolidado TC das estruturas de controle da dita pluralidade de instâncias de relógios virtuais estritamente crescentes; substituir valor de freqüência de operação Fl do dito núcleo de processamento pelo valor FF.
25.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação com um mecanismo contador de tempo e detecção de mudança de freqüência de operação de um núcleo de processamento de valor corrente Fl para valor FF de acordo com as reivindicações 8 e 19, caracterizado por: detectar em hardware instrução de um programa de mudança de freqüência de operação corrente de um núcleo de processamento; gerar interrupção do sistema de computação e identificar dito núcleo de processamento; executar tratador de interrupção do sistema operacional; ler uma pluralidade de valores dos indicadores de tempo anterior TA e dos indicadores de tempo consolidado TC das estruturas de controle da pluralidade de instâncias de relógios virtuais estritamente crescentes associadas ao dito contador de tempo; ler valor do contador de tempo TP associado à dita pluralidade de instâncias de relógios virtuais estritamente crescentes do dito núcleo de processamento e valor de freqüência de operação corrente Fl; usar valores TP1 Fl, TA, TC e calcular uma pluralidade de valores de tempo consolidado TC', dito TC' = (TP-TA) * Fl + TC; armazenar dito valor TP na dita pluralidade de indicadores de tempo anterior TA e dita pluralidade de valores TC' na dita pluralidade de indicadores de tempo consolidado TC das estruturas de controle da dita pluralidade de instâncias de relógios virtuais estritamente crescentes; substituir valor de freqüência de operação Fl do dito núcleo de processamento pelo valor FF; retornar o controle de fluxo de execução ao dito programa.
26.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação com um mecanismo contador de tempo e detecção de mudança de freqüência de operação de um núcleo de processamento de valor corrente Fl para valor FF de acordo com as reivindicações 8 e 20, caracterizado por: receber através de uma chamada ao sistema operacional requisição de um programa de mudança de freqüência de um núcleo de processamento; ler uma pluralidade de valores dos indicadores de tempo anterior TA, e de indicadores de tempo consolidado TC das estruturas de controle da pluralidade de instâncias de relógios virtuais estritamente crescentes associadas ao dito contador de tempo; ler valor do contador de tempo TP e valor de freqüência de operação Fl do dito núcleo de processamento; usar ditos valores TP, Fl, TA, TC e calcular uma pluralidade de valores TC', dito TC' = (TP-TA) * Fl + TC; armazenar dito valor TP na dita pluralidade de indicadores de tempo anterior TA e dita pluralidade de valores TC' na dita pluralidade de indicadores de tempo consolidado TC das estruturas de controle da dita pluralidade de instâncias de relógios virtuais estritamente crescentes; substituir valor de freqüência de operação Fl do dito núcleo de processamento pelo valor FF; retornar o controle de fluxo de execução ao dito programa.
27.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação com migração de um programa de um núcleo de processamento corrente NC para outro núcleo de processamento destino ND de acordo com as reivindicações 9 e 18, caracterizado por: detectar em hardware requisição de migração de um programa entre dois núcleos de processamento; ter através de um circuito dedicado e lógica de controle uma pluralidade de valores de indicadores de tempo anterior TA e de valores de indicadores de tempo consolidado TC das estruturas de controle de uma pluralidade de instâncias de relógios virtuais estritamente crescentes associadas ao dito programa; ler valor do contador de tempo TP e valor da freqüência de operação FP do dito núcleo de processamento corrente NC; usar ditos valores TP1 FP1 TA e TC e calcular uma pluralidade de valores de tempo consolidado TC', dito TC' = (TP-TA) * FP + TC; ler o valor do contador de tempo TP do núcleo de processamento destino ND; armazenar dito valor TP na dita pluralidade de indicadores de tempo anterior TA e dita pluralidade de valores TC' na dita pluralidade de indicadores de tempo consolidado TC das estruturas de controle da dita pluralidade de instâncias de relógios virtuais estritamente crescentes; copiar valores dos registradores e das estruturas de controle do núcleo de processamento corrente NC para os registradores e estruturas de controle do núcleo de processamento destino ND; retornar o controle de fluxo de execução do programa ao dito núcleo de processamento destino ND.
28.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação com migração de um programa de um núcleo de processamento corrente NC para outro núcleo de processamento ND de acordo com as reivindicações 9 e 19, caracterizado por: detectar em hardware requisição de migração da execução de um programa do núcleo de processamento corrente NC, para um núcleo de processamento de destino ND; gerar uma interrupção do sistema de computação e executar tratador de interrupção do sistema operacional; executar tratador de interrupção do sistema operacional; ler uma pluralidade de valores de indicadores de tempo anterior TA e de valores de indicadores de tempo consolidado TC das estruturas de controle de uma pluralidade de instâncias de relógios virtuais estritamente crescentes associadas ao dito programa; ler o valor do contador de tempo TP e o valor da freqüência de operação FP do dito núcleo de processamento corrente NC do dito programa; usar ditos valores TP, FP1 TA, TC e calcular uma pluralidade de valores de tempo consolidado TC', dito TC' = (TP-TA) * FP + TC; ler o valor do contador de tempo TP do núcleo de processamento destino ND; armazenar dito valor TP na dita pluralidade de indicadores de tempo anterior TA e dita pluralidade de valores TC' na dita pluralidade de indicadores de tempo consolidado TC das estruturas de controle da dita pluralidade de instâncias de relógios virtuais estritamente crescentes associadas ao dito programa; copiar os valores dos registradores e das estruturas de controle do núcleo de processamento corrente NC para os registradores e estruturas de controle do núcleo de processamento destino ND; retornar o controle de fluxo de execução do programa ao dito núcleo de processamento destino ND.
29.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação com migração de um programa de um núcleo de processamento corrente NC para outro núcleo de processamento destino ND de acordo com as reivindicações 9 e 20, caracterizado por: receber através de chamada ao sistema operacional requisição de migração de um programa do núcleo de processamento corrente NC para um núcleo de processamento de destino ND; ler uma pluralidade de valores de indicadores de tempo anterior TA e de valores de indicadores de tempo consolidado TC das estruturas de controle de uma pluralidade de instâncias de relógios virtuais estritamente crescentes associadas ao dito programa; ler o valor do contador de tempo TP e o valor da freqüência de operação FP do dito núcleo de processamento corrente NC do dito programa; usar ditos valores TP1 FP, TA e TC e calcular uma pluralidade de valores de tempo consolidado TC', dito TC' = (TP-TA) * FP + TC; ler o valor do contador de tempo TP do núcleo de processamento destino ND; armazenar dito valor TP na dita pluralidade de indicadores de tempo anterior TA e dita pluralidade de valores TC' na dita pluralidade de indicadores de tempo consolidado TC das estruturas de controle da dita pluralidade de instâncias de relógios virtuais estritamente crescentes associadas ao dito programa; copiar os valores dos registradores e das estruturas de controle do núcleo de processamento corrente NC para os registradores e estruturas de controle do núcleo de processamento destino ND; inserir o dito programa no topo da fila de programas do dito núcleo de processamento ND; executar escalonador do sistema operacional do dito núcleo de processamento ND de destino.
30.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação com descarte de uma instância de relógio virtual de acordo com as reivindicações 11 e 18, caracterizado por: receber requisição de descarte de uma instância de relógio virtual; remover estrutura de controle associada à dita instância de relógio virtual; retornar controle de fluxo de execução e confirmar remoção da dita instância de relógio virtual.
31.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação com descarte de uma instância de relógio virtual de acordo com as reivindicações 11 e 19, caracterizado por: receber requisição de descarte de uma instância de relógio virtual; gerar interrupção do sistema de computação e executar tratador de interrupção do sistema operacional; remover área de memória da estrutura de controle associada à dita instância de relógio virtual e terminar o tratamento da interrupção; remover área de memória da estrutura de controle associada à dita instância de relógio virtual; retornar controle de fluxo de execução e confirmar remoção da dita instância de relógio virtual.
32.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação com descarte de uma instância de relógio virtual de acordo com as reivindicações 11 e 20, caracterizado por: receber de programa através de chamada ao sistema operacional pedido de descarte de uma instância de relógio virtual; dissociar em dita estruturas internas do sistema operacional dita estrutura de controle de dita instância de relógio virtual; remover dita estrutura de controle de dita instância de relógio virtual da área de memória do sistema operacional; retornar o controle de fluxo de execução ao dito programa e confirmar descarte de dita instância de relógio virtual.
33.- Método para construir relógios virtuais estritamente crescentes em um sistema de computação de acordo com as reivindicações 19, 22, 25, 28 e 31, caracterizado pela lógica de controle em software ser um circuito em hardware externo ao núcleo de processamento.
BRPI1101401-6A 2011-03-29 2011-03-29 relàgio virtual estritamente crescente para temporizaÇço de alta precisço de programas em sistemas de multiprocessamento BRPI1101401A2 (pt)

Priority Applications (4)

Application Number Priority Date Filing Date Title
BRPI1101401-6A BRPI1101401A2 (pt) 2011-03-29 2011-03-29 relàgio virtual estritamente crescente para temporizaÇço de alta precisço de programas em sistemas de multiprocessamento
US14/004,436 US20140019793A1 (en) 2011-03-29 2012-03-19 Strictly increasing virtual clock for high-precision timing of programs in multiprocessing systems
PCT/BR2012/000069 WO2012129623A1 (pt) 2011-03-29 2012-03-19 Relógio virtual estritamente crescente para temporização de alta precisão de programas em sistemas de multiprocessamento
EP12763031.7A EP2693297A4 (en) 2011-03-29 2012-03-19 VIRTUAL CLOCK WITH EQUALITY TIMER FOR HIGH-ACCURACY TIMING OF PROGRAMS IN MULTIPROCESSOR SYSTEMS

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
BRPI1101401-6A BRPI1101401A2 (pt) 2011-03-29 2011-03-29 relàgio virtual estritamente crescente para temporizaÇço de alta precisço de programas em sistemas de multiprocessamento

Publications (1)

Publication Number Publication Date
BRPI1101401A2 true BRPI1101401A2 (pt) 2013-06-04

Family

ID=46929233

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI1101401-6A BRPI1101401A2 (pt) 2011-03-29 2011-03-29 relàgio virtual estritamente crescente para temporizaÇço de alta precisço de programas em sistemas de multiprocessamento

Country Status (4)

Country Link
US (1) US20140019793A1 (pt)
EP (1) EP2693297A4 (pt)
BR (1) BRPI1101401A2 (pt)
WO (1) WO2012129623A1 (pt)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9015838B1 (en) * 2012-05-30 2015-04-21 Google Inc. Defensive techniques to increase computer security
US8813240B1 (en) 2012-05-30 2014-08-19 Google Inc. Defensive techniques to increase computer security
US9081625B2 (en) 2012-10-16 2015-07-14 Dell Products, L.P. Method for reducing execution jitter in multi-core processors within an information handling system
US9619289B2 (en) 2014-09-11 2017-04-11 Dell Products, L.P. Workload optimized server for intelligent algorithm trading platforms
CN110659457B (zh) * 2019-09-20 2022-06-07 安徽听见科技有限公司 一种应用授权的验证方法、装置及客户端
US11119531B2 (en) 2019-12-06 2021-09-14 Oracle International Corporation Parallel pseudo infinite monotonic timeline clock
CN111107020B (zh) * 2019-12-31 2022-01-11 苏州盛科通信股份有限公司 一种多核心以太网交换芯片时间同步的方法
CN115309347B (zh) * 2022-10-10 2023-03-24 苏州浪潮智能科技有限公司 基于ssd主控变频的时间管理方法、装置、设备及介质
CN117220817B (zh) * 2023-11-07 2024-01-05 江苏金智科技股份有限公司 一种多核处理器的时间同步监测的方法和系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6550015B1 (en) 1999-02-10 2003-04-15 Advanced Micro Devices Inc. Scalable virtual timer architecture for efficiently implementing multiple hardware timers with minimal silicon overhead
US7139225B2 (en) 2003-03-27 2006-11-21 Qualcomm, Incorporated Virtual real-time clock based on time information from multiple communication systems
US7155629B2 (en) * 2003-04-10 2006-12-26 International Business Machines Corporation Virtual real time clock maintenance in a logically partitioned computer system
US7475002B1 (en) 2004-02-18 2009-01-06 Vmware, Inc. Method and apparatus for emulating multiple virtual timers in a virtual computer system when the virtual timers fall behind the real time of a physical computer system
US8146078B2 (en) * 2004-10-29 2012-03-27 Intel Corporation Timer offsetting mechanism in a virtual machine environment
US8533709B2 (en) 2005-08-04 2013-09-10 Microsoft Cororation Changing frequency of a virtual programmable interrupt timer in virtual machines to control virtual time
US7228243B2 (en) * 2005-09-22 2007-06-05 International Business Machines Corporation Implementing a high resolution monotonic system clock
US7539889B2 (en) * 2005-12-30 2009-05-26 Avega Systems Pty Ltd Media data synchronization in a wireless network
US7453910B1 (en) * 2007-12-18 2008-11-18 International Business Machines Corporation Synchronization of independent clocks
US20090210740A1 (en) * 2008-02-14 2009-08-20 Song Huang Off-chip access workload characterization methodology for optimizing computing efficiency
US8694819B2 (en) * 2009-08-24 2014-04-08 Hewlett-Packard Development Company, L.P. System and method for gradually adjusting a virtual interval timer counter value to compensate the divergence of a physical interval timer counter value and the virtual interval timer counter value
US8327357B2 (en) * 2009-08-31 2012-12-04 Red Hat, Inc. Mechanism for virtual time stamp counter acceleration
US8468524B2 (en) * 2010-10-13 2013-06-18 Lsi Corporation Inter-virtual machine time profiling of I/O transactions

Also Published As

Publication number Publication date
EP2693297A4 (en) 2014-11-26
WO2012129623A1 (pt) 2012-10-04
EP2693297A1 (en) 2014-02-05
US20140019793A1 (en) 2014-01-16

Similar Documents

Publication Publication Date Title
BRPI1101401A2 (pt) relàgio virtual estritamente crescente para temporizaÇço de alta precisço de programas em sistemas de multiprocessamento
CN100418058C (zh) 管理计算机内的计算机程序的临界区锁的方法
EP3087503B1 (en) Cloud compute scheduling using a heuristic contention model
BR112019015427A2 (pt) Coleta de evento de hardware síncrono
US7921317B2 (en) Method and apparatus for synchronizing central processing units in a multiprocessor apparatus
US9104343B2 (en) Global synchronous clock circuit and method for blade processors
US9015517B2 (en) Information processing apparatus and time-of-day control method
JPWO2009150815A1 (ja) マルチプロセッサシステム
JP2013205286A (ja) 情報処理装置、管理コントローラ、システム時刻同期方法、及びプログラム
US20130262911A1 (en) Method and data processing unit for providing a timestamp
Heo et al. IOCost: block IO control for containers in datacenters
US11907754B2 (en) System to trigger time-dependent action
US9027035B2 (en) Non real-time metrology data management
JP2006202285A (ja) レジスタを同期させる方法
Wang et al. Cache latency control for application fairness or differentiation in power-constrained chip multiprocessors
Eggenberger et al. Globally asynchronous locally synchronous simulation of nocs on many-core architectures
Froehlich et al. Achieving precise coordinated cluster time in a cluster environment
Gioiosa et al. Cross-Layer Self-Adaptive/Self-Aware System Software for Exascale Systems
Yang et al. Cloudprofiler: TSC-based inter-node profiling and high-throughput data ingestion for cloud streaming workloads
JP7124592B2 (ja) ジョブ実行システムおよびジョブ実行方法
Gannon et al. Trace recovery in multi-processing systems: Architectural considerations
US20230153156A1 (en) Synchronization of system resources in a multi-socket data processing system
Chandran et al. Architectural Support for Handling Jitterin Shared Memory Based Parallel Applications
Dutra et al. A highly effective system clock for energy-efficient computer systems
Marouani et al. Comparing high resolution timestamps in computer clusters

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]
B08F Application fees: application dismissed [chapter 8.6 patent gazette]

Free format text: REFERENTE A 4A ANUIDADE.

B08F Application fees: application dismissed [chapter 8.6 patent gazette]
B08G Application fees: restoration [chapter 8.7 patent gazette]
B08F Application fees: application dismissed [chapter 8.6 patent gazette]

Free format text: REFERENTE A 5A ANUIDADE.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: EM VIRTUDE DO ARQUIVAMENTO PUBLICADO NA RPI 2362 DE 12-04-2016 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDO O ARQUIVAMENTO DO PEDIDO DE PATENTE, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.