Anda di halaman 1dari 237

UNIVERSIDADE DE COIMBRA FACULDADE DE CIENCIAS E TECNOLOGIA DEPARTAMENTO DE ENGENHARIA ELECTROTECNICA E DE COMPUTADORES

Sistemas de Tempo Real: Apontamentos Tericos (Parte I) o

Rui Ara jo u Email: rui@isr.uc.pt http://www.isr.uc.pt/~rui Tel: 239.796276 Tel. Int.: 1352

Coimbra Setembro, 2006

Sistemas de Tempo Real


Programa resumido da disciplina:
1. Temporizao e predictabilidade. ca 2. Aplicaes em tempo-real. co 3. Problemas relacionados com arquitecturas de computadores. 4. Escalonamento. 5. Sincronizao. ca 6. Estruturao de software de tempo-real. ca 7. Anlise de desempenho. a 8. Tolerncia a falhas. a 9. Sistemas integrados (embedded). 10. Programao directa, programao por mdulos, projecto de um sistema ca ca o integrado.

Avaliao: ca
A avaliao nesta disciplina tem componente terica/terico-prtica (cotao: ca o o a ca 15 valores) e componente prtica (cotao: 5 valores). Na Componente a ca Terica/Terico-prtica, a avaliao feita atravs de um exame nal eso o a ca e e crito que ocorre em duas pocas. Cada exame subdivide-se em Parte Terica e o (cotao: 10 valores) e Parte Terico-Prtica (cotao: 5 valores). A compoca o a ca nente prtica ser avaliada atravs de um trabalho nal (cotao: 3 valores) a a e ca e do desempenho nas aulas prticas (cotao: 2 valores). O trabalho prtico a ca a nal ser lanado nas primeiras semanas do semestre. A assiduidade `s aulas a c a prticas ser um dos factores de avaliao da componente prtica. Os alunos a a ca a com nota inferior a 2.5 valores nas prticas ou que no compaream a pelo a a c menos 60% das aulas prticas cam No Admitidos a exame. a a 2

Bibliograa:
1. Alan Burns and Andy Wellings, Real-Time Systems and Programming Languages, Second Edition, Addison-Wesley, Harlow, England, 1996. 2. Computer Systems Research Group 650, 4.4BSD Programmers Reference Manual , A USENIX Assoc. Book Comp., Sebastopol, California, USA, 1994. 3. Computer Systems Research Group 650, 4.4BSD Programmers Supplementary Ducuments, A USENIX Assoc. Book Comp., Sebastopol, California, USA, 1994. 4. C. M. Krishna and Kang G. Shin, Real-Time Systems, McGraw-Hill, New York, USA, 1997. 5. Phillip A. Laplante, Real-Time Systems Design and Analysis: An Engineers Handbook , Second Edition, IEEE Press, New York, USA, 1997. 6. Jos Alves Marques e Paulo Guedes, Fundamentos de Sistemas Operatie vos, Editorial Presena, Lisboa, 1994. c 7. William Stallings, Operating Systems: Internals and Design Principles, Third Edition, Prentice-Hall, Upper Saddle River, New Jersey, USA, 1998. 8. Milan Milenkovic, Operating Systems, McGraw-Hill, New York, USA, 1992. 9. Steve Oualline, Practical C Programming, OReilly & Associates, Sebastopol, California, USA, 1992. 10. W. Richard Stevens, Advanced Programming in the UNIX Environment, Addison-Wesley, Reading, Massachusetts, USA, 1992.

Classes de Aplicaes co
Podemos dividir as aplicaes em 2 partes: transformativas e reactivas. co

Aplicaes Transformativas co Aplicaes batch co Antes de 1970. No tm requisitos temporais. a e Aplicaes transaccionais co Por exemplo, uma compilao. ca Nesta classe, as aplicaes recebem toda e qualquer entrada quando se inicia co a execuo, e fornecem os resultados quando terminam. ca

Aplicaes Reactivas co Aplicaes interactivas co Sistemas operativos, browsers WWW, interfaces grcos, . . . a Os requisitos temporais so modestos a Aplicaes de controlo em tempo-real co Requisitos temporais exigentes Metas Nesta classe, as aplicaes recebem os dados ou entradas, e produzem as co sa das (ou respostas) no decorrer do programa.

O que um Sistema de Tempo Real? e


Segundo o Oxford Dictionary of Computing: Qualquer sistema para o qual importante o instante em que a sa produzida. Isto porque nore da e malmente a entrada corresponde a algum movimento no mundo f sico, e a sa da tem que se relacionar com esse mesmo movimento. O atraso entre os instantes de entrada e de sa dever ser sucientemente pequeno para obter um da a desempenho razoavelmente atempado. Segundo Young [1982]: Um sistema de tempo real qualquer sistema de e processamento de informao que tenha que responder a est ca mulos de entrada gerados externamente dentro de um per odo de tempo nito e conhecido. Segundo Randell et al. [1995]: Um sistema de tempo real um sistema e ao qual requerido que reaja a est e mulos do ambiente (inclu ndo a prpria o passagem do tempo - [o tempo tambm uma entidade f e e sica. . . ]) dentro de intervalos de tempo ditados pelo ambiente. Outra denio: Um sistema de tempo real pode ser denido como aquele ca em que o correcto funcionamento depende no s do resultado lgico do procesa o o samento realizado, mas tambm dos instantes temporais em que os resultados e so produzidos. a Uma falha em responder atempadamente to prejudicial como a gerao de e a ca uma resposta errada. Sistemas de tempo real duros (hard): sistemas onde absolutamente e imperativo que as respostas ocorram dentro do prazo requerido. Por exemplo: sistemas de controlo de voo. Sistemas de tempo real suaves (soft): so aqueles em que os tema pos de resposta so importantes mas que continuam a funcionar correctamente a se ocasionalmente no forem respeitadas metas temporais. Por exemplo: um a sistema de aquisio de dados numa aplicao de controlo de processos. ca ca 5

Sistemas de tempo real rmes: so sistemas de tempo real suaves para os a quais no existe nenhum benef se os servios forem conclu a cio c dos com atraso. Muitos sistemas so simultaneamente sistemas de tempo real duros e sistemas a de tempo real suaves. Alguns servios podem mesmo ter metas duras e suaves. Por exemplo a c resposta a algum evento de aviso pode ter uma meta de 50ms (para uma reaco ca com ecincia ptima) e uma meta de 200ms (para garantir que que no ocorre e o a nenhum estrago no equipamento ou no pessoal).

Sistemas Hard Real-Time A maior parte dos sistemas hard so sistemas de controlo. a A maior parte dos sistemas de tempo-real no so hard. a a Muitos sistemas de tempo real hard so cr a ticos em relao ` segurana. ca a c Erro comum: Tempo-Real = clculos feitos a muito alta velocidade. a isto no verdade! a e A execuo deve ser feita a uma velocidade que permita cumprir os requisitos ca temporais.

Sistemas Embebidos Quando um computador apenas um sistema de processamento de informao e ca que se integra como componente de um sistema de engenharia mais vasto diz-se que se trata de um computador embebido. O computador comeou a ser utilizado na industria para o controlo de proc cessos no in da dcada de 60, sendo actualmente uma norma a utilizao de cio e ca microprocessadores para esse m.

Eventos Evento: Qualquer ocorrncia que cause que o apontador de programa varie e de forma no-sequencial considerada uma alterao no uxo de controlo e, a e ca portanto, um evento.

Os eventos podem ser: Internos: se resultarem de uma transio de estado do sistema. ca Externos: gerados por fontes externas - normalmente originrias do a ambiente onde o sistema est integrado. a

Os sistemas de tempo real podem responder a eventos. . . Eventos peridicos o Eventos aperidicos: o intervalo mdio entre chegadas pode ser reduzido o e Eventos espordicos: o intervalo mdio entre chegadas elevado a e e

Os eventos podem-se ainda classicar em duas categorias: Eventos s ncronos: ocorrem em instantes de tempo previs veis no uxo de controlo de processamento. Eventos ass ncronos: ocorrem em instantes imprevis veis relativamente ao uxo de controlo do processamento e so usualmente causados por a fontes externas.

Aplicaes em Tempo Real co


Sistemas de controlo de processos Produo/manufactura ca Comunicao, comando e controlo ca Controlo de experincias de laboratrio e o Robtica o Controlo de avies, helicpteros, etc o o Controlo de trfego areo a e Telecomunicaes co Sistemas de controlo e comando militares Naves espaciais Estaes espaciais co Explorao submarina ca Ve culos terrestres autnomos o ...

Controlo de Processos Um sistema de controlo de uxo (apenas um componente d1 sistema maior):

Interface

Leitura do fluxo

Medidor de fluxo

Processamento Vlvula Controlo da vlvula

Tempo

Um sistema de controlo de processo:

Consola do operador

Computador de controlo de processo

Produtos quimicos e materiais base Vlvula Sensor de temperatura

Produto Acabado Secador

Manufactura

O uso de computadores em manufactura tornou-se essencial nos ultimos anos, pois permitem manter os custos de produo baixos e aumentar a produo. ca ca Os computadores permitem integrar todo o processo de manufactura desde o projecto do produto at ao seu fabrico. e Exemplo de um computador de controlo de produo: ca
Consola do operador

Computador de controlo da produo

Peas Maquinasferramentas Manipuladores Tapetes

Produto acabado

As mquinas ferramentas, os manipuladores, e os tapetes rolantes so todos a a controlados e sincronizados pelo computador de controlo de produo. ca

10

Comunicao, Comando e controlo ca Alguns exemplos: aplicaes unidades de cuidados mdicos automatizadas, co e controlo de trfego areo, acesso remoto a contas bancrias, controlo de redes a e a telefnicas. o Todos estes sistemas requerem conjuntos complexos de pol ticas, dispositivos de recolha de informao e procedimentos administrativos que suportem e ca permitam implementar decises. o Sistemas distribu dos: comum ter os instrumentos e os dispositivos de ree colha de informao distribu ca dos por uma rea mais ou menos grande, o que a requer a utilizao de meios de comunicao entre os mdulos do sistema. ca ca o Exemplo de um sistema de comando e controlo:

Envio de comando

Computador de comando e controlo

Temperatura, presso, potncia, etc

Terminais

Sensores/actuatores

11

Outros exemplos (sistemas robticos ou robotizados): o

12

Exemplos do dia a dia:

13

Hardware e Microcontroladores Placas com computadores embebidos muitas vezes usadas em sistemas de tempo-real:

Alguns microcontroladores usados em computadores embebidos: Intel: i386ex, i8051, i960; Motorola: m68hc11, m68hc12; Philips. . . National Semiconductors. . .

14

Sistema Embebido Genrico e Sempre que utilizado um computador para controlar dispositivos f e sicos a ele ligados, o computador necessita de efectuar amostragens sobre dispositivos de medida a intervalos regulares. Para isso necessrio um relgio de e a o tempo real. Existe tambm em muitos casos uma consola atravs da qual um e e operador pode intervir manualmente. O operador mantido informado sobre e o estado do sistema atravs de vrios dispositivos de visualizao. e a ca Registos das alteraes do estado do sistema so mantidos tambm numa base co a e de dados, a qual pode ser consultada pelos operadores tanto no caso de anlise a de falhas como por questes administrativas. o Normalmente o software que controla as operaes de um sistema de tempo co real pode ser escrito em mdulos que reectem a natureza f o sica do ambiente. Um sistema embebido t pico:

Relgio de temporeal

Algoritmos de controlo digital

Interface

Sistema a controlar

Registo de dados Base de dados Recuperao de dados e visualizao

Monitorizao remota

Dispositivos de visualizao

Consola do operador

Interface com o operador Computador de TempoReal

15

Caracter sticas dos Sistemas de Tempo-Real


Requisitos temporais tempos de resposta garantidos: necessrio predie a zer com segurana os piores tempos de resposta do sistema; A ecincia c e e importante mas a predictabilidade essencial. e Deve ser determin stico e previs vel. Os piores tempos de resposta so mais importantes que os tempos mdios a e O sistema deve continuar a funcionar mesmo quando ocorra o pior caso em termos de ocorrncia de eventos no ambiente, temporizao, e carga de e ca processamento no sistema. A cadncia de execuo e concluso de tarefas deve depender apenas da e ca a evoluo do tempo e no de factores como a carga do processador. ca a Pode ser grande e complexo pode variar desde algumas centenas de linhas de assembler ou C at 20 milhes de linhas de Ada estimadas na estao espacial e o ca Freedom, ou mesmo mais. Pode ser distribu do. Requisitos de abilidade e segurana muito elevados tipicamente, os sistemas c embebidos controlam o ambiente em que operam; uma falha de controlo pode resultar em perda de vida(s), preju para o ambiente ou perdas econmicas. zo o Funciona durante longos per odos de tempo. Controlo concorrente de componentes separadas do sistema no mundo real, vrios dispositivos operam em paralelo; Por isso, torna-se melhor modelar este a paralelismo atravs de entidades concorrentes no programa. e

16

Pode ter requisitos continuamente alterados custo de reprojectar ou reescrever o software para responder a alteraes cont co nuas de requisitos pode ser proibitivo. Interessa que os sistemas sejam extens veis para poderem sofrer manuteno ca e melhoramento durante os seus tempos de vida. Interaco forte com interfaces de hardware (por exemplo, atravs de portos ca e de E/S, interrupes,. . . ) capacidade de programar dispositivos de uma forma co segura e abstracta. Manipulao de nmeros reais pode ser necessrio o processamento de ca u a nmeros reais para se conseguir realizar determinadas tarefas antes do m de u cada meta temporal imposta. S para dar um exemplo, podemos falar da imo plementao de algoritmos para controlo digital. ca Implementao eciente importante. ca e E dif de testar. cil

17

Concorrncia e
(Quase) Todos os sistemas de tempo-real so concorrentes. a Existem vrias tarefas em execuo no sistema. a ca Cada tarefa ocupa-se de uma parte do funcionamento global do sistema. Por exemplo: podem ocorrer no sistema vrios tipos de eventos; e cada tipo a de evento tem uma tarefa associada. Isto torna o projecto e desenvolvimento do sistema mais cmodo pois muitas o vezes projectam-se as tarefas separadamente apesar de fazerem parte do mesmo sistema. Um exemplo:

N1

N0 T

Neste exemplo temos 2 tarefas: controlar o n e controlar a temperatura vel do u do.

18

Paradigmas de Programao ca Programao Sequencial ca

Tarefa

Tarefa

Programa

Tarefa

Uma soluo poss ca vel: REPETE ENQUANTO nivel acima de N0 Mede Temperatura; Calcula o erro na temperatura; Calcula o comando para o aquecedor; Envia comando ao aquecedor; Espera x segundos; FIM ENQUANTO Abre valvula de entrada; ENQUANTO nivel abaixo de N1 Mede Temperatura; Calcula o erro na temperatura; Calcula o comando para o aquecedor; Envia comando ao aquecedor; Espera x segundos; FIM ENQUANTO Fecha valvula de entrada; PARA SEMPRE

19

Programao Concorrente ca

(Quase) Todos os sistemas de tempo real so inerentemente concorrentes os a dispositivos do mundo real operam em paralelo. A programao concorrente o nome dado `s notaes e tcnicas de proca e a co e gramao usadas para expressar o potencial paralelismo na soluo de um proca ca blema, e para resolver os problemas de sincronizao e comunicao resultantes ca ca da implementao paralela. ca A implementao real do paralelismo um tpico de sistemas de computaca e o dores (hardware e software) que razoavelmente independente da programao e ca concorrente. A programao concorrente importante porque fornece um enquadramento ca e abstracto segundo o qual se pode estudar o paralelismo sem car atolado em detalhes de implementao. ca Um programa concorrente convencionalmente visto como uma coleco de e ca processos autnomos sequenciais que, em termos lgicos executam em paralelo. o o Linguagens de programao concorrente, incorporam (elas prprias) explica o citamente ou implicitamente, a noo de processo, aqui entendido como uma ca entidade que tem um unico o de controlo/execuo. ca Linguagens de programao sequencial necessitam de suporte do sistema de ca operao para implementar programao concorrente. ca ca A real implementao (i.e. execuo) de uma coleco de processos toma uma ca ca ca de duas formas.

20

Programao Paralela: quando existem vrias entidades de processamento ca a (e.g. processadores): dois exemplos Multiprocessamento: os processos multiplexam as suas execues num co sistema multi-processador onde existe acesso a memria partilhada. o Exemplo: uma hiptese atribuir-se uma tarefa a cada processador: o e

Tarefa

Tarefa

Tarefa

Processamento Distribu do: os processos multiplexam a sua execuo ca em diversos processadores que no possuem memria partilhada. a o

21

Multi-programao: um processador reparte o seu tempo executando seca quencialmente vrias tarefas. Os processos multiplexam a sua execuo num a ca unico processador sendo criada a aparncia de que os processos esto a cor e a rer em paralelo. Pode-se considerar que existe uma execuao em paralelo em c termos lgicos. o

Tarefa

Tarefa

Tarefa

Selector

Sistemas Operativos de Tempo-Real Comutam entre os vrios processos em execuo. a ca Fornecem primitivas de temporizao aos processos. ca Fornecem primitivas de suporte ` comunicao e sincronizao entre processos. a ca ca Alguns exemplos de SOs de Tempo-Real QNX VxWorks VRTX RTKernel RTEMS Chimera Spring (Sun) LynxOS OS9 iRMX ...

22

Linguagens de Programao em Tempo-Real ca Linguagens Assembly. Linguagens sequenciais (e.g. C). Nestas linguagens existe apenas um o de controlo/execuao em cada proc grama. Comeam a execuo nalgum estado e depois prosseguem executando c ca uma instruo de cada vez at o programa terminar. ca e Estas requerem suporte por parte de um sistema operativo para: Implementar concorrncia entre processos. e Fornecer mecanismos de suporte ` programao de tempo-real. a ca Ada Modula-2 ... Estas so linguagens de alto n a vel viradas para a criao de aplicaes ca co multiprogramadas. No necessitam de suporte do sistema operativo. a

Algumas das Linguagens mais Usadas em Tempo-Real C/C++ com suporte de tempo-real (por parte do S.O.). Occam2 - Originalmente para transputers INMOS (SGS Thompson) Ada - Linguagem vencedora do concurso do DoD (EUA) durante a software crisis. Os criadores foram CII Honeywell-Bull (Frana). c

23

Formas de Multi-Programao (ou de Programao Concorrente) ca ca Multiprogramao cooperativa: o processo solicita ao sistema operativo ca para dar a vez de execuo a outro processo. ca Requer programao bastante disciplinada pois est sujeita a erros. Por ca a exemplo: se uma tarefa bloquear ` espera de uma condio que nunca a ca se verique poder bloquear todo o sistema. a Multiprogramao preemptiva: o processo em execuo sofre involuntaca ca riamente uma paragem da sua execuo pelo sistema ca Neste ultimo caso, o sistema operativo baseia-se em critrios prede e nidos para interromper ou no o processo em execuo e seleccionar o a ca prximo a executar. o A comutao de processos pode ser originada pela ocorrncia de eventos ca e como por exemplo interrupes de hardware geradas por um dispositivo co perifrico ou interrupes de software (e.g. uma chamada ao sistema e co por parte de um processo). As interrupes podem ocorrer de forma co peridica, aperidica, espordica, ou uma combinao destas. o o a ca Um relgio uma poss o e vel fonte de interrupes peridicas. Sempre co o que ocorre uma tal interrupo, criada uma oportunidade para o SO ca e poder comutar de tarefas/processos. Para tal necessrio salvar o contexto do processo, para que mais e a tarde possa ser restaurado permitindo a continuao do processo a parca tir do ponto onde foi interrompido. O contexto inclui o contedo u dos registos do processador (incluindo o ponteiro de instrues (IP)), co e quaisquer outros dados relativos ao processo que possam ser alterados/utilizados por outro processo.

24

Processos e Fios de Execuo ca Todos os sistemas de operao fornecem processos. ca Os processos so executados na sua prpria mquina virtual, contendo um a o a espao de endereamento separado para evitar a interferncia entre processos. c c e Recentemente os S.O. tm incluido mecanismos para criar entidades com e caracter sticas semelhantes a processos dentro de uma mesma mquina virtual. a So os chamados os de execuo (ou threads ou light-weight processes). a ca Cada processo pode ter mais do que um o de execuo, existindo concorrncia ca e entre os diversos os. Os os de execuo podem aceder sem restries ` mquina virtual do seu ca co a a processo. O programador e a linguagem de programao devem propiciar proteco ca ca contra interferncia indesejvel entre processos. e a As linguagens Ada e occam2 fornecem mecanismos de concorrncia dentro de e um programa/processo. As linguagens C e C++, s por si, no fornecem mecanismos de concorrncia o a e dentro de um processo. No entanto com o aux do S.O. e/ou de bibliotecas lio de funes estes mecanismos podem passar a estar presentes. co Processos: Alm de possuir um espao de processamento independente, e c cada processo tem associado um grande contexto composto por um conjunto de variveis de estado que incluem os registos do processador, tabelas de gesto a a de memria, tabelas de recursos utilizados (e.g. cheiros abertos), etc. o Fios de execuo: Os os de execuo de um mesmo processo, por usarem ca ca um mesmo espao de endereamento comum, possuem a vantagem de possibic c litarem uma troca de contexto mais rpida (e.g. salvando e repondo apenas os a registos do processador) e a partilha de variveis (e.g. para comunicao entre a ca os) e cdigo. o

25

Um processo tem um ou mais os de execuo. O escalonador vai seleccioca nando entre os de execuo. No entanto a troca de contexto no requer sempre ca a uma completa comutao de processos. ca Comutao entre processos/os: exemplo ca
Processo 1 Processo 2

Processo 3

Escalonador CPU Comutao de processos/fios

Mecanismos de Programao Concorrente: embora variem de uma ca linguagem (e/ou sistema de operao) para outra existem trs mecanismos funca e damentais que devem estar presentes: Execuo concorrente atravs da noo de processo e/ou o de execuo. ca e ca ca Sincronizao entre processos. ca Comunicao entre processos. ca Interaco entre processos: podemos distinguir entre trs tipos de comca e portamento. Independente: os processos no se comunicam nem se sincronizam entre a si. Cooperante: os processos comunicam e sincronizam as suas actividades regularmente de forma a desempenhar alguma operao comum. ca 26

Competio: os processos competem por obter/utilizar uma fatia justa ca dos recursos do sistema (e.g. dispositivos perifricos, memria, processae o dor). A alocao destes recursos requer a sincronizao e comunicao ca ca ca entre processos no sistema. No entanto os processos tm uma operao e ca que essencialmente independente. e Trocas de Contexto Revisitadas Consiste em guardar toda a informao pertinente sobre o estado de um ca processo quando este interrompido, e restaurar a correspondente informao e ca relativa ao processo que vai ser re-activado/restaurado, para assim permitir a troca de execuo. O processo restaurado continua a executar a partir do ca ponto/estado em que tinha sido a ultima vez interrompido. Informao a guardar/restaurar: ca 1. O contedo dos registos do processador, incluindo o valor do ponteiro u de instruo. ca 2. Os registos do co-processador aritmtico. e 3. Registos relativos ao mecanismo de gesto de memria (e.g. relativos a a o segmentao e/ou paginao). ca ca 4. Variveis especiais usadas pelo sistema operativo relativas a cada proa cesso (e.g. cheiros abertos). Esta informao de tal forma valiosa que comum desactivar as interrupes ca e e co durante o processo de salvaguarda/restauro do contexto, por forma a que no a possa ocorrer qualquer tipo de interferncia. e A troca de contexto pode afectar o tempo de resposta do sistema. Por isso um dos principais objectivos, no projecto de um sistema de tempo-real, que e essa operao seja o mais rpida poss ca a vel. Como obter uma troca de contexto rpida? Isso conseguido usando o a e m nimo de instrues para o fazer, escrevendo o cdigo directamente em linco o guagem assembly e guardando apenas a quantidade de informao sobre cada ca processo que estritamente necessria para mais tarde se poder restaurar o seu e a funcionamento. 27

Sistemas Baseados em Interrupes co Nestes sistemas as vrias tarefas esto associadas a rotinas de servio `s intera a c a rupes, sendo o escalonamento feito pelas interrupes de hardware e software. co co Por exemplo, um relgio que gere periodicamente interrupes, pode ser uma o co fonte de escalonamento peridico de uma tarefa. o As interrupes podem ser peridicas, aperidicas, espordicas ou uma co o o a combinao de vrios tipos. ca a

Sistemas Background/Foreground Tarefas foreground so aquelas que so activadas por eventos. a a So uma melhoria aplicada aos sistemas baseados apenas em interrupes, a co nos quais o ciclo vazio (tarefa idle) do programa principal substitu por e do trabalho util (uma tarefa de background). Esse cdigo a parte background do sistema e executa apenas quando no h o e a a processos foreground (associados `s interrupes) activos. Ou seja os processos a co background tm a prioridade mais baixa de todo o sistema. e Tarefas background usar para tarefas para as quais o tempo no seja um a factor cr tico. A durao mdia do ciclo de execuo da tarefa background ca e ca e t= tb 1p

onde t o tempo de execuo do ciclo da tarefa background, p a percentagem e ca de ocupao do processador pelas tarefas foreground, tb tempo de clculo ca a necessrio para um ciclo da tarefa background. a

28

O n foreground tambm chamado n de interrupo. vel e e vel ca O n background tambm chamado n de tarefa. vel e e vel Arranque do Sistema: Este tipo de sistemas comea por executar a tac refa background que efectua um conjunto de operaes com vista a iniciar o co funcionamento das tarefas de tempo-real: 1. 2. 3. 4. 5. Inibe as interrupes. co Instala os vectores de interrupo e pilhas das tarefas. ca Testa a integridade do sistema. Inicia o sistema. Re-habilita as interrupes. co

Aps o in o cio do sistema, a tarefa background comea a desenvolver outro c processamento que seja relevante para o funcionamento do sistema. Muitos sistemas de grande produo baseados em microcontroladores (e.g. ca fornos micro-ondas, frigor cos, mquinas de lavar, telefones, brinquedos, etc) a usam processamento background/foreground. Sistemas Multi-tarefa Um sistema multi-tarefa um sistema concorrente. Baseia-se no escalonae mento e comutao do CPU entre diversas tarefas. Um unico CPU comuta a ca sua ateno entre diversas tarefas sequenciais. ca Um sistema multi-tarefa pode ser encarado como uma extenso de um sistema a background/foreground. Nos sistemas baseados em interrupes e nos sistemas backco ground/foreground, as oportunidades de comutao de tarefas so quando ca a ocorre uma interrupo. ca Nos sistemas multi-tarefa, os momentos/oportunidades para realizar comutao de tarefas deixam de ser apenas a ocorrncia de interca e rupes/eventos (as quais tm tarefas de resposta associados). A coco e mutao de tarefas passa tambm a ser efectuada com uma certa cadncia ca e e temporal (normalmente de forma peridica) por parte do SO. o 29

Modelo de Blocos de Controlo de Tarefas (TCB) E uma estrutura de dados que serve de ferramenta para implementar os mecanismos do SO, como por exemplo a salvaguarda e o restauro do contexto de uma tarefa mas no s. a o Esta tcnica associa a cada tarefa, o bloco de controlo de tarefa (TCB), e onde so guardados todos os elementos relativos ao estado/contexto da tarefa, a incluindo por exemplo os registos, o PC, uma identicao, e a prioridade (caso ca seja utilizada). Exemplo de um TCB:
IP Estado Identificador EAX EBX ... Ponteiro para o prximo TCB

Escalonador
O escalonador uma entidade do sistema operativo responsvel pela detere a minao da ordem pela qual as tarefas so executadas. ca a As regras que determinam a ordem de execuo das tarefas constituem a ca pol tica de escalonamento. O escalonador activado por uma interrupo de hardware (relgio ou E/S) e ca o ou indirectamente pelas tarefas (terminus, pedido de suspenso, etc). a A troca de processos feita de acordo com a pol e tica escolhida para o escalonador por em prtica. Vrias hipteses: a a o round-robin event-driven prioridades earliest deadlines outras. . . 30

Escalonamento Round-Robin

a) CPU T1

Tarefas Prontas

T2

T3

T4

b) CPU T2

Tarefas Prontas

T3

T4

T1

A sequncia de execuo das tarefas desenvolve-se de forma c e ca clica e sequencial entre as vrias tarefas. a Quando estes sistemas utilizam partilha de tempo, cada tarefa recebe um quantum de tempo chamado time slice ou fatia de tempo. Se aps esgotar a sua fatia de tempo a tarefa no tiver terminado, ento o seu o a a estado/contexto guardado, e a tarefa colocada no m da lista de execuo. e e ca Depois restaurado o contexto da tarefa seguinte para que esta continue a e execuo como se no tivesse sido interrompida. ca a

31

Escalonamento Baseado em Prioridades

Executando

Executando

1 2 3 4

1 2 3 4

(a)

(b)

Neste tipo de sistemas, a cada tarefa atribu um n de prioridade. e do vel O escalonamento feito de forma a que a tarefa em execuo em cada instante e ca a que tiver a prioridade mais elevada. e As prioridades so atribu a das a cada tarefa de acordo com a urgncia das e operaes que esto sob a sua responsabilidade. co a Quando um sistema colocado em funcionamento, as tarefas so distribu e a das por um conjunto de listas ligadas de acordo com a sua prioridade. Todas as tarefas que se encontram nestas listas esto ` espera de uma opora a tunidade de utilizar o processador. As tarefas que se encontram ` espera de algum evento so transferidas para a a listas de espera de eventos, no sendo portanto escalonveis enquanto l se a a a encontrarem. A tarefa a executar uma das que tiver prioridade mais elevada. Se houver e mais do que uma tarefa no n de prioridade correspondente, a utilizao do vel ca processador partilhada entre as tarefas com essa prioridade. e Enquanto houver tarefas de prioridade elevada nas listas prontasas restantes tarefas no tm acesso ao processador podendo car nesse estado indenidaa e mente. 32

Por esta razo a atribuio de prioridades uma das fases mais importantes a ca e no projecto de um sistema de tempo-real uma m escolha pode tornar o a sistema no-funcional. a Depois de escolhida a nova tarefa a executar necessrio retirar a tarefa que e a estava a utilizar o processador e substitu pela escolhida. -la A tarefa que sai pode ir para uma lista de espera de eventos se fez um pedido que a tal corresponda, ou regressar para o m da lista pronta correspondente ` sua prioridade. a Existem sistemas onde as prioridades das tarefas podem variar de forma dinmica. Um exemplo de aplicao deste tipo de esquemas quando se vea ca e rica que os recursos da mquina so todos consumidos (incluindo o tempo a a de processamento) pelas tarefas de prioridade mais elevada. Nestes casos, as tarefas de prioridade mais baixa tm falta de recursos, podendo mesmo nunca e chegar a obt-los. Este fenmeno designado por starvation. e o e

Escalonamento event-driven A comutao de processos desencadeada aps o aparecimento de certos ca e o eventos, sejam eles interrupes externas ou a expiraao de per co c odos de espera. Cada tarefa tem associado um n de prioridade, que lhe foi atribu duvel do rante a fase de concepo da aplicao e que utilizado pelo escalonador para ca ca e seleccionar a prxima tarefa a executar. o

33

Estados das Tarefas Dependendo da sua situao actual cada tarefa pode estar num de vrios ca a estados. Os processos passam por diversos estados durante a sua execuo. ca Por exemplo, se uma tarefa se encontra ` espera de um evento, no necessita a a de competir pela utilizao do processador uma vez que no vai fazer nada at ca a e ocorrer o dito evento. Por isso o sistema operativo retira o seu PCB/TCB da lista de processos prontos a executar e coloca-o na lista de processos suspensos. Diagrama de transies de estado t co pico de uma tarefa:

Executando

Dormente

Pronta

Suspensa

Alguns dos estados de tarefas que mais comummente so utilizados em sisa temas operativos de tempo real para organizar e caracterizar as tarefas so os a seguintes: A executar: est neste estado o processo que est efectivamente a a a utilizar o processador nesse instante. Em sistemas com mais do que um processador podemos ter mais do que um processo neste estado.

34

Pronto: Os processos neste estado aguardam a sua vez de utilizar o processador, no tendo mais nada que os impea de executar que a c no seja a existncia de outros processos em execuo ou ` sua frente a e ca a no estado pronto. A troca de processos pode ser feita baseada em prioridades ou tipo round-robin. Suspenso: Neste estado esto os processos que aguardam qualquer a acontecimento/evento, seja uma interrupo externa ou o m de um ca per odo de temporizao. ca Dormente: Utilizado em alguns sistemas para a criao/terminus dos ca processos. E neste estado que so fornecidos ou retirados ao processo a todos os recursos necessrios ` sua execuo. a a ca

Listas de Tarefas Os TCBs so normalmente organizados em listas de tarefas de acordo com o a estado dessas mesmas tarefas.

Executando

1 2 3 4
IDLE IDLE

Suspensas

35

Escalonamento de Meta Mais Cedo Uma hiptese de escalonamento que por vezes utilizada a de executar a o e e tarefa para a qual a meta temporal (deadline) ir ocorrer mais cedo no futuro. a A ideia bsica deste mtodo que depois de cumprir a meta dessa tarefa, se a e e espera ainda car com tempo para cumprir com as metas que vm a seguir. e Escalonamento de Razo Montona a o Num sistema de tempo real, tarefas diferentes tm periodicidades diferentes. e Sistemas de razo montona (rate monotonic systems): o conjunto particular a o e de sistemas preemptivos baseados em interrupes em que atribu maior co e da prioridade `s tarefas com frequncia de execuo/activao maior. a e ca ca Muito referenciados em estudos sobre sistemas de tempo real. Resultado terico: Num sistema de razo montona nenhuma meta temo a o poral falhada se a utilizao do processador for inferior a 70%. e ca No entanto estes sistemas apresentam alguns problemas como p. ex. o da inverso de prioridades. A inverso de prioridades pode acontecer devido a: a a Existirem 2 tarefas onde a mais urgente tem uma frequncia de utilizao e ca menor. O resultado poder ser um tempo de resposta demasiado longo. a Poss vel soluo: colocar o processo cr ca tico num ciclo rpido e usar um a contador para controlar a frequncia de execuo. e ca Existindo excluso mtua no acesso a recursos, uma tarefa de prioridade a u mais baixa pode bloquear uma outra de prioridade mais elevada. Uma soluo que apesar de ser bastante referida na literatura de dif ca e cil implementao o chamado priority inheritance protocol. Este protoca e colo dene que se uma tarefa de baixa prioridade bloqueia outra tarefa de elevada prioridade, ento a primeira dever ver a sua prioridade aumena a tada para o mesmo valor da prioridade da tarefa bloqueada. Isto apenas enquanto durar o bloqueio (i.e. enquanto o recurso no for libertado). a Em sistemas orientados a objectos uma subclasse pode herdar uma prioridade que no tem a ver com a sua funo. a ca Nestes casos, uma soluo uma anlise cuidada dos atributos de cada ca e a classe. 36

Sistemas Operativos de Tempo-Real Existem sistemas operativos de tempo-real que alm do mecanismo foree ground/background ou de serem multi-tarefa, contm suporte para interfaces e de rede, device drivers, e ferramentas de debugging. Muitas vezes estes sistemas utilizam escalonamento round-robin e/ou preemptivo com prioridades. Numa boa parte das aplicaes os SOs de T-R comerciais so a melhor opo. co a ca Caracter sticas: Prontos a utilizar Bastante testados servios robustos. c So na sua maioria fceis de utilizar. a a Existem verses para diversos tipos de mquinas o que torna a sua o a aplicao mais genrica. ca e

Problemas por vezes apresentados por SOs T-R comerciais poss veis razes o para construir o nosso prprio ncleo de multiprogramao. o u ca Por vezes lentido na resposta a eventos devido a TCBs demasiado a genricos para poderem ser utilizados numa vasta gama de arquitecturas e de computadores. Tempos de resposta a interrupes ou de comutao de processos: muitas co ca vezes so apresentados os melhores valores ou os valores mdios, quando a e em aplicaes hard real-time o que interessa o pior dos casos. co e Excesso de capacidades para agradar ao maior nmero de consumidores u poss sobrecarga na execuo e/ou aumento do tamanho do cdigo vel ca o com problemas de armazenamento em ROM se tal for necessrio. a Nalguns casos necessrio pagar direitos por cada unidade produzida (e.g. e a de um sistema embebido). Pode aumentar os custos de produao dos c sistemas. 37

Comunicao e Sincronizao ca ca
Processos concorrentes no so completamente independentes. Na maior parte a a dos casos coabitam na mesma mquina. H vantagem de possibilitar a comua a nicao e/ou sincronizao entre eles (e.g. em processos cooperantes). ca ca Existe um conjunto de recursos que so (ou podem ser) comuns a vrios a a processos (ou a todos): Exemplos: perifricos (teclados, ecrns, impressoras, etc), rotinas e mesmo e a variveis. a Exemplo indesejvel numa impressora: um processo imprime um relatrio a o e outro imprime um grco ao mesmo tempo. a Rotinas partilhadas requerem a reentrncia do cdigo destas. a o Variveis dessas rotinas devem existir na pilha do processo e no como a a variveis globais. a Variveis globais em rotinas partilhadas no pode existir mais que um a a processo a usar a rotina em cada instante. O problema aqui est na existncia do recurso partilhado varivel global. a e a Mesmo que existissem rotinas separadas a aceder ` mesma varivel global, a a poderiam surgir problemas. Variveis partilhadas em memria partilhada so uma forma natural de coa o a municao entre processos. No entanto a sua utilizao pode levantar alguns ca ca problemas. Que tipo de problemas podem surgir neste tipo de operaes to simples? co a O problema surge porque as instrues de alto n co vel no so indivis a a veis (atmicas). o Uma instruo de alto n corresponde a vrias instrues mquina. ca vel a co a Se ocorrer uma interrupo que leve ` troca de contexto entre os dois ca a pedaos de cdigo vamos ter problemas/inconsistncias. c o e

38

Processo A ... contador++; ...

Processo B ... contador; ...

Processo A ... LOAD R1,contador ADD R1,1 STORE R1,contador ...

Processo B ... LOAD R1,contador SUB R1,1 STORE R1,contador ...

(a)

(b)

Processo A
...

Processo B contador R1(PA) R1(PB)


...

LOAD R1,contador

5 5 4

LOAD R1,contador SUB R1,1 STORE R1,contador ADD R1,1 STORE R1,contador ...
...

4 6 6

E necessrio garantir o acesso a recursos (no exemplo acima - a varivel) de a a forma exclusiva. Regies cr o ticas: cdigo que efectua acesso a este tipo de recursos partilhao dos. Mecanismos de excluso m tua: mecanismos que permitem garantir a a u utilizao exclusiva no acesso a recursos. ca Desactivar interrupes: seria uma hiptese para implementar excluso co o a mtua. Mas: um mecanismo exagerado/excessivo: u e No necessrio garantir que mais nenhum processo executa. a e a Apenas pretendemos garantir que mais nenhum processo entra na zona cr tica. S funciona em sistemas uni-processador. o

39

Processador 1

Processador 2

Interrupes inibidas Memria

acessos varivel partilhada

Poderia-se pensar que uma varivel de controlo de acesso (ag) permitiria a a implementao de excluso mtua. Mas esse mecanismo no ir resolver ca a u a a o problema porque a varivel de controlo de acesso no seria mais que uma a a varivel partilhada. a Processo A ... while(ocupado); ocupado=1; zona critica(); ocupado=0; ... Semforos a Mecanismo proposto por Dijkstra para implementar excluso mtua. a u Recebeu muita ateno e est presente em muitos sistemas operativos comerca a ciais e experimentais. A implementao de semforos feita ` custa de duas primitivas: SIGNAL e ca a e a WAIT. (Os nomes originais usados por Dijkstra so P e V respectivamente.) a Primitiva WAIT(s): Se o valor do semforo s for 0 (zero) ento espera. a a Se/quando o valor for maior que 0 (zero) decrementa-o e prossegue a execuo. ca A operao de teste e decrementao ter que ser indivis ca ca a vel. Primitiva SIGNAL(s): Incrementa o valor do semforo s de forma india vis vel. 40 Processo B ... while(ocupado); ocupado=1; zona critica(); ocupado=0; ...

Implementao de semforos: ca a Inibio/desinibio de interrupes durante o curto espao de tempo de ca ca co c acesso ao semforo; a J vimos que este processo tem desvantagens em sistemas multia processadores. ... desactivar interrup~es; co aceder ` regi~o crtica; a a reactivar interrup~es; co ... Utilizao de instrues de test-and-set muitos processadores posca co suem este tipo de instrues que tm a vantagem de serem implementadas co e para poderem ser utilizadas para resolver o problema em sistemas multiprocessadores. Semforos para implementar excluso mtua: a a u WAIT(sem) antes da entrada na regio cr a tica. SIGNAL(sem) aps a sa da regio cr o da a tica.

Processo A ... Wait(sem); critica(); Signal(sem); ...

Processo B ... Wait(sem); critica(); Signal(sem); ...

Os processos tm que ser cooperantes na utilizao dos semforos para implee ca a mentao de excluso mtua: se um processo no usar semforos pode entrar ca a u a a na regio cr a tica mesmo que outro, que tendo respeitado os semforos, j l a a a esteja dentro. 41

Semforos podem tambm ser uteis para sincronizao entre dois processos. a e ca Sincronizao assimtrica: ca e
Processo A CICLO Aquisio de dados; Signal(pronto); ... FIM CICLO Processo B CICLO Wait(pronto); Calcula FFT; ... FIM CICLO

Sincronizao simtrica: ca e
Processo A CICLO Signal(pronto1); Wait(pronto2); ... FIM CICLO Processo B CICLO Wait(pronto1); Signal(pronto2); ... FIM CICLO

Semforos so um mecanismo simples para implementar excluso mtua e/ou a a a u sincronizao entre processos. ca A utilizao de semforos requer forte disciplina de programao. ca a ca Uma primitiva mal colocada ou esquecida pode ser dif de detectar e cil pode levar a resultados desastrosos. Pode-se no conseguir assegurar excluso mtua e pode ocorrer impasse a a u em situaes raras mas cr co ticas leva a diculdades de teste e descoberta de erros.

42

Impasse (Deadlock) A m utilizao de mecanismos de excluso mtua pode levar ` ocorrncia a ca a u a e de (situaes de) impasse. co Exemplo: Processo A ... Wait(S1); Wait(S2); ... Signal(S2); Signal(S1); ... Processo B ... Wait(S2); Wait(S1); ... Signal(S1); Signal(S2); ...

Condies que se vericadas em simultneo denem a existncia d1 impasse: co a e 1. Excluso mtua: cada recurso s pode ser utilizado por um nmero limia u o u tado de processos em cada instante. 2. Obteno e espera: processos que detm alguns recursos encontram-se ` ca e a espera de conseguir acesso a outro(s) recurso(s). a 3. No haver preempo: os processos no podem ser obrigados a libertar a ca recursos j adquiridos. a 4. Espera circular: existe uma cadeia circular de processos em que cada processo detm pelo menos um recurso requerido pelo processo seguinte. e Preveno de Impasses ca Soluo para prevenir a ocorrncia de situaes de impasse passa por fazer ca e co com que uma das condies acima descritas no se verique. co a Vejamos as consequncias de negarmos cada uma das condioes: e c vel o Excluso mtua: normalmente imposs pois a maior parte dos recursos s a u pode ser utilizada por um processo de cada vez. 43

Obteno e espera: requeria que todos os processos pr-reservassem todos os ca e recursos de uma s vez, antes de realmente os utilizar, e se no fosse poss o a vel fazer a atribuio de um recurso, todos os outros seriam libertados. ca Principal desvantagem: os processos requisitam recursos que em alguns casos s muito tempo depois (dependendo dos casos: horas, dias, semanas, . . . ) iriam o efectivamente ser utilizados, cando os outros processos impossibilitados de os utilizar, mesmo aqueles que necessitam apenas de uma utilizao rpida e ca a imediata. No haver preempo: contrariar esta regra poderia ser desastroso pois poa ca deria implicar retirar a um processo um recurso num estado inconsistente (e.g. uma impressora com uma pgina meio impressa). a ca Espera circular: uma forma de contrariar esta condio seria obrigar os processos a pedir os recursos por uma ordem pr-denida: recursos tipo A, depois e B, etc. ca Desvantagem: Possibilidade de requisitar recursos antes da sua utilizao efectiva. = Preveno contra a ocorrncia de impasses deve ser feita durante a fase de ca e projecto do sistema. Outras formas de lidar com impasses: Evitar a ocorrncia: analisando os pedidos dos vrios processos. e a e Deteco e recuperao: Vericar se existem impasses e tentar resolv-los. ca ca Os dois mtodos anteriores para lidar com impasses seriam implementados e durante o funcionamento do sistema (e.g. pelo sistema de operao). ca

44

Problemas Clssicos de Comunicao/Sincronizao Entre Processos a ca ca Problema dos produtores/consumidores. Problema dos leitores/escritores. Problema dos produtores/consumidores Existe um ou mais produtores gerando dados e colocando-os num buer. Existe um unico consumidor que retira items do buer um de cada vez. Apenas um agente (produtor ou consumidor) pode aceder ao buer de cada vez. Exemplo de soluo produtores consumidores com buer limitado: ca boundedbuer; sizeofbuer=. . . ; s: semaphore (:=1); (* mutual exclusion *) n: semaphore (:=0); (* new item *) e: semaphore (:=sizeofbuer); (* buer not full *) procedure consumer; procedure producer; begin begin repeat repeat wait(n); produce; wait(s); wait(e); take; wait(s); signal(s); append; signal(e); signal(s); consume; signal(n); forever forever end; end; begin (* main program *) parbegin producer; consumer; parend end; program const var

45

Problema dos leitores/escritores Existe uma rea de dados partilhada por um nmero de processos. a u Existe um nmero de processos que apenas l da rea de dados. u e a Existe um nmero de processos que apenas escreve na rea de dados. u a Qualquer nmero de leitores pode simultaneamente ler dados do cheiro. u Apenas um unico escritor de cada vez pode escrever nos dados. Se um escritor est a escrever os dados, nenhum leitor os pode ler. a Monitores So mdulos de software constitu a o dos por: 1. Um ou mais procedimentos. 2. Uma sequncia de inicializao. e ca 3. Dados locais. 4. Variveis de condio. a ca Caracter sticas mais importantes de um monitor: 1. Dados locais so acess a veis apenas pelos procedimentos do monitor e no a por qualquer procedimento. 2. Um processo entra num monitor atravs da invocao de um dos seus e ca procedimentos. 3. Apenas um processo pode estar a executar dentro de um monitor a cada instante. Qualquer outro processo que tenha invocado o monitor suspenso e ` espera que o monitor que dispon a vel. Permite implementar excluso mtua no acesso aos dados que se denam a u como locais ao monitor. Para ser util monitor deve incluir ferramentas de sincronizao. ca Monitor suporta sincronizao atravs do uso de variveis de condio que ca e a ca so contidas dentro do monitor e so acess a a veis apenas dentro deste. 46

Duas primitivas que operam sobre variveis de condio: a ca cwait(c): suspender o processo que chamou pendurando-o na condiao c c. O monitor ca dispon para utilizao por outro processo. vel ca csignal(c): continuar a execuo de algum processo suspendido aps um ca o cwait na mesma condio c. Se existirem diversos processos ca ` espera, escolher um deles (e suspender o que enviou o csignal); a se no existir nenhum, ento no faz nada (o sinal perdido e a a a e no tem efeito). a Estrutura de um monitor:

fila de processos para entrar rea de espera do monitor Entrada MONITOR dados locais

condio c1 cwait(c1)

variveis de condio

Procedimento 1

condio c n cwait(cn) Procedimento k

fila urgente csignal Cdigo de inicializao

Sada

47

Nota: as operaes com cwait/csignal de um monitor so diferentes das co a wait/signal de um semforo. Se uma tarefa a executar dentro de um monia tor envia um csignal e nenhuma tarefa est ` espera desse sinal, ento o sinal aa a e perdido. Fila urgente (possibilidade): para os processos que enviaram um sinal mas ainda no terminaram o procedimento do monitor, no terem que ir para a la a a de entrada = passa a ter prioridade sobre os processos na la de entrada. (Nota: csignal processo que sinalizou suspenso e a execuo passa para o e ca sinalizado). Mensagens Uma das formas mais naturais de comunicar. Conjunto m nimo de operaes: co envia(destino,mensagem); recebe(origem,mensagem); Caracter sticas de projecto: 1. Sincronizao. ca 2. Endereamento. c 3. Formato. 4. Disciplina da la. 1. Sincronizao: ca Enviar/envio: bloqueante ou no bloqueante. a Receber/recepo: bloqueante, no-bloqueante, teste de recepo. ca a ca Envio bloqueante: o processo que envia bloqueia at a mensagem ser recebida e pelo receptor. Envio no-bloqueante: o processo que envia continua (regressa da primitiva a envia) imediatamente no se efectuando a espera pela recepo da mensagem. a ca 48 ou ou send(destination,message); receive(source,message);

Recepo bloqueante: o processo que recebe bloqueia at que chegue uma ca e mensagem com caracter sticas desejadas (e.g. uma certa origem) para ser fornecida ao processo receptor. Recepo no-bloqueante: a primitiva recebe regressa imediatamente deca a volvendo a mensagem, se ela existir, ou um cdigo informando da presente o inexistncia para recepo de qualquer mensagem com as caracter e ca sticas desejadas. Teste de recepo: o processo que recebe pode usar uma primitiva para testar ca se j est dispon para recepo alguma mensagem com certas caracter a a vel ca sticas desejadas. a ca Troca ass ncrona de mensagens: (envio no-bloqueante e recepo bloqueante ou no) a O processo emissor, aps efectuar o envio da mensagem continua normalo mente. Este mtodo requer a utilizao de buers para armazenar mensagens em e ca envio ou ainda no lidas pelo receptor. a ca Troca s ncrona de mensagens: (envio e recepo bloqueantes) Este mtodo designado frequentemente de rendezvouz. e e O emissor bloqueia at a mensagem ser (efectivamente) entregue/recebida e (quando o receptor executa a primitiva de recepo). ca Neste caso o envio e a recepo so concretizados em simultneo pelo que ca a a no requerida a utilizao de um buer. a e ca Invocao remota: ca Baseia-se no conceito de chamada de procedimento remoto. Utilizada em sistemas distribu dos. O emissor continua a execuo aps o destinatrio enviar uma resposta (que ca o a pode ser simplesmente uma conrmao ou conter ainda outros dados). ca

49

2. Endereamento das mensagens: directo ou indirecto. c Endereamento directo: o processo que envia fornece um identicador esc pec co do processo de recepo. ca Processo que recebe: Directo expl cito: processo que recebe designa qual o processo do qual quer receber. Directo impl cito: processo que recebe deixa em aberto a origem da mensagem, mas o parmetro origem contm no regresso o identicador do a e processo que realmente enviou a mensagem devolvida pela primitiva de recepo. ca Endereamento indirecto: a mensagem enviada para (e lida de) uma caixa c e postal (ou caixa de correio) - mailbox:
P
1

Q1 Caixa de correio

P1

Porto Q Pn

Q1

Pn

Vantagens: No obriga ` identicao precisa do processo destinatrio mas sim de uma a a ca a caixa de correio que pode receber um nome (ou endereo) pr-denido. c e Possibilidade de permitir a comunicao de vrias formas: ca a Um para um. Muitos para muitos. Muitos para um (clientes/servidor. . . ; neste caso: caixas de correio frequentemente designadas por portos). Um para muitos (broadcast ou multicast). 50

Esta diversidade de tipos de comunicao poss pois uma mailbox pode ca e vel ser partilhada por vrios processos; e o processo que envia apenas necessita de a saber o nome da mailbox e no o nome dos destinatrios, o que nalguns casos a a seria praticamente imposs vel. Associao processos/mailboxes pode ser ca Esttica: mailboxes (e.g. portos) associados permanentemente a um proa cesso particular. Tambm em relaes um-para-um a associao normale co ca e mente esttica. a Dinmica: Quando existem muitos processos a enviar, a associao sena ca der/mailbox pode ser dinmica. Para tal so muitas vezes usadas primia a tivas tais como connect e disconnect.

3. Tipo/contedo/formato das mensagens u As mensagens so na maior parte dos casos estruturas de dados denidas pelo a utilizador ou pelo programador do sistema. Contedo e comprimento das mensagens: pode ser xo ou varivel. u a

Tipo de Mensagem ID de Destino Cabealho ID de Origem Comprimento Mens. Informao Controlo

Corpo

Contedo Mensagem

O receptor necessita de conhecer o formato do contedo dos dados para os u poder interpretar . . . 51

Exemplo: o conjunto de 4 bytes 0x53, 0x54, 0x52, 0x00 pode ser interpretado de muitas formas: Um nmero inteiro de 32 bits na forma little endian (1398034944). u Um nmero inteiro de 32 bits na forma big endian (5995539). u Uma cadeia de caracteres terminada pelo caracter nulo (STR). outras. . . Vrias formas de interpretar um conjunto de dados emissor e receptor a devem usar a mesma representao ou, se isso for imposs ca vel, fazer a converso a adequada. Na comunicao entre mquinas de arquitecturas diferentes pode ser neca a cessrio fazer a converso do formato dos dados para poderem ser manipulados a a pelos processos. Por exemplo, diferentes ordens dos bytes para representar inteiros hiptese: o adoptar ordem padro e as mquinas que usam ordens diferentes devem efectuar a a a converso dos dados aps as recepes e antes de envios de mensagens. a o co Mensagens podem ter o seu formato denido pelo sistema ou pelo utilizador. Num espao de endereamento comum (memria partilhada) as mensagens c c o podem ser passadas por: ca Referncia: as primitivas de envio e recepo usam um ponteiro para a e zona de memria onde se encontra a mensagem; Vantagens: o Mais rpida pois s o ponteiro efectivamente enviado; depois o ponteiro a o e usado pelo receptor para localizar a mensagem. e Economiza memria pois existe apenas uma cpia de cada mensagem e o o no uma cpia por processo. a o Desvantagem: o processo que envia no pode reutilizar a memria da a o mensagem pois corre o risco de o receptor ainda no a ter lido. a Valor: copiando os dados. 52

Passagem por referncia deve ser feita de forma s e ncrona para evitar que o emissor re-escreva uma nova mensagem por cima da anterior antes de o receptor a ler. Buers: so parcelas de memria utilizadas para o transporte de mensagens a o entre o emissor e o receptor. Os buers permitem que os processos funcionem de forma ass ncrona, pois o emissor copia a mensagem para um buer e este depois colocado na mailbox e do receptor. Problemas e limitaes no uso de buers: co O tamanho dos buers limitado e muitas vezes xo. e Se um processo envia uma mensagem para uma mailbox cheia pode car bloqueado o que pode levar ` inverso de prioridades. a a A utilizao de buers requer mais memria que poder ser escassa em ca o a sistemas embebidos. Problema da inverso de prioridades: um processo prioritrio ca bloqueado a a porque um processo de prioridade mais baixa tem a mailbox cheia poss vel resoluo com uma primitiva de envio por tentativa, i.e. a primitiva s envia se ca o existir espao na mailbox, seno devolve um cdigo de erro. c a o poss implementao de uma primitiva de recepo no bloqueante com e vel ca ca a o mesmo funcionamento perante um buer vazio. vel ca Problema da memria: tamanho de buers limitado poss soluo pela o denio de um protocolo de fragmentao/defragmentao de mensagens. ca ca ca Mas se existe muita limitao de memria, o melhor no usar buers na ca o e a comunicao entre processos. ca Podem ser usadas mensagens para sincronizao e comunicao entre tarefas. ca ca

53

Exemplo da utilizao de mensagens como forma de sincronizao e comuca ca nicao de dados entre processos: ca Processo A CICLO Aquisio de dados; ca envia(ProcessoB,dados); ... FIMCICLO Processo B CICLO recebe(ProcessoA,dados); Calcula FFT; ... FIMCICLO

As mensagens so uma forma natural de sincronizao/comunicao entre a ca ca sistemas distribu dos. Nestes sistemas existem (normalmente muitos) pares de entidades de processamento que no possuem memria partilhada entre si. a o

54

Chamada de Procedimento Remoto Remote Procedure Call (RPC). Permitir que programas em diferentes mquinas interactuem usando a semntica a a de chamada/regresso de procedimentos, tal como se os dois programas estivessem a correr na mesma mquina. a A chamada ao procedimento usada para aceder a servios remotos: e c

Aplicao cliente

Aplicao servidora remota

Resposta local

Resposta local

Resposta local

Chamada de procedimento local

Chamada de procedimento local

Aplicao local ou sist. de operao

Stub local Mecanismo RPC Chamada de procedimento remoto Chamada de procedimento remoto

Stub local Mecanismo RPC

O mecanismo RPC pode ser visto como um renamento de passagem bloqueante de mensagens. O programa que chama o RPC faz uma chamada a procedimento normal com parmetros na sua mquina. Por exemplo: a a CALL P(X,Y), onde, P = nome do procedimento, X = parmetros de entrada, a Y = parmetros devolvidos. a

55

Vantagens: 1. Chamada de procedimentos abstraco largamente aceite, usada, e comca preendida. 2. RPC permite que interfaces remotos sejam especicados como um conjunto de operaes com certos nomes e envolvendo certos tipos de dados. Assim, co o interface pode ser claramente documentado e pode-se vericar estaticamente a ocorrncia de erros de tipo de dados em programas distribu e dos. 3. E especicado um interface padro e precisamente denido a o cdigo de comunicao de uma aplicao pode ser gerado automaticao ca ca mente. podem-se escrever mdulos cliente e servidor que podem ser transferidos o entre computadores e sistemas de operao com pouca ou nenhuma modica cao ou recodicao. ca ca Passagem de parmetros em RPC: por valor ou por referncia. a e a o a Passagem por valor: so passados os prprios valores dos parmetros. Os parmetros so simplesmente copiados para uma mensagem e enviados ao a a sistema remoto. Passagem por referncia: so passados ponteiros para uma localizao que e a ca contm os valores. Em sistemas distribu e dos mais dif implementar a e cil chamada por referncia. E necessria a existncia de ponteiros vlidos em e a e a todo o sistema distribu do. A diculdade de implementar esta capacidade pode no valer a pena o esforo. a c Representao de parmetros em RPC: quando esto envolvidos dica a a ferentes tipos de mquinas, linguagens de programao, ou sistemas de a ca operao pode ser necessrio implementar converso de dados num mecaca a a nismo RPC. Isso pode ser feito por exemplo em torno de uma representao ca padro. a

56

Ligao cliente/servidor em RPC: persistente ou no persistente. ca a Ligao no-persistente (LNP): a ligao desencadeada quando se reca a ca e aliza um RPC e logo que sejam devolvidos dados a ligao desmanca e telada. Ligao requer informao de estado em ambos os lados so ca ca a usados menos recursos com uma LNP; mas RPC frequentes muito overhead no estabelecimento de ligaes. co ca e e Ligao persistente: uma ligao estabelecida atravs de um RPC e ca depois a ligao mantm-se ao longo da utilizao de RPCs repetidos no ca e ca futuro. RPCs S ncronos versus Ass ncronos: S ncronos como uma chamada a uma sub-rotina: o processo que chama espera at que lhe sejam e devolvidos valores de resposta; Ass ncronos processo que chama no a precisa de esperar pela devoluo dos resultados, podendo continuar para ca s mais tarde eventualmente solicitar os resultados. Possibilita aproveitar o melhor o paralelismo num sistema distribu do.

Inverso de Prioridades a a ca Exemplo de inverso de prioridades devido a conteno no acesso a um recurso:

P1 Prioridade=30

P2 P3 Prioridade=20 Prioridade=10

57

Outro exemplo: um processo P3 est a usar um recurso com excluso mtua a a u (e.g. dentro de uma regio cr a tica delimitada por um semforo). a Qualquer outro processo P1 , qualquer que seja a sua prioridade (P1 > P3 , P1 = P3 , ou P1 < P3 ) que pretenda usar o recurso ter que esperar at que P3 a e o liberte. No entanto, se aparecer qualquer outro processo com prioridade P2 , tal que P1 < P2 < P3 (P1 o mais prioritrio), e que que pronto a executar vai (P2 ) e a retirar o processador ao processo P1 devido ao mecanismo de inverso de a prioridades. O processo P2 vai desta forma atrasar a execuo do processo P1 apesar de ter ca prioridade inferior (P1 < P2 ) e de no ter qualquer envolvimento com o recurso a esperado por P1 . O processo P2 , ao atrasar P3 , atrasa indirectamente P1 pois P1 est bloqueado num recurso que P3 possui. a O exemplo gracamente:
P1: prioridade alta P2: prioridade mdia P3: prioridade baixa A executar Dentro da zona crtica Bloqueado por outro processo

P3 P2 P1 t

Prioridade mais alta numericamente mais baixa. A inverso de prioridades pode acontecer para qualquer nmero de processos a u podendo bloquear indenidamente o processo de prioridade mais alta. Tambm pode ocorrer inverso de prioridades quando se faz a passagem e a s ncrona de mensagens (rendezvous). 58

Problema da Inverso de Prioridades: Solues a co Uma soluo seria: no permitir a interrupo de tarefas dentro de seces ca a ca co cr ticas. S aceitvel se o tempo de execuo dentro d1 seco cr o a ca ca tica for muito pequeno, uma vez que pode levar ao bloqueamento de tarefas de elevada prioridade. Outra soluo ca

Protocolos de Herana de Prioridades (PHP) c Quando uma tarefa T bloqueia outras tarefas de prioridade superior, ento a T v o seu n e vel de prioridade subir para o n vel de prioridade mais elevado das tarefas bloqueadas (por T ) at sair da seco cr e ca tica, altura em que a sua prioridade restabelecida no valor original. e = O processo que entrou primeiro na zona cr tica executa to rapidamente a quanto poss vel por forma a no atrasar mais do que indispensvel o a e a processo de prioridade mais elevada

59

Aplicando o PHP ao exemplo anterior temos:


P1: prioridade alta P2: prioridade mdia P3: prioridade baixa A executar Dentro da zona crtica Bloqueado por outro processo

P3 P2 P1 t

O processo P1 ca bloqueado por pretender entrar na seco cr ca tica onde j a est o processo P3 . a A prioridade do processo P3 elevada para o mesmo valor de P1 . e Assim o processo P3 no bloqueado por P2 , terminando a execuo da zona a e ca cr tica mais rapidamente. Quando P3 sai da zona cr tica, a sua prioridade regressa ao valor original, pelo que o processo P1 o interrompe e executa at ao m. e Aps P1 terminar executado o processo P2 at ao m. o e e Quando P2 termina ento realizado o resto da execuo de P3 . e a ca A concluso dos trs processos obedece assim ` ordem estabelecida pelas a e a prioridades.

60

Denio do Protocolo Bsico de Herana de Prioridades (PBHP) ca a c 1. A tarefa T com prioridade mais alta do conjunto de tarefas prontas a executar colocada em execuo. Antes de T entrar numa seco cr e ca ca tica tem de primeiro fechar um semforo que protege a seco cr a ca tica. Se o semforo a j estiver fechado, o acesso negado e a tarefa bloqueada. Caso contrrio, a e e a a tarefa prossegue com a execuo da seco cr ca ca tica. Quando a tarefa abandona a seco cr ca tica, o semforo correspondente aberto e se houver alguma a e tarefa de prioridade mais elevada bloqueada por T , essa tarefa acordada. e 2. A tarefa T utiliza a prioridade que lhe foi atribu a menos que se encontre da numa seco cr ca tica e, por essa razo, esteja a bloquear tarefas de prioridade a mais elevada. No caso de haver tarefas de prioridade mais elevada bloqueadas por esta tarefa, T herda a prioridade mais elevada das tarefas por ela bloqueadas. Quando T abandona a seco cr ca tica regressa ` prioridade que a tinha inicialmente. 3. A herana de prioridades goza da propriedade transitiva. I.e. considerando c trs tarefas T1 , T2 e T3 de prioridades decrescentes; se T3 bloqueia T2 e T2 e bloqueia T1 , ento T3 herda a prioridade de T1 atravs de T2 . Por outro lado, a e as operaes de herana e restauro de prioridades devem ser indivis co c veis. 4. Uma tarefa T pode retirar a execuo a Tl se T no estiver bloqueada e a ca a sua prioridade for superior a Tl (atribu ou herdada). da A utilizao destes protocolos leva a duas formas de blocagem: ca Blocagem directa: ocorre quando um processo de alta prioridade bloquee ado quando tenta trancar um semforo j trancado (e.g. por uma tarefa a a de baixa prioridade). e e Push-through: ocorre quando um processo de prioridade mdia bloqueado por um processo de prioridade baixa que herdou a prioridade de um processo de prioridade mais elevada. 61

Caracter sticas do Protocolo Bsico de Herana de Prioridades a c Possibilidade de prever o tempo durante o qual uma tarefa de prioridade elevada pode car bloqueada por outra de prioridade inferior. 1. Uma tarefa Ta pode estar bloqueada por uma tarefa de prioridade inferior Tb , no mximo durante a execuo de uma seco cr a ca ca tica, independentemente do nmero de semforos que estas tarefas partilham. u a A prova disto obtida vericando simplesmente que uma tarefa de priorie dade baixa s pode bloquear uma de prioridade superior se a primeira j se o a encontrar a executar uma zona cr tica partilhada por ambas. Assim que a primeira tarefa sai da zona cr tica, pode ser-lhe retirado o processador pela tarefa de prioridade mais elevada, e a partir daqui Tb no pode voltar a a bloquear Ta . 2. Da mesma forma, se para uma tarefa Ta existirem n tarefas de prioridade inferior, Ta pode ser bloqueada no mximo durante a durao de uma seco a ca ca cr tica em cada um dos conjuntos com quem partilha semforos. a 3. Um semforo S pode bloquear uma tarefa T atravs de push-through a e apenas se S acedido por uma tarefa de prioridade inferior a T e por outra e tarefa de prioridade igual ou superior a T . Se uma tarefa de prioridade baixa Tb acede a um semforo S, e se S no a a e acedido por uma tarefa de prioridade igual ou superior a Ta , ento a zona a cr tica de Tb no pode herdar uma prioridade igual ou superior ` de Ta e por a a isso interrompida por Ta . e 4. Uma tarefa T pode ser bloqueada no mximo numa seco cr a ca tica para cada semforo. a Como j vimos, uma tarefa Tb pode bloquear outra de maior prioridade Ta , a apenas se a primeira se encontrar a executar numa seco cr ca tica comum. ca tica, regressa ` prioridade que tinha ` entrada a a Assim que Tb sair da seco cr e por isso imediatamente interrompida por Ta . Por isso, apenas uma seco e ca cr tica das que so comuns pode bloquear Ta . a Caracter stica adicional consequncia das anteriores: e = Com o protocolo bsico de herana de prioridades, se existirem m semforos a c a que podem bloquear T , ento T pode ser bloqueado no mximo m vezes a a (por tarefas de prioridade inferior). E poss determinar o pior caso de bloqueio que uma tarefa pode expevel rimentar, desde que no existam impasses (deadlocks). a 62

Problemas com o PBHP Apesar de permitir resolver o problema da inverso de prioridades, o PBHP a apresenta as seguintes decincias: e 1. No previne por si s a ocorrncia de impasses (deadlocks). a o e 2. A durao do bloqueio de uma tarefa, se bem que limitada, pode ser consideca ravelmente longa por a tarefa encontrar bloqueio em vrias seces cr a co ticas. Exemplo de impasse: dois processos P1 e P2 que usam dois recursos S1 e S2 ; com prioridade(P1 ) > prioridade(P2 ); P2 : wait(S2) P2 : P1 : P1 : P1 : wait(S1) activado wait(S2) wait(S1) P2 continua (S1 aberto). P2 suspende (prioridade(P1 ) > prioridade(P2 )). P1 continua (S2 aberto). P1 bloqueia (S1 j trancado por P2 ), a (prioridade(P2 ) prioridade(P1 )). P2 bloqueia (S2 j trancado por P1 ), a situao de (inter-) impasse. ca

= Emergiu uma situao de Impasse; Interblocagem; deadlock. ca Protocolo de Tecto de Prioridade Priority Ceiling Protocol (PCP). E uma soluo para o problema da inverso de prioridades. ca a O objectivo deste protocolo prevenir a criao de impasses (deadlocks) e e ca blocagens mltiplas. u Ideia base: fazer com que quando uma tarefa T bloqueia outra tarefa que se encontra dentro de uma seco cr ca tica, e executa a sua prpria seco cr o ca tica, esta nova seco cr ca tica vai ser executada com uma prioridade superior a todas as prioridades (herdveis) das seces cr a co ticas interrompidas (bloqueadas). Se esta condio no puder ser satisfeita, ento a tarefa T v negado o seu ca a a e acesso ` seco cr a ca tica e bloqueada. e 63

Isto conseguido comeando por atribuir uma prioridade de tecto a cada e c um dos semforos, a qual igual ` maior das prioridades que pode utilizar esse a e a semforo. a E permitido a uma tarefa iniciar uma nova seco cr ca tica se a sua prioridade for superior a todas as prioridades de tecto de todos os semforos presentemente a fechados por outras tarefas. Prioridade de tecto de um semforo: a prioridade da tarefa com maior pria e oridade que pode fechar esse semforo. a A prioridade de tecto de um semforo S, constitui portanto a prioridade a mais elevada que pode ser herdada por uma tarefa durante a execuo da ca seco cr ca tica correspondente. Se uma tarefa T fecha o semforo S, a seco cr a ca tica correspondente de T pode herdar no mximo uma prioridade igual ` prioridade de tecto de S. a a

Denio do Protocolo de Tecto de Prioridade ca A tarefa T , que tem a prioridade mais elevada de entre as tarefas prontas a executar, recebe acesso ao processador. a a Seja S o semforo com prioridade de tecto mais elevada de todos os semforos actualmente fechados por outras tarefas que no T . a Antes de T entrar numa zona cr tica, tem de primeiro conseguir acesso fechando um semforo S que a protege. a Se a prioridade de T no superior ` prioridade de tecto de S , ento T a e a a bloqueada e o fecho do semforo S negado. Neste caso, diz-se que T est e a e a bloqueada no semforo S . a Caso contrrio, T fecha o semforo S e entra na seco cr a a ca tica. Quando uma tarefa T sai duma sua seco cr ca tica, o semforo associado a e aberto e se existirem processos bloqueados nesse semforo, ser acordado o que a a tiver a prioridade mais elevada.

64

Uma tarefa T utiliza a prioridade que lhe foi atribu da, a menos que esteja numa seco cr ca tica e que, por essa razo, tenha bloqueado tarefas de prioridade a superior. Neste caso, T herda a prioridade mais elevada dessas tarefas. Quando T abandona uma seco cr ca tica, retoma a sua prioridade que tinha ` entrada da seco cr a ca tica. A herana de prioridades transitiva e as operaes de herana e retoma de c e co c prioridades devem ser indivis veis. Uma tarefa T , quando no pretende entrar numa seco cr a ca tica, pode bloquear outra tarefa Tb se a sua prioridade for superior ` prioridade (atribu a da ou herdada) de Tb .

O PCP pode levar a trs formas de blocagem e Blocagem directa: . . . Push-through: . . . Ceiling blocking: este tipo de blocagem necessrio para evitar a e a ocorrncia de deadlocks, pertencendo ` classe de protocolos pssimistas e a e os quais criam por vezes blocagens desnecessrias mas garantem a inea xistncia de impasses. e Apesar desta nova forma de blocagem, o pior caso de blocagem em relao ao PBHP bastante melhorado uma ca e vez que com o PCP uma tarefa pode ser bloqueada no mximo durante a a maior das seces cr co ticas de prioridade inferior, ao contrrio do PBHP onde a durao mxima do bloqueio de um processo a ca a min(m, n) seces cr e co ticas, onde m o nmero de processos de prioridade e u inferior que podem bloquear a tarefa, e n o nmero de semforos utilizados u a por esta.

65

Sobre a Implementao do PCP ca Ter que existir no sistema uma lista de semforos trancados, ordenada pelas a a prioridades de tecto. Cada semforo trancado ter que armazenar informao a a ca sobre a tarefa que o trancou e o seu valor de tecto. As chamadas ao sistema (indivis veis) para trancar ou libertar semforos a a mantm actualizadas as listas de processos e semforos trancados. e A funo wait poder ainda detectar qualquer tentativa de auto-bloqueio ca a de uma tarefa e neste caso abortar essa tarefa uma vez que isso s poder ser o a devido a um erro de programao. ca Caracter sticas do Protocolo de Tecto de Prioridades Nota: uma tarefa s pode ser bloqueada por outra de prioridade inferior se a o segunda se encontrar a executar uma seco cr ca tica quando a primeira iniciada. e Denio: diz-se que h blocagem transitiva se uma tarefa T bloqueada por ca a e Ti que por sua vez bloqueada por Tj . e Caracter sticas: 1. Uma tarefa s pode ser bloqueada no primeiro semforo que requer, pois a o a partir desse momento, todos os pedidos de wait sobre outros semforos sero a a concedidos. 2. Uma tarefa T pode ser bloqueada por uma de prioridade inferior Tb apenas se a prioridade de T no for superior ` maior prioridade de tecto de todos a a os semforos trancados por Tb quando T iniciada. a e 3. Se Ti interrompida por Tj , a qual entra numa seco cr e ca tica, ento Ti no a a pode herdar a prioridade de Tj enquanto Tj no terminar. a 4. O protocolo PCP previne a blocagem transitiva. 5. Se Tb for uma tarefa de prioridade inferior ` da tarefa Ti , ento Ti poder a a a ser bloqueada por Tb por um tempo mximo igual ` durao de uma seco a a ca ca cr tica comum.

66

Uma das vantagens que advm da utilizao de protocolos PCP a preveno e ca e ca de deadlocks, porque se uma tarefa tenta aceder a uma zona cr tica s o poder o a fazer se puder completar a execuo sem car bloqueada. ca Se uma tarefa T se suspende n vezes durante a sua execuo, ento esta poder ca a a ser bloqueada no mximo por (n + 1) elementos no necessariamente distintos a a do conjunto de tarefas que tm seces cr e co ticas comuns e cujas prioridades so a inferiores ` de T . a

Protocolo de Tecto Imediato de Prioridades (PTIP, Herana c Imediata) Tal como no PCP, a cada processo atribu uma prioridade esttica por e da a defeito (por exemplo, por um mtodo de metas mais cedo). e O PTIP um protocolo baseado no anterior, mas cuja diferena consiste e c em elevar a prioridade de um processo assim que ele tranca um recurso. Um processo tem uma prioridade dinmica que o mximo entre a sua prpria pria e a o oridade esttica e os valores de tecto de quaisquer recursos que tenha trancados a na sua posse. Isto poss e vel pois cada semforo/recurso tem estaticamente associado o a tecto, que a mxima prioridade dos processos que o utilizam. e a Como consequncia, um processo s ser bloqueado durante o in da sua e o a cio execuo. Assim que o processo inicia a execuo, todos os recursos por ele ca ca utilizados estaro dispon a veis, caso contrrio teria cado bloqueado pois alguns a processos teriam uma prioridade igual ou superior ` sua. a

67

Estimao dos Tempos de Execuo dos Programas ca ca Dado que os sistemas de tempo-real devem cumprir metas temporais, ime portante poder estimar de uma forma mais ou menos correcta os tempos de execuo dos programas. ca No entanto esta tarefa apresenta-se bastante dif pois depende de vrios cil a factores de dif modelao: cil ca Optimizao do Cdigo Fonte: o cdigo pode ser escrito de forma mais ou meca o o nos optimizada para tirar partido das particularidades da arquitectura a que se destina. Em funo disso, o cdigo pode executar mais ou menos rapidamente. ca o Compilador: A transformao entre cdigo fonte e cdigo mquina no ca o o a a e un voca. Por isso, diferentes compiladores geram diferentes cdigos que podero o a ter diferentes graus de optimizao. ca a a Arquitectura da mquina: h aspectos das arquitecturas das mquinas/sistemas a que tm efeitos no tempo de execuo dos programas que so muitas vezes e ca a dif ceis de estimar. Exemplos: O tempo que um bocado de cdigo demora a efectuar a comunicao o ca atravs de um dispositivo de rede no determin e a e stico: depende do tipo de rede, da carga da mesma, da carga da mquina remota, etc. a Nmero de registos. u Tamanho e velocidade da memria. o Utilizao de memrias cache. ca o Nmero de ciclos por instruo que poder depender por exemplo da utiu ca a lizao ou no de pipelining. ca a a o a Sistema Operativo: O escalonamento dos processos e a gesto de memria so da responsabilidade do sistema operativo e ambos tm uma forte inuncia no e e tempo de execuo. ca

68

Estes factores que acabmos de listar tm ainda a particularidade de interaa e girem entre si de forma mais ou menos complexa, e para poder fazer estimativas dos tempos de execuo necessrio modelar estas interaces de forma muito ca e a co precisa. Exemplo da inuncia do compilador no tempo de execuo: e ca Consideremos o seguinte cdigo: o L1: a=b*c; L2: b=d-e; L3: d=a-f; O tempo total de execuo 3 Texec(Li ). Mas o tempo, Li , para execuca e i=1 tar cada uma das linhas depende do trabalho do compilador. Por exemplo: L1.1: L1.2: L1.3: L1.4: L1.5: L1.6: L1.7: obtm endereo de c e c load c obtm endereo de b e c load b multiplica obtm endereo de a e c armazena resultado em a

E se as/algumas variveis j estiverem em registo?. . . a a Exemplo de incerteza intr nseca ao prprio programa: o while(P){ I1; I2; I3; } P uma condio e I1, I2, I3 so instrues. e ca a co Depende da evoluo do valor lgico da condio P. ca o ca Por esta razo, algumas linguagens de tempo-real no permitem a utia a lizao de ciclos while. ca 69

Testes de Escalonamento e Tempos de Resposta Dado que muitas aplicaes em tempo-real so aplicaes embebidas, e ainda co a co dada a natureza multi-tarefa das mesmas, estas so extremamente dif a ceis de testar. Logo: importante desenvolver formas de vericao do seu funcionamento ca ainda durante a fase de projecto. Um dos aspectos que absolutamente indispensvel vericar se todas as e a e tarefas podero executar de acordo com as restries temporais impostas para a co o bom funcionamento do sistema. Surgem ento os testes de escalonamento de tarefas e o a clculo de tempos de resposta de tarefas. a

Modelo de Processos Peridicos o Assume-se que a aplicao constitu por um nmero xo de processos. ca e da u Todos os processos so peridicos com per a o odos conhecidos. So ignorados todos os overheads do sistema, tempos de comutao, etc a ca (assume-se que tm custo temporal nulo). e Todos os processos tm uma meta temporal que igual ao seu per e e odo (i.e. cada processo deve completar antes de ser de novo activado). Todos os processos tm um tempo xo de execuo no pior caso. e ca Os processos so completamente independentes uns dos outros. a Instante cr tico: ocorre num instante de tempo em que todos os processos sejam activados em conjunto.

70

Executivo C clico Com um conjunto de processos puramente peridicos, poss o e vel construir um escalonamento completo que, quando repetidamente executado, causa que todos os processos corram com o per odo correcto. O executivo c clico essencialmente uma tabela de chamadas a procedimentos, e onde cada procedimento representa um processo. A tabela completa conhecida como um ciclo maior que tipicamente conse e titu por um conjunto de ciclos menores. do Cada ciclo menor iniciado quando ocorre uma interrupo peridica que e ca o controla o executivo em causa. Em cada ciclo menor executado sequencialmente um (sub-) conjunto de e processos. Esta sequncia de processos repete-se no correspondente ciclo menor e do ciclo maior seguinte. o Exemplo: com 4 ciclos menores de 25 ms cada que compem um ciclo maior de 100 ms. Processo Per odo, T Tempo de Clculo, C a A 25 10 B 25 8 C 50 5 D 50 4 E 100 2

Uma poss transformao/implementao num executivo c vel ca ca clico:


Interrupo A B C Interrupo A B D E Interrupo A B C Interrupo A B D

Tempo

71

O cdigo para um tal sistema poderia ter a seguinte forma simples: o ciclo Espera por Interrup~o; ca Procedimento do Processo Procedimento do Processo Procedimento do Processo ca Espera por Interrup~o; Procedimento do Processo Procedimento do Processo Procedimento do Processo Procedimento do Processo Espera por Interrup~o; ca Procedimento do Processo Procedimento do Processo Procedimento do Processo ca Espera por Interrup~o; Procedimento do Processo Procedimento do Processo Procedimento do Processo mciclo;

A; B; C; A; B; D; E; A; B; C; A; B; D;

Algumas caracter sticas deste mtodo do executivo c e clico: Nenhum processo real executado; cada ciclo menor apenas uma e e sequncia de chamadas a procedimentos. e Os procedimentos partilham um espao de endereamento comum e podem c c portanto passar dados entre eles. Estes dados no precisam de ser protegia dos (por um semforo, por exemplo) se cada processo no possuir nenhum a a recurso quando termina um ciclo (menor) de execuo (o que implica que ca no existam acessos concorrentes). a Se for poss construir o executivo c vel clico, ento nenhum teste de escaloa nabilidade necessrio (a prova de que o sistema cumpre as metas efece a e tuada por construo). Contudo, para sistemas com elevada utilizao a ca ca construo do executivo pode ser dif - trata-se de um problema comca cil plexo. 72

Diculdades e desvantagens do executivo c clico: Todos os per odos dos processos devem ser mltiplos do tempo de ciclou menor. Diculdade de incorporar processos espordicos. a Diculdade de incorporar processos com per odos longos; o tempo do ciclomaior o mximo per e a odo que pode ser usado sem recurso a escalonamento secundrio (i.e. um processo que chame um procedimento secundrio em a a cada N ciclos menores). A diculdade de efectivamente construir o executivo. Um processo com tempo de computao varivel pode precisar de ser dica a vidido num nmero de procedimentos de durao xa. Mas isto diculta u ca a estruturao do software, e portanto muito sujeito a erros. ca e Escalonamento Baseado em Processos O funcionamento do executivo c clico baseado apenas na execuo de uma e ca sequncia de chamadas a procedimentos. No existe a noao de processo due a c rante a execuo. ca Alternativa: suportar directamente a execuo de processos (como num sisca tema operativo genrico) e determinar qual o processo a executar em cada e instante a partir de um atributo de prioridade. Com este mtodo assume-se que um processo est num de um conjunto de e a veis. Por exemplo, assumindo que no existe comunicao entre a ca estados poss processos podemos pensar nos seguintes estados: pronto; suspenso ` espera de um evento de temporizao - apropriado para proa ca cessos peridicos; o suspenso ` espera de um evento que no de temporizao - apropriado para a a ca processos espordicos; a 73

Com escalonamento baseado em prioridades, um processo de alta prioridade pode ser activado durante a execuo de um processo de baixa prioridade. Nesta ca situao existem duas hipteses: ca o Num sistema preemptivo realizar-se- uma comutao imediata para o proa ca cesso de alta prioridade. e Num sistema no-preemptivo permitido que o processo de baixa prioria dade complete a sua presente execuo antes do outro executar. ca Em geral os sistemas preemptivos so preferidos porque permitem que os a processos de alta prioridade sejam mais reactivos. Entre os extremos da preempo e da no-preempo, existem estratgias ca a ca e alternativas que permitem que um processo de baixa prioridade continue a executar durante um per odo limitado de tempo (no necessariamente at ` a e a concluso). a

Atribuio de Prioridades por Razo Montona ca a o Com o modelo de processos peridico existe um mtodo simples mas ptimo o e o de atribuio de prioridades: atribuio de prioridades por razo montona. ca ca a o E atribu a cada processo uma prioridade (nica) em funo do seu per da u ca odo: quanto menor o per odo, maior a prioridade, i.e. Ti < Tj Pi > Pj , onde: Ti tempo m nimo entre activaes do processo i (per co odo do processo). Pi prioridade do processo i. Esta atribuio de prioridades ptima no seguinte sentido: se um conjunto ca eo de processos pode ser escalonado usando escalonamento preemptivo baseado em prioridades xas, ento esse conjunto de processos tambm pode ser escalonado a e com escalonamento de razo montona. a o Notemos que esta optimalidade aparece num contexto em que os valores das metas temporais so iguais aos per a odos de activao: Di = Ti . ca 74

Teste da Possibilidade de Escalonamento Baseado no Factor de Utilizao ca Aplica-se a um modelo de processos peridicos com escalonamento por prioo ridades com razo montona. a o Este teste consiste em vericar se a seguinte condio se verica: ca Ci N 21/N 1 i=1 Ti
N

(Liu e Layland, 1973)

Ci pior tempo de clculo do processo i. a Ti tempo m nimo entre activaes do processo i (per co odo do processo). Notemos que a soma calcula a percentagem total de utilizaao do processador c por parte do conjunto de todos os processos. Para valores grandes de N o limite superior para a soma dos factores de utilizao (Ci /Ti ) tende para 69.3%. ca Tabela de limites de utilizao para alguns valores de N : ca N Limite de utilizao (%) ca 1 100.0 2 82.8 3 78.0 4 75.7 5 74.3 10 71.8 Este teste de escalonamento poder fornecer apenas uma simples resposta a em termos de sim ou no. No d qualquer indicao sobre o verdadeiro a a a ca tempo de resposta dos processos. Este teste uma condio suciente mas no necessria. e ca a a Se um conjunto de processos passa no teste ento sero cumpridas todas as a a metas; mas se falhar o teste, nada se pode concluir (pode falhar ou no). a 75

Alternativa para testar a escalonabilidade Diagrama de Gantt: desenhar diversas linhas-temporais cada uma das quais representa um processo. Cada linha temporal identica numa escala temporal os intervalos de tempo em que o processo est em execuo, em preempo, a ca ca ou inactivo, e os instantes de tempo em que so cumpridas ou falhadas metas a temporais - para desenhar estas linhas portanto necessrio simular o funcioe a namento dos processos. Teste de escalonabilidade pelo Diagrama de Gantt: at que instante temporal e teremos que completar o diagrama at poder concluir que nenhuma meta ser e a falhada no futuro? Para processos com o mesmo instante de activao (i.e partilham um instante ca cr tico) basta desenhar/analisar at decorrer o maior dos per e odos dos processos (Liu e Layland, 1973). Portanto, se todos os processos cumprem a sua primeira meta temporal, ento a tambm cumpriro todas as metas futuras. e a

Anlise/Clculo dos Tempos de Resposta a a O tempo de resposta de um processo o tempo que vai desde o instante em e que foi activado at ao instante em que conclui as operaes relativas ao evento e co que o activou. Notao: Ri tempo de resposta do processo i; no pior caso; Di meta ca temporal do processo i. Um processo isolado ou um processo de mxima prioridade tm um tempo a e de resposta R igual ao seu tempo de computao medido no pior caso, C. ca A meta temporal de um processo dever ser sempre igual ao m a nimo per odo de tempo entre os eventos que o activam, ou seja D = T .

76

Consideremos um conjunto de processos sujeitos a escalonamento preemptivo com prioridades atribu das por razo montona. a o Neste caso o tempo de resposta do processo i depedende no s do seu pior a o tempo de computao, Ci , mas tambm da interferncia, Ii , dos processos de ca e e prioridade superior: Ri = Ci + Ii (1) onde Ii a mxima interferncia que um processo i pode experimentar em e a e qualquer intervalo [t, t + Ri [ A interferncia mxima ocorre numa situao em que todos os processos de e a ca prioridade mais elevada sejam activados no mesmo instante que o processo i (um instante cr tico portanto). Sem perda de generalidade, podemos considerar que todos os processos so activados no instante 0. a Consideremos um processo j cuja prioridade superior ` de i. Este processo e a ser activado pelo menos uma vez no intervalo [0, Ri[ (porque?), podendo no a entanto ser activado um nmero de vezes superior dado por: u Activaesj = co Ri Tj

onde a funo de tecto () devolve o menor inteiro que maior ou igual ao ca e seu argumento (e.g. = 4). Como cada activao de j causa uma interferncia mxima Cj , ento o vaca e a a lor mximo de interferncia produzida pelo processo j durante a execuo do a e ca processo i dado por: e Ri Cj Imax = Tj Generalizando agora para qualquer nmero de processos, facilmente se conclui u que todos os processos de prioridade superior vo interferir com i, logo: a Ii =
jhp(i)

Ri Cj Tj

(2)

onde hp(i) o conjunto de processos cuja prioridade superior ` de i. e e a 77

Substituindo (2) em (1) obtemos: Ri = Ci +


jhp(i)

Ri Cj Tj

(3)

Esta equao de dif resoluo por conter uma operao de v ca e cil ca ca rgula xa (), pois vo existir inmeras solues para a mesma. O menor dos valores de a u co soluo para Ri representa o tempo de resposta do processo no pior caso. ca Audsley apresentou uma forma de resolver a equao atravs da seguinte ca e relao recorrente: ca n wi n+1 Cj (4) w i = Ci + Tj jhp(i)
0 1 2 n onde o conjunto de valores {wi , wi , wi , . . . , wi , . . .} monotonamente noe a decrescente.

n+1 n 0 Quando wi = wi , ento essa a soluo da equao (4). Se wi < Ri ento a e ca ca a n wi a menor soluo, sendo portanto a que procuramos. e ca

Por outro lado, se a equao (4) no tiver soluo, ento os valores de w ca a ca a vo crescer indenidamente. E o que se passa quando existe um processo de a baixa prioridade inserido num conjunto de processos onde o factor de utilizao ca total superior a 100%. Este caso facilmente detectado aplicando a restrio e e ca wi Ti . Se isto no se vericar (ou seja se ocorrer crescimento indenido) a ento o processo no poder cumprir a sua meta temporal pois apresenta um a a a tempo de resposta superior.

78

Algoritmo: clculo dos tempos de resposta dos processos de um conjunto. a para cada processo i de 1 a N n=0 n w i = Ci ciclo n+1 calcula wi atravs da equao (4) e ca n+1 n a se wi == wi ento n Ri = wi termina (valor encontrado) mse; n+1 se wi > Ti ento a avisa que i no cumpre a meta a termina (valor no encontrado) a mse; n=n+1 mciclo; mpara; Este algoritmo mostra uma forma para obter os tempos de resposta para os vrios processos ou a indicao de que um dos processos no poder cumprir a a ca a a sua meta temporal. Pode ocorrer o caso em que o mtodo permite vericar que determinado e conjunto de processos pode ser escalonado apesar do teste baseado no factor de utilizao falhar. ca Os valores para os piores tempos de execuo, Ci , devero ser medidos ou ca a estimados. Forma poss de efectuar a medio: placa de E/S digital + controlo de bit vel ca no in e m da execuo + medio com osciloscpio digital ou analisador cio ca ca o lgico. o No entanto esta medio poder no ser conclusiva pois nem sempre podereca a a mos ter a certeza que medimos o pior dos tempos de execuo. ca Alternativa para estimar os piores tempos de execuo atravs de estimao ca e ca baseada no modelo do processador utilizado e analisando os diversos blocos do programa. 79

Processos Espordicos e Aperidicos a o No teste apresentado acima sobre a possibilidade dos processos cumprirem as suas metas temporais baseado no clculo dos seus tempos de resposta, entra-se a em linha de conta com o per odo entre activaes dos processos. co Mas os processos espordicos so por denio aperidicos e por isso no a a ca o a podemos denir um per odo Ti para os mesmos. Como podemos entrar em linha de conta com processos que tanto podem ser activados apenas algumas vezes por dia como em determinadas alturas ser activados milhares de vezes por minuto? A soluo para expandir o modelo anterior de forma a incluir requisitos de ca processos espordicos (e aperidicos) interpretar o per a o e odo Ti como o tempo m nimo entre chegadas da tarefa i. E garantido que um processo espordico com Ti = 20 ms no chega mais do a a que uma vez em cada intervalo de 20 ms. Na realidade pode chegar com uma frequncia muito inferior a uma vez e em cada 20 ms mas o teste do tempo de resposta assegurar que a taxa a mxima se possa aguentar (se passar no teste). a Outro requisito para a incluso de processos espordicos diz respeito ` dea a a nio da meta temporal. ca No modelo analisado anteriormente era assumido que D = T . Mas para processos espordicos isto no razovel. a a e a Para processos espordicos natural assumir que temos uma meta temporal, a e D, inferior ao per odo de chegada, T , i.e.: D < T . Uma inspeco do algoritmo de anlise de tempos de resposta descrito na ca a pgina 79 revela que: a 1) este funciona perfeitamente para valores de Di inferiores a Ti desde que se n+1 passe a utilizar o critrio de paragem wi > Di ; e 80

2) este funciona perfeitamente para qualquer ordem de ordenamento de prioridades - hp(i) fornece sempre o conjunto de processos de prioridade superior ` de i. a Com a ligeira alterao do critrio de paragem obtemos o seguinte algoritmo: ca e

para cada processo i de 1 a N n=0 n w i = Ci ciclo n+1 e ca calcula wi atravs da equao (4) n+1 n se wi == wi ento a n Ri = wi termina (valor encontrado) mse; n+1 se wi > Di ento a avisa que i no cumpre a meta a termina (valor no encontrado) a mse; n=n+1 mciclo; mpara; Embora algumas ordens de prioridades sejam melhores que outras, o teste fornecer os tempos de resposta no pior caso para o ordenamento de prioridades a utilizado. Mais ` frente ser denida uma ordem ptima de prioridades para Di < Ti . a a o Tambm existe um algoritmo mais genrico, e uma ordem ptima de priorie e o dades, para o caso geral em que de Di < Ti , Di = Ti , Di > Ti .

81

Processos Hard e Soft Em muitos casos os valores obtidos para os piores tempos de computao ca ou para o nmero mximo de eventos por unidade de tempo que activam os u a processos espordicos esto muito acima dos valores mdios. a a e Isto leva a que os tempos de resposta calculados sejam muito elevados e que o sistema tenha que ser de tal forma sobre-dimensionado que o factor de utilizao ca do processador seja muito baixo. Como em qualquer rea de engenharia, o sobre-dimensionamento conduz a a custos elevados. Muitas vezes somos confrontados com a questo de como a reduzir o sobre-dimensionamento mantendo a abilidade do sistema. Podemos tomar duas regras como base para estabelecer os requisitos m nimos: 1. Todos os processos devero poder cumprir as suas metas temporais quando a utilizamos valores mdios para os tempos de execuo e para os intervalos e ca entre eventos espordicos. a 2. Todos os processos hard devero poder cumprir as respectivas metas a temporais mesmo no pior dos casos. Como consequncia da primeira regra teremos situaes em que nem todos e co os processos podero atingir as suas metas. Esta condio conhecida como a ca e sobrecarga transitria, e esses processos devero ser claramente identicados o a na fase de projecto como processos no-cr a ticos (soft). Quanto aos processos cr ticos a segunda regra garante que estes nunca falharo a as suas metas temporais. A regra 2 poder dar origem a factores mdios de utilizaao do processador a e c bastante reduzidos, mas se a etiquetagem hard tiver sido correctamente feita, pouco haver a fazer para alm de tentar diminuir os tempos de execuo nos a e ca piores casos e/ou as frequncias de chegada nos piores casos. e

82

Atribuio de Prioridades por Ordenamento Montono de Metas ca o Temporais (APOMMT) O mtodo de atribuio de prioridades por razo montona ptimo para o e ca a o eo caso em que os processos apresentam metas temporais iguais aos per odos entre activaes (Di = Ti ). co E poss formular um mtodo semelhante para a atribuio de prioridades vel e ca para o caso em que Di < Ti . Neste caso, a atribuio de prioridades feita com ca e base nas metas temporais Di . Neste mtodo, quanto mais curto for o tempo entre o instante de activao de e ca um processo e o instante limite para este produzir o resultado correspondente (meta) maior ser a prioridade atribu ao mesmo: Di < Dj Pi > Pj . a da Notemos que este mtodo, se aplicado ao caso em que Di = Ti , resulta na e atribuio de prioridades por razo montona. ca a o Esta atribuio de prioridades ptima no seguinte sentido: se um conjunto ca eo de processos pode ser escalonado usando um determinado mtodo de prioridae des xas, ento esse conjunto de processos tambm pode ser escalonado com a e atribuio de prioridades por ordenamento montono de metas temporais. ca o Exemplo: a seguinte tabela d a atribuio de prioridades apropriada para um a ca conjunto de processos simples. Tambm inclui os tempos de resposta no pior e caso (calculado com o algoritmo da pgina 81). Notemos que o ordenamento a de prioridades por razo montona no permitiria o escalonamento destes proa o a cessos. Tarefa Per odo, Meta, Tempo de Prioridade, Tempo de T D Clculo, C a P Resposta, R 1 20 5 3 4 3 2 15 7 3 3 6 3 10 10 4 2 10 4 20 20 3 1 20 83

Outro exemplo: dado um conjunto de processos com as seguintes caracter sticas: Processo Per odo, Meta, Tempo de Prioridade, Tempo de T D Clculo, C a P Resposta, R 1 40 3 2 alta 2 2 20 7 3 mdia e 5 3 10 10 5 baixa 10 Se utilizassemos razo montona teriamos um ordenamento inverso para as a o prioridades dos processos: (P3,P2,P1). Vamos calcular os tempos de resposta dos processos. Para o processo 1: como este o que tem a prioridade mais elevada temos e simplesmente: R1 = C1 = 2 Para o processo 2 vem:
0 w2 = 3 1 w2 = 3 + 2 w2

R2

3 2=5 40 5 = 3+ 2=5 40 = 5

Finalmente para o processo 3 vem:


0 w3 = 5 1 w3 = 5 + 2 w3

R3

5 5 2+ 3 = 10 40 20 10 10 2+ 3 = 10 = 5+ 40 20 = 10

Comparando os tempos de resposta obtidos com as respectivas metas temporais vericamos que os trs processos conseguem atingir as suas metas temporais e com esta distribuio de prioridades. ca Exerc cio: verique que se utilizarmos a atribuio de prioridades de razo ca a montona baseada no per o odo dos processos, apenas 1 consegue cumprir a sua meta temporal. 84

Tempos de Resposta em Situaes de Bloqueio co Tal como j vimos, os algoritmos (protocolos) de herana de prioridades a c garantem que um processo bloqueado por outro de prioridade inferior durante e um tempo limitado. V-se facilmente que um processo pode ser bloqueado por outro de prioridade e inferior no mximo uma vez. Por isso existe um nmero mximo de vezes que a u a um processo pode ser bloqueado por outros de prioridade inferior. Consideremos o caso do protocolo bsico de herana de prioridades (PBHP). a c Se um processo tiver m seces cr co ticas (onde poder ser bloqueado) ento a a esse processo poder bloquear no mximo m vezes. Isto porque quando um a a processo inicia a execuo, cada uma das m seces cr ca co ticas pode j estar a a executar por um processo de prioridade inferior. Mas se existirem apenas n (com n < m) processos de prioridade inferior ento a o nmero mximo de bloqueiros que o processo pode encontrar ser n. Temos u a a portanto que: Bloqueios = min(m, n) Seja Bi o tempo mximo de bloqueio que um processo i pode sofrer quando a se utilizam protocolos de herana de prioridades. c Seja K o nmero de seces cr u co ticas (recursos) existentes. A equao seguinte ca fornece um limite superior para Bi :
K

Bi =
k=1

usada(k, i) CS(k)

(5)

onde usada(k, i) uma funo que devolve o valor 0 ou 1 e denida da seguinte e ca e forma: usada(k, i) = 1 se o recurso k utilizado por pelo menos um processo e de prioridade inferior ` de i, e por pelo menos um processo de prioridade igual a ou superior ` de i. Nos restantes casos a funo devolve o valor 0. CS(k) a ca corresponde ao custo (durao) de executar a seco cr ca ca tica k. 85

O tempo de bloqueio de um processo Bi contabiliza no s o tempo em que este a o se encontra impossibilitado de entrar numa seco cr ca tica por outro processo de prioridade inferior a estar a utilizar, mas tambm o bloqueio que advm do e e facto de um processo de prioridade inferior ter herdado uma prioridade igual ou superior ` sua por partilhar uma seco cr a ca tica com processos de prioridade igual ou superior ` de i. a Clculo dos Tempos de Resposta com o PBHP: a O tempo de resposta de um processo dado por: e R =C +B+I ou seja, a soma do tempo de clculo, com o tempo de bloqueio em recursos, e a e com o tempo que o processo esteve bloqueado por interferncia dos processos e de prioridade mais elevada. Reescrevendo a equao (3) temos: ca Ri = Ci + Bi +
jhp(i)

Ri Cj Tj

(6)

Tal como dantes, esta equao pode ser resolvida utilizando a mesma equao ca ca de recorrncia utilizada em (4), mas agora adaptada para incluir o tempo de e bloqueio: n wi n+1 Cj (7) w i = C i + Bi + Tj jhp(i) Uma vez que poss e vel determinar os tempos de resposta na presena de c situaes de bloqueio, podemos utilizar esse clculo como teste para vericar a co a possibilidade de as tarefas poderem ser escalonadas e cumprir as suas metas. Notemos que esta formulao pode ser demasiado pessimista (i.e. suciente ca mas no necessria). O facto de o processo sofrer ou no o seu mximo bloa a a a queio poss depende da fase relativa entre os diversos processos. Contudo, vel em geral, a equao (6) representa um teste de escalonamento eciente para ca sistemas de tempo real cooperantes. 86

Tempos de Resposta Usando PCP O bloqueio de um primeiro recurso permitido. O efeito do protocolo e e assegurar que um segundo recurso pode ser bloqueado apenas se no existir um a processo de prioridade mais elevada que usa ambos os recursos. Uma das consequncias da utilizao do protocolo de tecto de prioridades e ca (PCP) que um processo de prioridade elevada pode ser bloqueado no mximo e a uma vez (por activao) por processos de prioridade inferior. ca Consequentemente, o tempo mximo que um processo pode ser bloqueado, a Bi , igual ao tempo de execuo da maior seco cr e ca ca tica de prioridade inferior que acedida por tarefas de prioridade no inferior; i.e. a equao (5) torna-se e a ca na seguinte: K Bi =max usada(k, i) CS(k)
k=1

Por outro lado, surge como desvantagem o facto de que, com este protocolo, mais processos iro encontrar bloqueio no acesso aos recursos. a Este tempo de bloqueio em recursos no pior caso mantm-se no protocolo de e tecto imediato de prioridades.

Tempos de Resposta com Escalonamento Cooperativo Consideremos o seguinte modelo de escalonamento cooperativo, chamado preempo diferida: ca Cada tarefa dividida em blocos, no sujeitos a preempo e cujos tempos e a ca de execuo esto limitados a Bmax . ca a No m de cada um destes blocos a aplicao oferece ao sistema (kernel) ca um pedido/oportunidade de de-escalonamento. Se um processo de (mais) elevada prioridade estiver pronto a executar, ento o sistema provoca uma a troca de contexto, seno o processo presentemente em execuo continuar a ca a para o prximo bloco no-preempt o a vel. 87

A execuo do conjunto de processos que compem a aplicao portanto ca o ca e totalmente cooperativa. A excluso mtua ca assegurada desde que todas as seces cr a u co ticas estejam completamente contidas dentro de chamadas de de-escalonamento. Este mtodo requer portanto a colocao cuidadosa de todas as chamadas de e ca de-escalonamento. Para fornecer proteco contra software incorrecto (ou corrompido), podem ca usar-se sinais ass ncronos ou abortar o processo para o remover se algum bloco no preempt durar mais do que Bmax . a vel O uso de preempo diferida tem duas vantagens importantes. (1) Aumenta ca a escalonabilidade do sistema, e (2) pode levar a menores valores de C. Vejamos a primeira vantagem calculando os tempos de resposta: Usando preempo diferida no pode haver interferncia durante o ultimo bloco de ca a e execuo d1 tarefa. ca Seja Fi o tempo de execuo do bloco nal (Fi < Bmax ), de forma a que ca quando o processo j consumiu um tempo Ci Fi , acabou de entrar no bloco a nal. Podemos alterar a equao (7) (pg. 86) para calcular o tempo de resposta ca a da parte inicial Ci Fi do processo:
n+1 w i = C i F i + Bi + jhp(i) n wi Cj Tj

n+1 n Quando esta equao iterativa convergir (i.e. wi ca = wi ), basta somar o tempo de resposta do ultimo bloco para obter o tempo total: n Ri = wi + Fi

Na prtica, o ultimo bloco do processo executado com uma prioridade mais a e elevada (a mxima) do que a do resto do processo. a

88

A outra vantagem da preempo diferida (menores valores de C) deve-se ` ca a possibilidade de predizer com maior preciso os tempos de execuo dos blocos a ca no-preempt a veis do processo. Sem blocos no preempt a veis, os estimadores dos piores tempos de execuo so forados a ignorar as vantagens de caches, ca a c prefetch queues, e pipelines, obtendo assim estimativas pessimistas pois a preempo invalida caches e pipelines. ca A certeza de no preempo pode ser usada para predizer o speed-up que a ca ocorrer na prtica. Contudo se o custo de oferecer uma troca de contexto for a a elevado, isto poder diminuir estas vantagens. a Ru de Activao do ca No modelo simples, assumido que todos os processos so activados com e a perfeita periodicidade: i.e. se um processo L tem periodicidade Ti , ento a e activado exactamente com essa frequncia. e Processos espordicos so incorporados no modelo considerando/assumindo a a que o seu m nimo intervalo inter-activaes T . co e No entanto, os processos espordicos ou peridicos podem ter outro tipo de a o incerteza de activao: trata-se, no de incerteza medida em relao ao instante ca a ca temporal da ultima activao, mas sim em relao aos instantes denidos pela ca ca periodicidade do processo T . Dene-se assim uma variao mxima para os instantes de activao do proca a ca cesso tal como esses instantes so determinados pelo per a odo T . Esta variao ca designada por ru (jitter), J. e do Exemplo: consideremos um processo espordico S que activado no m de a e cada activao de um processo peridico, L, a executar noutro processador. ca o Numa das activaes L poder ter completado apenas o mais tarde poss co a vel, i.e. s aps RL ; mas na activao seguinte L pode ter completado no m o o ca nimo tempo poss CL (CL < RL , em particular podemos ter CL = 0). Isto faz com vel que o processo S tenha um ru de activao de RL CL . As duas execues do ca co do processo espordico esto separadas no por TL mas sim por TL (RL CL ). a a a 89

O per odo do processo L TL e o processo espordico ter o mesmo per e a a odo, mas incorrecto assumir que a maxima interferncia que S exerce em processos e e de prioridade inferior pode ser representada na equao (3) como um processo ca peridico de per o odo TS = TL . A mxima variao na activao do processo a ca ca espordico, S, designada jitter, JS = RL CL . a e Obviamente que o ru vai ter inuncia na interferncia exercida no tempo do e e de resposta dos processos de prioridade inferior. Notemos que apenas tem interesse quando L remoto. Se no for esse o caso, ento as variaes na ace a a co tivao de S poderiam ser tidas em conta com as equaes standard assumindo ca co a existncia de um instante cr e tico entre o activador e o activado. O mximo impacto em termos de interferncia ocorrer quando os instantes a e a reais de activao do processo forem: 0, T J, 2T J, 3T J etc (ocorrerem ca o mais cedo poss vel). Seja S um processo espordico com caracter a sticas T e J. Um processo i sofrer de S uma interferncia se Ri [0, T J[, duas se Ri [T J, 2T J[, a e trs se Ri [2T J, 3T J[, etc. Ou de outra forma: uma interferncia se e e Ri + J [0, T [, duas se Ri + J [T, 2T [, trs se Ri + J [2T, 3T [, etc. e Isto pode ser representado de forma semelhante ` equao (6) como se segue: a ca Ri = Ci + Bi +
jhp(i)

Ri + Jj Cj Tj

Em geral, processos peridicos no sofrem ru de activao. Uma impleo a do ca mentao pode contudo restringir a granularidade do temporizador do sistema ca que activa os processos peridicos. Numa tal situao, um processo peridico o ca o pode tambm sofrer ru de activao. e do ca Por exemplo, T = 10 e uma granularidade no sistema de 8 implicar um valor a de 6 para o ru - no instante 16 o processo peridico ser activado para a sua do o a invocao do instante 10. ca
peri Neste caso, se quisermos medir o tempo de resposta, Ri odico , em relao ca ao instante real de activao, ento deve-se adicionar o valor do ru ao valor ca a do previamente calculado. peri Ri odico = Ri + Ji .

Se este novo valor for superior a Ti ento ter que se usar a seguinte anlise. a a a 90

Tempos de Resposta para Metas Arbitrrias a Para situaes em que Di (e portanto potencialmente tambm Ri ) podem ser co e maiores que Ti , tem que se adaptar novamente o mtodo de anlise. e a Quando Di Ti necessrio considerar apenas uma unica activao do proe a ca cesso para o qual se est a calcular o tempo de resposta. O instante cr a tico quando todos os processos so activados ao mesmo tempo, representa a intera ferncia mxima e portanto o tempo de resposta a seguir a um instante cr e a tico constitui o pior caso. Contudo, quando a meta superior ao per e odo tm de se considerar vrias e a activaes do prprio processo. Na anlise seguinte assume-se que a activao co o a ca de um processo ser atrasada at que quaisquer activaes anteriores do mesmo a e co processo tenham completado. Se um processo continuar a executar para dentro do prximo per o odo de tempo, ento tm-se de analisar ambas as activaes para ver qual d origem a e co a ao maior tempo de resposta. Se a segunda activao no se completa antes ca a da terceira, ento esta nova activao tambm deve ser considerada, e assim a ca e sucessivamente. Para cada tarefa, consideram-se sucessivamente q = 0, 1, 2, . . . sobreposies co de activao, calculando-se sucessivamente o tempo de resposta total das (q +1) ca activaes envolvidas. co Ignorando o ru de activao, a equao (7) pode ser extendida da seguinte do ca ca forma: n wi (q) n+1 Cj (8) wi (q) = (q + 1)Ci + Bi + Tj jhp(i) Notemos que se houver sobreposio de activaes, o termo Bi (tempo blocagem ca co por processos de prioridade inferior) s tem inuncia uma vez (porqu?). o e e Dene-se portanto uma janela de resposta w(q) para a activao (q + 1) ca (q = 0, 1, 2, . . .). Por exemplo, com q = 2 ocorrero 3 activaes do processo a co dentro da janela de resposta. 91

Para cada valor de q chega-se iterativamente a um valor estvel de w(q) a tal como na equao (7). O tempo de resposta ento dado por (retirando q ca e a per odos ao total): n Ri (q) = wi (q) qTi (9) Por exemplo, com q = 2 o processo comeou 2Ti dentro da janela e portanto o c tempo de resposta o tamanho da janela menos 2Ti . e O nmero de sobreposies de activao que se tem que considerar o menor u co ca e valor de q para o qual a seguinte relao verdadeira: ca e Ri (q) Ti (10)

Neste ponto, o processo termina antes da prxima activaao e portanto no o c a existe sobreposio nas activaes subsequentes. ca co O pior tempo de resposta ento dado pelo pior tempo de resposta dentro e a dos obtidos para todos os q: Ri = max Ri (q)
q=0,1,2,...

Notemos que para Di Ti , a relao da equao (10) verdadeira para q = 0 ca ca e (se o escalonamento do processo puder ser garantido). Neste caso, as equaes co (8) e (9) podem ser simplicadas para a equao original (6). ca Se para algum q, Ri (q) > Di ento o processo no escalonvel. a a e a Se combinarmos esta formulao de meta arbitrria com o efeito de ru de ca a do activao so necessrias duas alteraes na anlise anterior: ca a a co a 1. O factor/tempo de interferncia tem que ser aumentado se algum processo e de prioridade mais elevada sofrer de ru de activao: do ca
n+1 wi (q)

= (q + 1)Ci + Bi +
jhp(i)

n wi (q) + Jj Cj Tj

92

2. Se o prprio processo puder sofrer ru de activao, ento pode ocorrer o do ca a sobreposio de duas janelas consecutivas se o tempo de resposta mais o ca ru for superior ao per do odo. Para levar em conta este facto, temos de alterar a equao (9): ca
n Ri (q) = wi (q) qTi + Ji

Atribuio de Prioridades ca Problema: como ordenar as prioridades dos processos no caso de metas arbitrarias? A formulao dada na seco anterior tem a propriedade de no existir ca ca a nenhum algoritmo simples (tal como razo montona, ou metas montonas) a o o para o ordenamento de prioridades ptimo para os processos. o No entanto a seguinte propriedade permite-nos atribuir prioridades em situaes de metas arbitrrias. co a Propriedade: se se atribuir a um processo a menor prioridade e assim ele for escalonvel ento, se existir uma ordem de prioridades admiss (escalonvel) a a vel a para o conjunto completo de processos, existir tambm uma ordem admiss a e vel com a menor prioridade atribu a . da Se um processo for escalonvel na prioridade mais baixa pode-se-lhe atribuir a essa prioridade e tudo o que resta atribuir as restantes N 1 prioridades. e A propriedade pode ser depois aplicada recursivamente ao conjunto dos processos restantes. Atravs da sucessiva aplicao pode-se obter uma ordem de e ca prioridades completa (se uma existir).

93

Algoritmo de atribuio de prioridades (aqui Set(1) menor prioridade; ca Set(N) maior prioridade); a funo Process Test testa se o processo K ca escalonvel nessa posio da tabela de prioridades: e a ca procedure Assign Pri (Set : in out Process Set; N : Natural; Ok : out Boolean) is begin for K in 1..N loop for Next in K..N loop Swap(Set, K,Next); Process Test(Set, K, Ok); exit when Ok; end loop; exit when not Ok; -- failed to find a schedulable process end loop; end Assign Pri;

Inuncia do Sistema Operativo nos Tempos de Resposta e Se existir um sistema de operao (ncleo, kernel) os atrasos por ele provoca u cados tambm tm de ser levados em conta para a anlise de tempos de resposta e e a e escalonabilidade. Podemos enumerar as seguintes caracter sticas t picas de muitos ncleos de u tempo-real: O custo de uma troca de contexto no desprezvel e pode ter mais do que a e a um valor poss vel. O custo de uma troca de contexto para um processo de prioridade mais elevada (e.g. na sequncia de uma interrupo de relgio) e ca o pode ser mais elevada do que a troca de contexto para um processo de prioridade mais baixa (no m da execuo de um processo de prioridade ca alta). Com um nmero elevado de processos peridicos pode-se incorrer u o num custo adicional para manipular a la de (processos) temporizados. 94

Todas as trocas de contexto so no-preemptivas. a a O custo de responder a uma interrupo (que no o relgio) e activar uma ca a o aplicao peridica no desprezvel. Alm disso, DMA e dispositivos ca o a e a e controlados por canal envolvem o uso de memria partilhada o que pode o ter um impacto no trivial no desempenho no pior caso; o melhor ser a a evitar tais dispositivos em sistemas de tempo-real duros. Em cada interrupo (peridica) de relgio pode ser desencadeada uma ca o o transferncia de um conjunto de processos da la de temporizados para a e la de prontos. O custo desta operao depende do nmero de processos ca u transferidos.

95

Modelao dos Tempos de Troca de Contexto ca Muitos modelos de anlise dos tempos de resposta ignoram os tempos de a troca de contexto. Contudo, isso demasiado simplista se o custo total das e trocas de contexto no for desprezvel em comparao com o tempo de clculo a a ca a da prpria aplicao. o ca A gura seguinte ilustra um conjunto de eventos importantes na execuo de ca um t pico processo peridico: o

Resposta interrupo Troca de contexto Execuo da tarefa Troca de contexto

A:

A interrupo de relgio que corresponde ao instante em que o processo ca o deveria iniciar a execuo (assumindo a inexistncia de ru de activao e ca e do ca de atrasos preemptivos; se as interrupes estiverem inibidas devido a uma co operao de troca de contexto, ento a rotina de resposta ` interrupo ca a a ca do relgio teria a sua resposta atrasada; isto seria levado em conta nas o equaes de escalonamento atravs do factor de bloqueio B); co e O instante mais tarde em que a rotina do relgio poder terminar. E neste o a instante que comear a troca de contexto para o novo processo (assumindo c a que este o de prioridade mais elevada pronto a correr); e O verdadeiro in da execuo do processo; cio ca O instante de concluso do processo (o processo pode sofrer vrias vezes a a preempo entre os instantes C e D); ca A concluso da troca de contexto ` sa do processo; a a da

B:

C: D: E:

A: A prxima activao do processo. o ca 96

Um requisito temporal t pico que o processo termine antes da sua prxima e o activao (D < A ), ou antes de uma meta prvia ` prxima activao. Em ca e a o ca ambos os casos, D o instante importante e no E. e a Outro requisito t pico pode ser o de estabelecer um limite superior para o tempo entre o in e o m da execuo (i.e. D C). Isto pode ocorrer quando cio ca a primeira aco uma entrada, a ultima uma sa ca e e da, e existe uma meta temporal que as relaciona. Estes factores afectam o signicado que tem a meta do processo (e portanto o seu tempo de resposta) mas no afectam a interferncia que este processo a e tem em processos de prioridade mais baixa, onde o custo de ambas as trocas de contexto contam. Como j vimos (equao (6)), a equao bsica de clculo dos tempos de a ca ca a a resposta tem a seguinte forma: Ri = Ci + Bi +
jhp(i)

Ri Cj Tj

(11)

Levando agora em conta as trocas de contexto temos: Ri = CS1 + Ci + Bi +


jhp(i)

Ri (CS1 + CS2 + Cj ) Tj

(12)

onde CS1 o custo da troca de contexto inicial (para o processo) e CS2 o e e custo da troca de contexto aps a execuo do processo. o ca Esta medida do tempo de resposta em relao ao ponto B. Para medir e ca em relao ao ponto C dever remover-se (apenas) o primeiro dos termos CS1 ca a (porqu s o primeiro?). Para medir em relao ao ponto A necessrio mee o ca e a dir/modelar o comportamento da rotina do relgio. o O custo de colocar o processo na lista de temporizados (se for peridico) o e incorporado em Ci . Na prtica este valor pode depender do tamanho da la a poder ser necessrio incorporar um valor mximo em Ci . a a a 97

Modelao dos Tempos de Troca de Contexto ca Para processos espordicos activados por outros processos (peridicos ou esa o pordicos), a equao (12) mantm-se um modelo vlido. Contudo, o tempo de a ca e a clculo do processo, Ci , tem que incluir os custos do bloqueio que efectuado a e no agente que controla a sua activao (a activao do processo i). ca ca Quando os processos espordicos so activados por interrupes, pode ocorrer a a co inverso de prioridades. Mesmo se o processo espordico tiver uma prioridade a a baixa (e.g. devido a ter uma meta longa), a prpria interrupo vai ser executada o ca com uma prioridade de hardware elevada. Seja s o conjunto de processos espordicos activados por interrupes. Assumea co se que cada fonte de interrupo tem a mesma caracter ca stica de chegada que o processo espordico que activa. A interferncia adicional que as rotinas de a e interrupo tm em cada processo dada por: ca e e
ks

Ri IHk Tk

onde IHk o custo de processar a interrupo k (e regressar ao processo que e ca est a correr, aps ter activado o processo espordico). Tk minimo tempo a o a entre activaes do processo k. co Podemos agora reescrever a equao (12) da seguinte forma: ca Ri = CS1 + Ci + Bi +
jhp(i)

Ri (CS1 + CS2 + Cj ) + Tj k

Ri IHk Tk

(13)

Modelao do Relgio de Tempo-Real ca o Para implementar processos peridicos, o sistema dever ter acesso a um o a relgio de tempo-real que gere interrupes em instantes apropriados: o co Um sistema ideal utilizar um temporizador de intervalos que gerar ina a terrupes apenas quando uma tarefa necessita de ser activada. co Um mtodo mais comum utilizar um relgio que gera interrupes com e e o co uma frequncia xa (e.g. T = 10 ms) e a rotina de resposta deve decidir se e devem ser activados zero, um, ou mais processos. 98

O mtodo ideal pode ser modelado por um processo idntico ao usado para e e os processos espordicos (equao (13)). a ca Com o mtodo do relgio regular necessrio desenvolver um modelo mais e o e a detalhado. A interferncia da rotina de relgio pode depender do nmero de e o u processos a transferir da la de temporizados para a la de processos prontos (nmero de processo activados). u Estado da la Tempo para processar o relgio o de temporizados s Nenhum processo na la 16 Processos na la mas nenhum retirado 24 Um processo retirado 88 Dois processos removidos 128 Vinte cinco processos removidos 1048 Como todo o processamento da rotina de interrupo efectuado com priorica e dade de hardware elevada (a mais elevada) ir ocorrer inverso de prioridades. a a Um modelo para representar o custo de movimentar N processos peridicos o da la de temporizados para a la de processos prontos o seguinte: e Cclk = CTc + CTs + (N 1)CTm onde CTc o custo constante (assumindo que existe sempre um processo na la e de temporizados), CTs o custo de fazer uma unica transferncia, e CTm o e e e custo de cada subsequente transferncia. e O custo de mover um unico processo frequentemente elevado quando com e parado com o custo de mover processos adicionais. Exemplo: CTc = 24 s CTs = 64 s CTm = 40 s

99

Para reduzir o pessimismo de assumir que este custo consumido em cada e execuo da rotina do relgio esta carga pode ser espalhada ao longo de um ca o conjunto de interrupes de relgio. Isto vlido se o menor per co o e a odo de todos os processos, Tmin , for maior que o per odo do relgio, Tclk . Seja M denido o por: T M = min Tclk Se M > 1 ento o custo da rotina do relgio pode ser repartida/atribu ao a o da longo de M execues. Nesta situao se M N a rotina do relgio modelada co ca o e como um processo com per odo Tmin e tempo de clculo: a Cclk = M(CTc + CTs ) + (N M)CTm Tomando em conta o relgio, a equao (13) pode ser escrita da seguinte o ca forma: Ri = CS1 +Ci +Bi +
jhp(i)

Ri Ri Ri IHk + (CS1 +CS2 +Cj )+ Cclk Tj Tmin ks Tk

Para obter aperfeioamentos adicionais no modelo necessrio uma reprec e a sentao mais exacta da execuo da rotina de relgio. Por exemplo usando ca ca o apenas CTc e CTs no modelo do relgio podemos obter a seguinte equao: o ca Ri = CS1 + Ci + Bi +
jhp(i)

Ri (CS1 + CS2 + Cj ) + Tj k

Ri IHk + Tk

Ri Ri CTc + CTs Tclk Tg gp

onde Tg tempo m nimo entre activaes do processo g; co p conjunto de processos peridicos. o

100

Fiabilidade e Tolerncia a Falhas a


Os sistemas embebidos, por estarem a implementar de forma crescente funes co previamente realizadas por operadores humanos ou por mtodos de controlo e analgicos, tm requisitos de abilidade muito maiores que outros sistemas o e computacionais. Esta necessidade de abilidade pode ter a ver com: colocao de vidas em risco (e.g. avies, automveis, pacemakers, cenca o o trais nucleares, industria qu mica, etc); possibilidade de consequncias econmicas desastrosas (e.g. bank accoune o ting, produo industrial, etc); ca consequncias ambientais desastrosas (e.g. centrais nucleares, industria e qu mica). A abilidade de um sistema computacional depende de: componentes f sicos; software que controla as operaes. co Falhas Os componentes de hardware esto sujeitos a falhas devidas a defeitos de a fabrico ou ao envelhecimento. O software est sujeito apenas a falhas devidas apenas a defeitos de projecto a e de desenvolvimento. Hecht (90) estabeleceu os seguintes valores t picos para caracterizar os defeitos de software: em 1 milho de linhas de cdigo h cerca 20000 bugs a o a 90% descobertos na fase de testes; 200 descobertos no primeiro ano de utilizao; ca 180 cam por detectar e podem ser despoletados em qualquer altura ou nunca chegarem a ser descobertos. 101

Origem das Faltas que Podem Levar um Sistema a Falhar: Especicao inadequada - tem sido sugerido que a grande maioria das faltas ca de software se cam a dever a especicao inadequada; ca Faltas introduzidas por erros de projecto de componentes/mdulos do sistema; o Erros no processador ou noutros componentes elctricos do sistema embebido; e Erros devidos a transitrios ou interferncias permanentes no subsistema de o e suporte de comunicao no sistema. ca

Um sistema convel pode ser denido informalmente de diversas formas: a Um sistema do qual o utilizador possa depender; Um sistema que passe o teste do tempo; Um sistema cujo tempo em baixo inferior a um determinado limiar; e Um sistema do qual no h erros catastrcos conhecidos; a a o Um sistema cujos resultados so previs a veis (i.e. sistema determin stico); Um sistema robusto - com a capacidade de recuperar graciosamente de erros. Outras caracterizaes informais utilizadas em sistemas de tempo-real: co Determinismo dos eventos; Determinismo temporal; Carga do processador razovel; a Carga da memria razovel. o a

102

Fiabilidade, Falha, e Falta Fiabilidade (Randell): medida do sucesso com o qual o sistema se mantm e de acordo com as especicaes feitas para o seu comportamento. co Falha (Randell): quando o comportamento do sistema se desvia daquilo que foi especicado diz-se que ocorreu uma falha. Fiabilidade e falhas so conceitos associados ao comportamento externo do a sistema. Falhas resultam de problemas internos inesperados que se manifestam no comportamento externo do sistema. Estes problemas so chamados de erros a e as suas causas faltas. Falta: causa mecnica, elctrica ou algor a e tmica que leva ao surgimento de erros no sistema e consequentemente a falhas. Quando visto em termos de transies de estados, um sistema pode ser caco racterizado por um conjunto de estados externos e internos. Um estado externo que no faz parte da especicao de comportamento do a ca sistema visto como uma falha do sistema. e O sistema composto por um conjunto de componentes cada um com os seus e prprios estados que contribuem para o comportamento externo do sistema. o A combinao dos estados destes componentes designado estado interno do ca e sistema. Um estado interno que no faa parte das especicaes designado por erro a c co e e diz-se que o componente que produziu a transio de estado ilegal est em ca a falta. Cada componente de um sistema pode ser considerado um sistema. Uma falha num sistema pode levar a uma falta noutro o que pode resultar num erro e potencialmente numa falha desse sistema. Podem assim ocorrer falhas em cadeia:
Falta Falha Erro Falta Falha

103

Podemos distinguir trs tipos de faltas: e Faltas transitrias: comeam num instante particular, permanecem no o c sistema por algum tempo e depois desaparecem. E.g. um componente de hardware sujeito a um campo elctrico de interferncia. Aps desaparecer e e o a perturbao, o mesmo acontece com a falta, mas no necessariamente ca a o erro que foi induzido. Muitas faltas em sistemas de comunicao so ca a transitrias. o Faltas permanentes: comeam num instante particular e permanecem c no sistema at que sejam reparadas: e.g. um o partido ou um erro de e projecto de software. Faltas intermitentes: ocorrem de tempos a tempos. Por exemplo, um componente de hardware sens ao calor pode funcionar durante algum vel tempo, parar de trabalhar, arrefecer e comear novamente a trabalhar. c Tipos de Falhas Um sistema pode falhar de muitas formas diferentes. Se um sistema X que e usado para implementar um sistema Y falha de forma diferente do que foi assumido como falhas espectveis para o projecto de Y , ento como consequncia a a e Y pode tambm falhar. e Os tipos de falhas podem ser classicados de acordo com o impacto que estas tm nos servios que um sistema fornece: e c c a Falha por valor: o valor associado com o servio est errado. Falha temporal: o servio fornecido no instante errado. Vrias hipteses: c e a o Demasiado cedo; Demasiado tarde (tambm designado por erro de desempenho); e Innitamente tarde (falha de omisso); a Combinaes de falhas temporais e falhas por valor so frequentemente deco a signadas por falhas arbitrrias. a 104

Falha de incumbncia: quando um servio no esperado fornecido. E muitas e c a e vezes dif de distinguir uma falha simultaneamente no dom cil nio do valor e do tempo de uma falha de incumbncia seguida de uma falha de omisso. e a Dada a classicao acima sobre os tipos de falhas, podemos considerar as ca seguintes hipteses sobre como pode um sistema falhar: o Falha no controlada - o sistema pode produzir erros arbitrrios tanto a a no dom nio temporal como no dos valores; Falha por atraso - servios correctos no dom dos valores mas podem c nio surgir demasiado tarde; Falha silenciosa - o sistema produz servios correctos tanto no dom c nio dos valores como do tempo at que falha; e Falha parada - o sistema entra em falha silenciosa mas permite que os outros sistemas detectem que o sistema entrou no estado de falha silenciosa; Falha nunca - o sistema produz sempre servios correctos nos dom c nios dos valores e do tempo.

Fiabilidade do Software Permite uma caracterizao menos amb ca gua do que tentar denir o que e software convel. a Sendo S um sistema de software e T o instante em que o software falha, ento a a abilidade do software no instante t, r(t), denida por: e r(t) = P (T > t) o que representa a probabilidade de um sistema de software funcionar sem falhas durante um determinado per odo de tempo. Um sistema com r(t) = 1 nunca falha.

105

Funo de falhas: probabilidade de que o software falhe no instante t. Dois ca modelos para esta funo: ca 1. Funo exponencial decrescente do tempo versus probabilidade de falha. ca Interpretao: ` medida que o tempo passa, sero introduzidas novas ca a a verses do software e sero descobertos e reparados erros. o a 2. A curva da banheira frequentemente utilizada para descrever a funo e ca de falhas de componentes de hardware - probabilidade elevada cedo devido a defeitos de fabrico e tarde devido a envelhecimento dos componentes. Tambm pode ser usada para descrever a probabilidade de falhas do S/W. e Aqui falhas elevadas para tempos elevados devido a erros introduzidos quando se efectuam pequenas correces, modicaes, acrescentos, co co ou devido ` sujeio a um maior esforo por utilizadores mais experientes. a ca c

Probabilidade do sistema falhar

Funo de falhas ( bathtub curve )

Tempo

Sistemas Compostos: Fiabilidade de um Modelo de Blocos A abilidade de um sistema composto por vrios blocos interligados em srie a e ou paralelo pode ser calculada utilizando regras bsicas de probabilidade. a Utiliza-se normalmente a aproximao de que cada bloco tem uma funo de ca ca falhas independente das restantes, ou seja, se um bloco falha isto no implica a que qualquer outro deva falhar. Isto nem sempre verdade pois por exemplo e quando existem recursos partilhados, se um processo falha pode fazer com que outro com quem partilhe por exemplo uma zona de memria partilhada v o a falhar tambm. e 106

Sistema composto S1 r 1 ( t) r eq( t ) S2 r 2 ( t)

Sistema composto S1 r 1 ( t) S2 r 2 ( t) r eq( t )

(a)

(b)

Suponhamos dois sistemas com funes de abilidade r1 (t) e r2 (t). Se estes co a estiverem ligados em paralelo, o sistema composto apenas falhar se ambos falharem. Logo a funo de falhas do sistema composto, feq (t) = 1 req (t), ser o ca a produto das funes de falhas dos dois subsistemas: co 1 req (t) = (1 r1 (t))(1 r2 (t)) Resolvendo em ordem a req (t) vem: req (t) = r1 (t) + r2 (t) r1 (t)r2 (t) Dado que as funes de abilidade assumem valores entre 0 e 1, a abilidade co de um sistema composto por blocos paralelos sempre igual ou superior ` e a abilidade de cada bloco individual. No caso dos sistemas estarem ligados em srie, o sistema composto falha se 1 e ou ambos falharem: 1 feq (t) = (1 f1 (t))(1 f2 (t)) ou seja 1 req (t) = 1 r1 (t) + 1 r2 (t) (1 r1 (t))(1 r2 (t)) de onde vem req (t) = r1 (t)r2 (t) Neste caso req (t) inferior ` abilidade de ambos os blocos que compem o e a o sistema. 107

Mtrica de McCabe e Alguns estudiosos acreditam que a abilidade do software pode ser estimada a priori a partir das caracter sticas do cdigo. o A mtrica de McCabe baseada na complexidade do uxo de controlo do e e sistema. O software descrito por um grafo direccionado onde: e cada bloco de cdigo sequencial representado por um nodo (node - n); o e o cada mudana de uxo s c ncrona representada por um arco (edge) direce cionado; cada processo ou tarefa representada por um grafo diferente. e A mtrica de McCabe no considera a possibilidade de uxo de controlo e a ass ncrono. Contabilizando o nmero de arcos, e, o nmero de nodos n, e o nmero de u u u tarefas, p, a complexidade denida como e C = e n + 2p

Segundo McCabe a complexidade, C, do grafo de controlo de uxo reecte a diculdade de compreender, testar e manter o software; Segundo McCabe mdulos de software bem estruturados apresentam valores o de complexidade entre 3 e 7. A partir de evidncia emp e rica estabeleceu-se considerar 10 como o valor mximo aceitvel para C em cada mdulo. a a o 108

Exemplo com C = 6 5 + 2 = 3:
(N0, N1)

N0 N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13

euclid(int m, int n){ int r; if(n>m){ r=m; m=n; n=r; } r=m%n; while(r!=0){ m=n; n=r; r=m%n; } return n; }

(N2, N3, N4)

(N5, N6, N7)

(N8, N9, N10)

(N11, N12, N13)

Grafo de uxo de controlo

Existem outras mtricas que levam em linha de conta a possibilidade de uxos e de controlo ass ncronos.

Tornar os Sistemas Conveis a Podem-se distinguir duas aproximaes de projecto que podero ajudar a co a melhorar a abilidade dos sistemas: A preveno de faltas tenta eliminar qualquer possibilidade da ocorrncia ca e de falhas antes do sistema se tornar operacional - e.g. durante o projecto e desenvolvimento. A tolerncia a faltas consiste em fazer com que um sistema continue a funcia onar mesmo na presena de faltas. c Ambos os mtodos se destinam ` obteno de sistemas cujo comportamento e a ca bem denido em termos de falhas. e

109

Preveno de Faltas ca Existem duas etapas na preveno de faltas: (1) evitamento de faltas e (2) ca remoo de faltas cuja introduo no tenha sido poss de evitar. ca ca a vel O evitamento de faltas consiste em tentar limitar a introduo de componenca tes defeituosos durante a construo do sistema. No caso do hardware isto pode ca envolver: o uso de componentes mais veis, o que pode ter implicaes no custo ou a co mesmo no desempenho; o uso de tcnicas apropriadas para obter a melhor forma de efectuar as e ligaes entre os componentes e a montagem do sistema; co isolar o hardware de forma a evitar interferncias conhecidas. e Os componentes de software de grandes sistemas embebidos so hoje em dia a muito mais complexos do que os componentes de hardware. Apesar do S/W no sofrer deteriorao por fadiga, praticamente imposs criar programas a ca e vel completamente livres de defeitos. No entanto a qualidade do S/W criado pode ser melhorada atravs de: e especicao rigorosa dos requisitos; ca metodologias de projecto adequadas; utilizao de linguagens de programao que possibilitem uma maior absca ca traco de dados e modularidade de programas. ca o uso de ambientes de engenharia de software para ajudar a gerir a complexidade. A utilizao de todas estas tcnicas que acabam de ser enunciadas permite ca e obter S/W mais vel. No entanto, vo estar sempre presentes defeitos no a a sistema constru do. Em particular podem existir erros de projecto tanto em componentes de H/W como de S/W. E portanto necessrio passar ` segunda fase que a da remoo de faltas ou a a e ca dos defeitos que conduzem ao aparecimento destas. 110

Embora existam tcnicas como revises de projecto, vericao de programas, e o ca e inspeco de cdigo para detectar a presena de erros, a forma mais utilizada ca o c para a remoo de faltas submeter o sistema a um conjunto de testes. ca e Infelizmente a maior parte das vezes os testes de sistemas no podem ser a exaustivos nem remover todas as potenciais faltas. Por isso existem as seguintes limitaes na utilizao de testes: co ca Um teste permite apenas indicar a presena de faltas e no a sua ausncia; c a e Muitas vezes imposs e vel efectuar os testes em condies reais; Muitos co testes so efectuados em simuladores e dif garantir que a simulao a e cil ca e precisa/realista; Se existirem erros nas especicaes, estes s podero ser detectados duco o a rante o funcionamento normal do sistema e no atravs de testes que sejam a e elaborados de acordo com as especicaes. co Em alguns sistemas imposs efectuar a remoo de erros aps a activao e vel ca o ca do sistema. Um exemplo disso so as sondas espaciais. a

Tolerncia a Faltas a Apesar de todas as tcnicas de teste e vericao, os componentes de hardware e ca falham. Por isso a aproximao de prevenir a ocorrncia de falhas no tem ca e a sucesso quando: A frequncia ou a durao das reparaes inaceitvel; e ca co e a O sistema no est acess para operaes de manuteno e reparao. a a vel co ca ca A alternativa a tolerncia a faltas. e a

111

Podem-se denir/fornecer diversos n veis de tolerncia a faltas: a Total tolerncia a faltas: o sistema continua a funcionar na presena a c de falhas, ainda que por um per odo de tempo limitado, sem perda signicativa de funcionalidade ou desempenho. Degradao controlada/graciosa (fail soft): o sistema continua a ca funcionar na presena de erros, sendo aceitvel uma degradao temporria c a ca a de funcionalidade ou desempenho durante o per odo de reparao. ca Seguro nas falhas: o sistema mantm a sua integridade mesmo durante e uma paragem temporria no funcionamento. a O n requerido de tolerncia a faltas depende da aplicao. Embora em vel a ca teoria a maioria dos sistemas de segurana cr c tica necessitem de tolerncia total a a faltas, na prtica muitos implementam degradao controlada (e.g. avies de a ca o combate podem sofrer danos f sicos vrios n a veis de degradao controlada). ca Com sistemas de operao cont ca nua (requisito de disponibilidade elevada) forosa a degradao controlada dado que no se consegue alcanar total e c ca a c tolerncia a faltas durante per a odos innitos. Exemplo: degradao controlada e recuperao num sistema de trfego areo. ca ca a e

Funcionalidade total com os tempos de resposta requeridos.

Funcionalidade mnima requerida para manter o controlo bsico de trfego areo.

Funcionamento de emergncia. Fornece apenas a distinao entre aeronaves.

Backup prximo utilizado em falhas catastrficas: e.g. terremoto.

112

Nalgumas situaes pode ser simplesmente necessrio forar a paralisao co a c ca do sistema num estado seguro. Exemplo: num Airbus A310 os computadores de controlo dos slats e aps ao detectarem um erro na aterragem colocam valores simtricos em ambas as asas e depois desligam-se (s valores assimtricos e o e seria perigosos na aterragem). Tradicionalmente, o projecto de sistemas tolerantes a faltas baseava-se nos seguintes pressupostos: Os algoritmos no contm erros de projecto. a e Todos os tipos de falhas dos diversos componentes so bem conhecidos. a Todas as poss veis interaces entre o sistema e o ambiente que o rodeia co so conhecidos, ou seja poss fazer a sua anteviso. a e vel a Redundncia a Todas as tcnicas de tolerncia a faltas requerem a introduo de novos elee a ca mentos no sistema, seja para detectarem a presena de faltas ou para efectuar c a recuperao das mesmas. ca Estes componentes podem considerar-se redundantes pois no so necessrios a a a para o funcionamento de um sistema perfeito. Este mecanismo chamado de e redundncia protectiva. a Um dos objectivos das tcnicas de tolerncia a faltas o de minimizar a e a e redundncia procurando maximizar a abilidade do sistema, de acordo com as a restries de custo e desempenho. co Deve haver cuidado na estruturao de sistemas tolerantes a faltas os comca ponentes adicionais introduzidos aumentam inevitavelmente a complexidade do sistema o que pode levar ao efeito inverso do desejado, i.e. a diminuio da ` ca abilidade. Exemplo: o lanamento do primeiro space shuttle foi abortado c devido a uma diculdade de sincronizao entre computadores replicados. ca Portanto: para reduzir os problemas associados com a interaco entre comca ponentes redundantes, torna-se aconselhvel separar os componentes tolerantes a a falhas do resto do sistema. 113

Hardware Tolerante a Faltas Consideram-se duas formas bsicas de redundncia: redundncia esttica a a a a (dissimulante) e redundncia dinmica. a a No caso da redundncia esttica, so introduzidos novos componentes no a a a sistema por forma a esconder os efeitos das faltas. Um exemplo de redundncia esttica a redundncia tripla modular (RTM) a a e a que consiste em trs subcomponentes idnticos que recebem as mesmas entradas e e e as sa das esto ligadas a um circuito escrutinador de voto por maioria. O a escrutinador compara as sa das de todos os componentes e se uma diferir das outras duas ento ignorada, sendo considerada vlida a sa que seja comum a e a da a pelo menos dois mdulos. o
A A A

Circuito de votaao Resultado escolhido

Assume-se que a falta no devida a um aspecto comum dos sub-componentes a e (e.g. um erro de projecto) mas transitria ou devida ` deteriorao de um e o a ca componente. Para dissimular faltas de mais do que um componente necessria mais e a redundncia. Usa-se portanto o termo redundncia N Modular (RNM) para a a caracterizar este mtodo. e e A redundncia dinmica fornecida dentro dos componentes que indicam a a eles prprios se a sua sa est ou no errada. Desta forma, ao contrrio da o da a a a dissimulao de erros, trata-se de um mecanismo de deteco de erros. ca ca 114

Exemplos: Bits de paridade nas memrias; o CRCs nos discos magnticos; e checksums utilizados nas comunicaes. co

Tolerncia a Faltas de Software a No caso da tolerncia a faltas de software podem-se utilizar duas formas bsicas. a a Uma semelhante ` tolerncia esttica utilizada no hardware, a que se chama a a a programao por N-verses. ca o A segunda baseada na deteco e recuperao de erros o que semelhante e ca ca e ` redundncia dinmica no sentido em que os procedimentos de recuperao a a a ca entram em aco aps a deteco de um erro. ca o ca

Programao por N-Verses ca o O sucesso no uso de RTM no hardware motivou o uso de uma aproximao ca semelhante no software. No entanto, como o software no envelhece, esta aproximao apenas pode a ca servir para detectar erros de projecto. A programao por N-verses denida como a gerao independente de ca o e ca N (N > 2) programas funcionalmente equivalentes produzidos a partir das mesmas especicaes. co A gerao independente de N programas signica que N indiv ca duos ou grupos produzem as necessrias N verses do software sem qualquer tipo de interaco. a o ca Por esta razo a programao por N-verses frequentemente designada por a ca o e diversidade de projecto.

115

Uma vez projectados e escritos, os programas correm concorrentemente utilizando as mesmas entradas, e as suas sa das so analisadas por um processo driver. a Em principio os resultados deveriam ser iguais, mas na prtica pode haver ala guma diferena, caso em que se assume como correcto um resultado que seja c consensual, se um tal resultado existir. A programao por N-verses baseada nas seguintes duas hipteses: ca o e o (1) Um programa pode ser especicado de forma completa, consistente e no a amb gua; (2) Programas desenvolvidos independentemente falharo de forma indepena dente, i.e. no existe qualquer relao entre as faltas de uma verso e as faltas a ca a de qualquer das outras verses. Para garantir esta independncia dos erros o e e conveniente cada grupo utilizar: Diferentes ambientes de desenvolvimento de software (de diferentes software houses); Linguagens de programao diferentes (C, ADA, PASCAL, etc); ca Se no for poss usar linguagens diferentes, pelo menos usar compiladoa vel res diferentes. Para proteger contra faltas f sicas as N verses devem ser distribu o das por mquinas separadas, que comunicam atravs de linhas de comunicao tolerana e ca tes a faltas. Exemplo: no sistema de controlo de voo do Boeing 777 foi usado um unico programa em ADA mas este foi compilado por 3 compiladores diferentes e cada verso executada num computador independente para obter diversidade. a e

116

A programao por N-verses controlada por um processo driver que ca o e e responsvel por: a invocar cada uma das verses; o esperar que estas completem as operaes necessrias; co a comparar os resultados e escolher a aco a desencadear. ca Embora se considere que os programas so lanados e o driver espera que estes a c terminem para comparar os resultados, em alguns sistemas embebidos isto no a verdade pois todos estes processos executam continuamente. O driver e as N e verses devem portanto comunicar durante o curso da sua execuo. o ca O modo de comunicao e sincronizao com o driver depender da linguaca ca a gem de programao e do respectivo modelo de concorrncia. Se forem usadas ca e diferentes linguagens para diferentes verses, ento os modos de comunicao e o a ca sincronizao sero usualmente fornecidos por um sistema operativo de tempoca a real. A relao entre as N-verses e o driver para um sistema com N = 3 ilustrada ca o e na gura seguinte:

Verso 1

Verso 2

Verso 3

status voto voto

status voto

status

Driver
Sada/resultado

117

A interaco entre as verses e o programa driver especicada nos requisitos ca o e para as verses e consiste de 3 componentes: o Vectores de comparao: sa ca das (ou votos) produzidas pelas verses e atrio butos associados com o seu clculo (e.g. como foi obtido o resultado? a aquisio de dados recentes ou estimao recente?). Estas sa ca ca das devem ser comparadas pelo driver. Indicadores do estado da comparao: so comunicados do driver para as ca a verses e indicam as aces que cada verso deve realizar como resultado o co a da comparao. Estas aces dependem do resultado da comparao: se ca co ca os votos estavam de acordo e se foram distribu dos a tempo. Algumas possibilidades so: a continuar, terminar, continuar aps modicar o seu voto para o da maioria. o a o Pontos de comparao: so pontos onde cada uma das verses deve indica car o seu voto ao processo driver. A frequncia pela qual so efectuadas e a comparaes designada por granularidade da tolerncia a falhas. co e a co Com granularidade elevada (i.e. comparaes infrequentes) temos menores penalizaes de desempenho provocados pelo processo de votao e a possibilidade co ca de maior independncia no projecto das verses; contudo teremos possivelmente e o uma maior divergncia de resultados devido ao maior nmero de passos efectue u ados entre comparaes. co e Com granularidade na teremos possivelmente menor divergncia de resultados nas entre comparaes. Por outro lado existiro nos programas elementos co a estruturais comuns a um n de detalhe mais no (os programas tm que pasvel e sar por um maior nmero de etapas de votao comuns), o que reduz o grau u ca de independncia entre as verses. Uma elevada frequncia de comparaes e o e co tambm aumenta as penalizaes de desempenho associadas ` votao. Com e co a ca granularidade na teremos possivelmente menor divergncia de resultados nas e comparaes. co 118

Comparao de Votos ca

Na programao com N-verses essencial a ecincia e facilidade com a qual ca o e e o escrutinador compara os resultados e estabelece se h ou no discordncia. a a a Em aplicaes que manipulam texto ou realizem aritmtica inteira, existe co e normalmente um resultado correcto. Nestes casos o driver pode facilmente comparar os votos das diferentes verses e escolher a deciso maioritria. o a a No caso das votaes envolverem (dados que resultem de clculos com) nmeros co a u reais improvvel que diferentes verses produzam exactamente os mesmos e a o resultados. Isto pode dever-se a: representao inexacta dos nmeros pelo ca u hardware e diferentes sensibilidades dos dados em cada um dos algoritmos. As tcnicas usadas para comparar estes tipos de resultados so chamadas de e a votao inexacta. Uma tcnica simples realizar uma vericao de limites ca e e ca em torno de uma estimativa anterior ou de um valor mediano de todos os N resultados. Outro problema com a comparao de votos pode ocorrer quando existirem ca naturalmente mltiplas solues para o mesmo problema. Por exemplo uma u co equao quadrtica tem duas solues. E poss discrepncia apesar de no ca a co vel a a ter ocorrido nenhuma falta. a a e O problema da comparao consistente: est associado ` aritmtica de preca ciso nita e ocorre quando uma aplicao tem de realizar uma comparao em a ca ca relao a um certo valor nito dado na especicao; o resultado da comparao ca ca ca determina o caminho a seguir e em ultima instncia o voto da verso. a a

119

Exemplo: aplicao de controlo de processos com um sensor de temperatura ca e outro de presso. Para manter a integridade do sistema, este toma aces a co apropriadas em funo dos valores dos sensores. Suponhamos que quando qualca quer destes sensores ultrapassa algum valor limiar deve ser desencadeada uma determinada aco correctiva. ca Suponhamos que existem trs verses (V1 , V2 , V3 ) cada uma das quais deve e o ler os sensores e votar uma sa (no existe comunicao entre as verses at da a ca o e que estas votem). Como resultado do uso de aritmtica de preciso nita, cada e a verso ir calcular diferentes valores para a temperatura (T1 , T2 , T3 ) e para a a a presso (P1 , P2 , P3 ). Se assumirmos que os valores limiar so Tlim para a a a temperatura e Plim para a presso, ento o problema da comparao consistente a a ca ocorre quando ambas as leituras se situam em torno dos seus valores limite. Suponhamos que T1 e T2 esto ligeiramente abaixo de Tlim e T3 ligeiramente a acima. Neste caso V1 e V2 seguiro a sua execuo normal e V3 tomar alguma a ca a aco correctiva. Se as verses V1 e V2 seguirem agora para outro ponto de ca o comparao poss que P1 esteja ligeiramente acima e P2 ligeiramente abaixo ca e vel de Plim . Neste caso as 3 verses seguiro trajectrias de execuo diferentes e o a o ca produziro portanto resultados diferentes mas cada um dos quais vlido. a e a ` Surge ento ao escrutinador o problema de qual resultado adoptar. A primeira a vista parece apropriado usar tcnicas de comparao inexacta e considerar que e ca os valores so iguais se no diferirem mais do que uma certa tolerncia ; mas a a a o problema repete-se se os valores de diferena estiverem prximos de . c o
T
1

T no

Tlim sim P
1

Tlim sim P no
2

Tlim

P
lim

lim

lim

sim

120

Principais Questes em Programao com N-verses o ca o O sucesso da utilizao de verses mltiplas para obter redundncia esttica e ca o u a a assim aumentar a abilidade de um sistema, depende de vrios factores. Entre a eles podemos apontar os seguintes: Especicao inicial: muitos dos defeitos presentes no software advm de uma ca e especicao inicial inadequada. Um erro de especicao ir manifestar-se em ca ca a todas as N verses da implementao. As especicaes devem ser completas, o ca co consistentes, compreens veis e no amb a guas. ca c Independncia nos esforos de projecto: a utilizao de esforos independene c tes mostrou em alguns casos que a maior parte das falhas no se repetiam nos a vrios mdulos. Isto no entanto requer uma grande disciplina e uma especia o cao de requisitos muito completa. Este ponto tem sido algo controverso ca pois alguns autores advogam que se a especicao for muito complexa, poder ca a no ser correctamente compreendida por todas as equipas de desenvolvimento. a e Oramento adequado: o custo de desenvolvimento de um sistema embebido c predominantemente do software. Por isso, se num sistema se pretender utilizar 3 verses isso implicar aproximadamente triplicar o custo nal. Logo a utilizao o a ca de verses mltiplas est muitas vezes dependente do oramento previsto para o u a c o desenvolvimento do produto. Por outro lado, pode no ser claro se se poderia a alcanar um sistema mais vel se os recursos dispon c a veis para construir N verses fossem utilizados para produzir uma verso. o a Tem-se tambm mostrado que por vezes dif encontrar algoritmos de e e cil votao inexactos, e a menos que se tome cuidado com o problema da comca parao consistente, os votos podero diferir mesmo na ausncia de faltas. ca a e A programao por N-verses tem sem dvida um papel importante na ca o u produo de sistemas conveis, no entanto devem ser usados cuidados especica a ais no seu desenvolvimento e deve ser usada em conjunto com outras tcnicas e como as que abaixo sero abordadas. a 121

Redundncia Dinmica de Software a a A programao de N-verses um mtodo de redundncia esttica, em que ca o e e a a as falhas no interior de cada mdulo so escondidas do exterior. A designao o a ca esttica advm do facto de serem xas as relaes entre verses e entre estas e a e co o o driver; e os diversos mdulos so activados quer ocorram faltas ou no. o a a Com a redundncia dinmica os componentes redundantes entram em a a operao apenas quando detectado um erro. Esta tcnica de tolerncia a ca e e a faltas tem quatro fases constituintes: (1) Deteco de Erros: a maior parte das faltas manifestar-se-o eventualca a mente na forma de um erro; nenhum esquema de tolerncia a faltas pode ser a utilizado at esse erro ser detectado. e (2) Avaliao e Connamento de Danos: quando detectado um erro tem ca e que se decidir qual a extenso do sistema que foi corrompida (diagnstico de erros); a o o atraso entre a ocorrncia da falta e a manifestao do erro associado signica e ca que o erro se pode ter espalhado pelo sistema. (3) Recuperao de Erros: o objectivo das tcnicas de recuperao de erca e ca ros transformar o estado do sistema corrompido levado-o a um estado onde e se possa continuar com a operao normal (possivelmente com funcionalidade ca degradada). Este um dos aspectos mais importantes da tolerncia a faltas. e a (4) Tratamento de Faltas e Funcionamento Cont nuo: um erro um e sintoma de uma falta; mesmo que o dano j tenha sido reparado, a falta pode a continuar a existir e, portanto, o erro pode reaparecer a menos que seja efectuada alguma forma de manuteno. ca Embora estas quatro fases sejam discutidas no contexto da redundncia de a software elas podem claramente ser aplicadas ` programao por N-verses: a a ca o deteco de erros fornecida pelo driver que realiza a vericao dos votos; ca e ca a avaliao dos danos no necessria porque as verses so independentes; ca a e a o a a recuperao de erros envolve abandonar o resultado errado; o tratamento ca da falta consiste simplesmente em ignorar a verso que produziu o resultado a errado. Contudo se todos os votos forem diferentes, ento pode-se detectar o a erro mas no existe mtodo de o recuperar. a e Vamos ver de seguida cada uma das quatro fases da redundncia dinmica de a a software em mais detalhe. 122

Deteco de Erros ca A efectividade de qualquer sistema tolerante a faltas depende da efectividade das suas tcnicas de deteco de erros. Podem-se identicar duas classes de e ca tcnicas de deteco de erros: e ca (1) Deteco de erros no ambiente onde a aplicao funciona. Estes inca ca cluem os que so detectados pelo hardware tais como execuo de instruo a ca ca ilegal, erros de funes aritmticas tais como overow, diviso por zero, etc, co e a ou a violao de mecanismos de proteco. Incluem tambm os erros detectaca ca e dos pelo sistema de suporte de execuo da linguagem de programao usada: ca ca e.g. violao dos limites da tabela, referncia a um ponteiro nulo, etc. ca e (2) Deteco pela aplicao: estes so os erros detectados pela prpria ca ca a o aplicao. A maioria das tcnicas que podem ser usadas pela aplicao enquadramca e ca se dentro das seguintes categorias: Vericaes por replicao: equivalente ` programao por N-verses onde se co ca a ca o verica a consistncia dos resultados (duas verses redundantes). e o Vericaes de temporizao: podem-se identicar dois tipos. (1) O primeiro co ca um mecanismo de temporizao designado por watchdog timer pode por e ca exemplo ser implementado como um processo que, se durante um certo per odo no receber um sinal de um componente, assume que ocorreu um erro nesse a componente. Esse componente de software tem que enviar continuamente um sinal ao temporizador para indicar que est a funcionar correctamente. (2) a Quando as metas temporais das respostas so importantes, pode-se vericar a se ocorrem faltas por no cumprimento das metas. Quando o escalonamento a de metas efectuado pelo sistema operativo a vericao do cumprimento das e ca metas pode-se considerar parte do ambiente de operao. ca Como se compreende facilmente, os testes de temporizao no garantem que a ca a resposta de um mdulo seja a correcta, apenas garantem que esta foi produzida o no tempo certo. Tero portanto que ser usadas em conjunto com outras tcnicas a e de deteco de erros. ca

123

Vericao por reversibilidade: em casos em que existe uma relao de umca ca para-um entre a entrada de um componente e a sua sa da, poss calcular e vel o valor de entrada que poderia ter dado origem ` sa observada. Depois a da basta fazer a comparao entre o valor de entrada real e o valor calculado para ca vericar se coincidem. Vericao por codicao: os cdigos de deteco e recuperao de erros so ca ca o ca ca a muitas vezes usados para vericar a corrupo de dados. Como exemplos temos ca os CRCs no armazenamento em discos e os ckecksums na transmisso de dados. a Quando os dados so recebidos, os cdigos so recalculados e comparados com a o a os que foram armazenados ou transmitidos juntamente com os dados. Vericaes de razoabilidade: so baseadas no conhecimento do projecto inco a terno e construo do sistema. E vericado se o estado dos dados ou o valor de ca um objecto razovel tendo em conta a sua utilizao. Em algumas linguagens e a ca de programao muita da informao necessria para efectuar este tipo testes ca ca a pode ser fornecida pelo programador como informao associada ao tipo dos ca objectos. Um destes testes poder ser a vericao se se pretende calcular um a ca nmero real que seja a raiz quadrada de um nmero de valor negativo. Outro u u exemplo: denio de objectos inteiros restringidos a certas gamas de valores ca e vericao de violaes de gamas pelo sistema de suporte a execuo da linca co ca guagem. Por vezes so inclu a das nos componentes de software vericaes de razoabilico a o o dade expl citas. Estas so designadas de asseres que so expresses lgicas a co que durante a execuo so avaliadas como verdadeiras se no houver erro. ca a a Vericaes estruturais: so usadas para vericar a integridade de estrutuco a ras de dados tais como listas ligadas e las. Podem consistir em contagens do nmero de elementos num objecto, ponteiros redundantes, ou informao u ca adicional de estado. das de alguns sensores ou Vericaes de razoabilidade da dinmica: nas sa co a controladores digitais, existe usualmente uma relao entre duas sa ca das consecutivas. Pode-se assumir um erro se uma nova sa for demasiadamente da diferente de uma anterior. Por exemplo uma leitura de velocidade de um automvel amostrada com um per o odo de 10ms no pode passar de 100km/h para a 0km/h ou para 130km/h num unico intervalo de amostragem. 124

Avaliao e Connamento de Danos ca Como pode haver um atraso entre a ocorrncia de uma falta e a deteco do e ca erro correspondente, necessrio vericar qualquer dano que possa ter ocorrido. e a O tipo de erro detectado dar alguma ideia do dano causado. Interessa que os a danos no se espalhem pelo sistema. a e O connamento de danos (tambm conhecido por rewalling) tem a ver com a estruturao do sistema de modo a minimizar os danos causados por um ca componente defeituoso. Existem duas tcnicas que podem ajudar no connamento de danos: a dee composio por mdulos e as aces atmicas. ca o co o A decomposio por mdulos tem a vantagem de dividir o sistema em comca o ponentes sendo cada componente constitu por um ou mais mdulos. A do o interaco entre os mdulos ocorre atravs de interfaces bem denidos. Os deca o e talhes internos de cada um dos mdulos no so, em princ o a a pio, conhecidos ou acess veis do exterior. Isto permite que um erro que ocorra num mdulo no se o a propague facilmente a outro componente. Os mdulos fornecem uma estrutura esttica ao sistema de software. Igualo a mente importante para o connamento dos danos a estrutura dinmica do softe a ware dado que facilita o racioc nio sobre o comportamento do software quando em execuo. ca Uma forma de estruturao dinmica atravs de aces atmicas: A actica a e e co o vidade de um componente considerada atmica se NAO existirem quaisquer e o interaces entre a actividade e o sistema durante a acao. co c Para o sistema, uma aco atmica parece instantnea e indivis ca o a vel. No a pode passar nenhuma informao da aco atmica para o resto do sistema e ca ca o vice-versa. co As aces atmicas so tambm conhecidas por transaces ou transaces co o a e co atmicas. So utilizadas para levar o sistema de um estado consistente para o a outro e restringir o uxo de informao entre os componentes. ca Quando dois ou mais mdulos partilham um recurso, a circunscrio de dao ca nos envolve o uso de restries no acesso ao recurso. A implementao deste co ca aspecto envolve primitivas de comunicao e sincronizao entre componentes ca ca (semforos, etc). a 125

Outras tcnicas que tentam restringir o acesso a recursos so baseadas em e a mecanismos de proteco. De cada vez que um processo pretende fazer algum ca acesso ou operao a um recurso (leitura, escrita, execuo, etc) o tipo de ca ca operao pretendida comparada com as permisses de acesso do processo ao ca e o recurso, e se necessrio o acesso negado. a e Recuperao de Erros ca Aps os erros terem sido detectados e os danos avaliados, necessrio execuo e a tar procedimentos de recuperao de erros. Esta provavelmente a fase mais ca e importante numa tcnica de tolerncia a faltas. e a O objectivo ser transformar um estado errneo num em que se possa contia o nuar o funcionamento normal, embora possivelmente com servio degradado. c Tm sido propostos dois mtodos para a recuperao de erros: recuperao e e ca ca directa (forward recovery) e recuperao reversiva (backward recovery). ca A recuperao directa tenta que o sistema recupere a partir de um estado ca de erro fazendo um conjunto de correces (transies) ao estado do sistema. co co Pode ser importante para garantir a segurana num ambiente controlado por c um sistema embebido. Este mtodo apesar de ser eciente, espec e e co a cada aplicao e depende ca da predio rigorosa da fonte e causa dos erros. ca o Exemplos: ponteiros redundantes em estruturas de dados, cdigos de autocorreco tais como os cdigos de Hamming. ca o Se existir mais que um processo envolvido a fornecer servios quando o erro c ocorre pode ser necessrio enviar uma excepo ass a ca ncrona a vrios processos a para realizar a recuperao. ca

126

A recuperao reversiva consiste em restaurar o sistema num estado seguro ca prvio `quele em que ocorreu o erro. e a De seguida executada uma seco alternativa `quela em que ocorreu o e ca a erro. Esta seco deve ter a mesma funcionalidade mas utilizar um algoritmo ca diferente. Tal como na programao por N-verses, espera-se que a seco ca o ca alternativa no produza a mesma falta. a O ponto para o qual o processo recuperado, chamado ponto de recuperao, e e ca e o acto de o estabelecer designado de checkpointing. Para estabelecer um e ponto de recuperao necessrio salvar informao apropriada durante a execuo. ca e a ca ca Vantagem: o erro apagado mas para isso no necessrio encontrar a loe a e a calizao ou a causa do erro. Este mtodo pode portanto ser utilizado para ca e recuperar de faltas no antecipadas incluindo erros de projecto. a a Desvantagens: (1) No pode reverter os efeitos da falta no ambiente. (2) Pode consumir muito tempo o que pode impedir a sua utilizao em aplicaes de ca co tempo-real. Para diminuir as penalizaes de desempenho, podem-se implementar tcnicas co e de checkpointing incremental. Um exemplo so os trilhos de auditoria. Nestes a casos o sistema de suporte deve reverter as aces indicadas no trilho. co Efeito domin. A interaco entre processos concorrentes, pode dicultar o o ca restauro do estado do sistema para um ponto de recuperao prvio. Nestes ca e casos, se existir comunicao entre os processos, ao ser detectado um erro num ca estado de um processo pode ser necessrio levar vrios processos a estados a a anteriores uma vez que no podemos simplesmente desfazer e recomear as a c comunicaes. co

127

Tempo de Execuo

Exemplo: consideremos os dois processos ilustrados na gura ao lado. O processo P1 estabelece pontos de recuperao R11 , R12 , ca R13 . O processo P2 estabelece pontos de recuperao R21 , R22 . Os dois processos coca municam e sincronizam as suas operaes co atravs dos eventos de comunicao intere ca processos IP C1 , IP C2 , IP C3 , IP C4 . Se P1 detecta um erro no instante Te , ento recupera simplesmente para o ponto a R13 . Contudo, consideremos o caso em que P2 detecta um erro em Te . Se P2 for recuperado para R22 , ento deve desfazer a a comunicao IP C4 com P1 . ca

R 11 IPC1 R IPC2 R
12 21

IPC3 R IPC4 R 13

22

Te

Mas isto obriga a que P1 regresse a R12 . Mas se isso for feito, P2 tem que regressar a R21 para desfazer a comunicao IP C3 , e assim sucessivamente. A ca consequncia que ambos os processos tm que recuperar para o in da sua e e e cio fase de interaco mtua. Em muitos casos isto pode ser equivalente a abortar ca u os processos! Este fenmeno conhecido por efeito de domin. o e o Claramente, se no existir interaco entre processos no existir efeito de a ca a a domin. Se houverem mais de dois processos a interactuar, a possibilidade de o ocorrer o efeito domin aumenta. Neste caso convm projectar pontos de recuo e perao consistentes em todo o sistema de forma a que a deteco de um erro ca ca num processo no resulte na recuperao total de todos os processos. Em vez a ca disso, podem-se recuperar os vrios processos para um conjunto consistente de a a pontos de recuperao. Estas linhas de recuperao como so frequentemente ca ca chamadas, esto relacionadas com a noo de aces atmicas atrs discutidas. a ca co o a Os sistemas embebidos devem ter capacidade de no s recuperar de erros a o no antecipados, mas tambm de responder em tempo nito. Podem portanto a e ter a necessidade de utilizar ambas as tcnicas de recuperao de erros: directa e ca e reversiva. 128

Tratamento de Faltas e Funcionamento Cont nuo Um erro uma manifestao de uma falta, e embora a fase de recuperao e ca ca de erros possa ter reposto o sistema num estado consistente e sem erros, o erro pode voltar a ocorrer se a falta no for tratada/reparada. Assim. . . a A fase nal na tolerncia a faltas a erradicao da falta de forma a que a a e ca operao normal possa continuar. ca Tratamento automtico de faltas dif e depende do sistema concreto. Por a e cil isso, alguns sistemas no implementam tratamento de faltas, assumindo que a todas as faltas so transitrias. Outros sistemas assumem que as tcnicas de a o e recuperao de faltas so sucientes para lidar com faltas recorrentes. ca a O tratamento de faltas pode ser dividido em duas fases: localizao da falta ca e reparao do sistema/componente. ca Tcnicas de deteco de erros podem ajudar a localizar o componente em e ca falta. Para um componente de hardware isto pode ser sucientemente preciso e o componente pode ser simplesmente substitu do. Uma falta de software pode ser removida numa nova verso do cdigo. a o Em aplicaes com funcionamento cont co nuo necessrio modicar o programa e a enquanto este est a ser executado. Trata-se de um grande problema tcnico. a e

129

Blocos de Recuperao para Tolerncia a Faltas de Software ca a Os blocos de recuperao de erros so uma forma de recuperao de erros ca a ca reversiva. Podem ser implementados como um mecanismo da linguagem de programao. ca So blocos no sentido normal de uma linguagem de programao, excepto que a ca estabelecido automaticamente um ponto de recuperao ` entrada do bloco e e ca a um teste de aceitao ` sa ca a da. O teste de aceitao usado para testar se o sistema est num estado aceitvel ca e a a e aps a execuo do bloco (ou mdulo primrio como frequentemente chao ca o a mado). Se o teste de aceitao falhar, o programa restaurado para o estado do ponto ca e de recuperao do in do bloco sendo depois executado um mdulo alternativo ca cio o para esse bloco. Se o novo mdulo tambm falhar o teste de aceitao, o proo e ca grama novamente restaurado no in e cio do bloco e executado um terceiro e mdulo. o Se todos os mdulos falharem, ento o bloco falha e a recuperao tem que o a ca ser efectuada a um n mais elevado. A execuo de um bloco de recuperao vel ca ca ilustrado na gura seguinte: e
Restaura ponto de recuperao Falha Sada do bloco de recuperao

Entrada no bloco de recuperao Estabelece ponto de recuperao Executa prxima alternativa

Existem alternativas?

Sim

Avalia teste de aceitao

Passa

Apaga ponto de recuperao

No

Falha Bloco de Recuperao

Em termos das 4 fases da tolerncia a faltas de S/W: (1) a deteco de erros a ca e implementada pelo teste de aceitao, (2) a avaliao de danos no necessria ca ca a e a dado que se assume que (3) a recuperao reversiva apaga todos os estados ca errneos, e (4) o tratamento de faltas alcanado pelo uso de um mdulo o e c o alternativo. 130

Uma poss sintaxe para os blocos de recuperao a seguinte: vel ca e ensure <teste de aceita~o> ca by <mdulo primrio> o a else by <mdulo alternativo> o else by <mdulo alternativo> o else by ... else by <mdulo alternativo> o else error Tal como nos blocos normais, os blocos de recuperao podem ser encadeados ca uns dentro dos outros. Se um bloco encadeado falhar os seus testes de aceitao ca e se todos os seus mdulos alternativos tambm falham ento ser restaurado o o e a a ponto de recuperao do n exterior, e ser executado um mdulo alternativo ca vel a o a esse bloco. ca O teste de aceitao fornece o mecanismo de deteco de erros que possibilita ca depois que a redundncia do sistema seja explorada. O projecto do teste de a aceitao crucial para a eccia do mtodo dos blocos de recuperao. ca e a e ca Tal como em todos os mecanismos de deteco de erros existe um compromisso ca entre fornecer um teste de aceitao muito completo e manter a sobrecarga de ca teste ao m nimo, de forma a que a execuo normal sem faltas seja afectada o ca m nimo poss vel. a ca Notemos que o termo empregue aceitao e no correco; isto permite que e ca um componente fornea um servio degradado mas aceitvel. c c a Todas as tcnicas de deteco de erros vistas atrs podem ser usadas para e ca a construir o teste de aceitao. Contudo, deve haver cuidado no seu projecto ca dado que um teste de aceitao com faltas pode levar ` continuao da operao ca a ca ca do sistema com erros residuais no detectados. a 131

Comparao Entre Programao por N-verses e Blocos de ca ca o Recuperao ca Foram estudadas duas aproximaes para fornecer software tolerante a faltas: co programao por N-verses (PNV) e blocos de recuperaao (BR). Seguidamente ca o c vamos fazer uma breve reviso e comparao destes dois processos. a ca Redundncia esttica versus dinmica: a programao por N-verses basea a a ca o e ada em redundncia esttica; todas as verses correm em paralelo independena a o temente da falta ocorrer ou no. Por outro lado, os blocos de recuperao so a ca a dinmicos no sentido em que apenas quando detectado um erro que so a e e a executados mdulos alternativos. o Sobrecargas no projecto: tanto PNV como BR obrigam a custo de desenvolvimento adicional, dado que ambos requerem o desenvolvimento de algoritmos alternativos. Por outro lado, PNV requer um processo driver e os BR requerem o projecto de um teste de aceitao. ca ca Sobrecargas em execuo: em execuo PNV requer aproximadamente N veca zes os recursos de uma verso. Embora BR apenas requeiram um unico conjunto a de recursos de cada vez, existem custos associados com o processo de estabelecimento de pontos de recuperao e de restauro do estado. Contudo, apenas ca e necessrio restaurar o estado quando uma falta ocorre. Alm disso, tambm a e e e poss vel o desenvolvimento de hardware para suportar o estabelecimento de pontos de recuperao. ca e e Diversidade de projecto: Em ambos os mtodos explorada a diversidade de projecto para alcanar tolerncia a erros no antecipados. Portanto, ambos os c a a mtodos so sens e a veis a erros nas especicaes de requisitos. co Deteco de erros: PNV usa comparao de votos e BR usa um teste de ca ca aceitao. Quando for poss votao exacta ou inexacta esta tem provavelca vel ca mente associada menos sobrecarga do que com teste de aceitao. Contudo, ca se for dif encontrar uma tcnica de votao inexacta, se existirem mltiplas cil e ca u solues, ou se existir um problema de comparao consistente, os testes de co ca aceitao podem fornecer uma soluo mais ex ca ca vel. 132

Atomicidade: a recuperao de erros reversiva tem a desvantagem de no ca a poder reverter qualquer dano que possa ter ocorrido no ambiente. PNV evita este problema porque se assume que as verses no interferem entre elas: so o a a atmicas. Isto requer que cada verso comunique com o processo driver e no o a a com o ambiente. Contudo poss estruturar os programas de forma a que e vel no sejam inclu a das operaes irrecuperveis em blocos de recuperao. co a ca Deve-se notar que embora PNV e BR sejam aproximaes alternativas, elas co tambm so complementares. Por exemplo no existe nada que impea de usar e a a c BR no projecto de cada verso de um sistema de PNV. a Redundncia Dinmica e Excepes a a co Um erro uma manifestao de uma falta. Uma falta a manifestao de um e ca e ca erro num componente. Estes erros podem ser antecipados, como por exemplo um erro de leitura num sensor devido a um erro de hardware; ou no antecipados a como no caso de um erro de projecto de um componente. Uma excepo pode ser denida como a ocorrncia de um erro. Trazer uma ca e excepo ` considerao da entidade que invocou a operao que a causou ca a ca ca e chamada sinalizao (levantamento ou lanamento) da excepo. A resposta a ca c ca c essa excepo designada de manuseamento (ou servio). ca e O manuseamento de uma excepo pode ser considerado um mecanismo de ca recuperao directa de erros, dado que quando uma excepo ocorre, o sistema ca ca no reposto num estado prvio. Em vez disso passado o controlo a uma a e e e rotina de resposta que inicia os procedimentos de recuperao. ca Contudo o manuseamento de excepes permite tambm implementar mecaco e nismos de recuperao reversiva de erros. ca Os mecanismos de manuseamento de excepes no foram inclu co a dos nas linguagens de programao para lidar com erros de projecto de programas. A moca tivao original para as execepes vinha da necessidade de lidar com condies ca co co raras e anormais que surjam no ambiente em que o programa executa. Exemplo: uma vlvula avariada ou um alarme de temperatura podem causar a excepes. Estes so eventos raros que passado muito tempo podem perfeitaco a mente ocorrer e devem ser tolerados. 133

As excepes so um mecanismo geral para lidar com erros. Resumindo, as co a excepes podem ser usadas para: co Lidar com condies anormais que surjam no ambiente; co Possibilitar que sejam toleradas faltas de projecto do programa; Fornecer um mecanismo genrico de deteco e recuperao de erros. e ca ca Um Componente Tolerante a Faltas Ideal O componente recebe pedidos de servio e, se necessrio, solicita os servios c a c de outros componentes antes de fornecer uma resposta. Esta resposta pode ser normal ou ser uma excepo. ca
Pedido de servio Resposta normal Excepo de interface Excepo de falha

Regresso ao servio normal Actividade normal Excepo interna Servidor de excepo

Pedido de servio

Resposta normal

Excepo de interface

Excepo de falha

Podem ocorrer dois tipos de faltas no componente ideal: as devidas a um pedido ilegal de um servio, chamadas excepes de interface. c co O outro tipo de faltas so as devidas ao mau funcionamento do prprio coma o ponente ou nos componentes necessrios para desempenhar o servio originala c mente pedido. Quando o componente, por recuperao de erros quer directa ca quer reversiva, no puder tolerar estas faltas, levanta uma excepo de falha a ca para o componente que chamou o servio. c Antes de levantar qualquer excepo, o componente deve, se poss ca vel, repor-se a si prprio num estado consistente de forma a que possa servir qualquer pedido o futuro. 134

Segurana e Fiabilidade c Um sistema diz-se seguro se estiver livre da ocorrncia de condies que caue co sem morte, ferimentos, doenas ocupacionais, danos em (ou perdas de) equic pamento (ou propriedade). Dene-se um mau-acaso como a ocorrncia de um e evento (ou srie de eventos) no planeados como aqueles que possam ter como e a consequncia estes tipos de danos. e A abilidade de um sistema pode-se denir como uma medida do sucesso pelo qual este est conforme com alguma especicao para o seu funcionamento. a ca Embora a abilidade e a segurana sejam muitas vezes considerados como c sinnimos, existe uma diferena de nfase nos dois conceitos. A abilidade o c e e frequentemente expressa em termos de probabilidade. A segurana, contudo, c e a probabilidade de que no ocorram condies que possam levar a maus-acasos a co isto independentemente de a funo desejada seja ou no a realizada. ca a Estas duas denies podem ser conituosas entre si. Por exemplo, mtodos co e que aumentem a probabilidade de uma arma disparar quando necessrio poe a dem perfeitamente aumentar a possibilidade da sua detonao acidental. Em ca muitos aspectos, o unico avio seguro aquele que nunca levanta voo; contudo, a e um tal avio no seria muito vel. a a a Tal como com a abilidade, para garantir requisitos de segurana de um c sistema embebido, necessrio realizar anlises de segurana do sistema ao e a a c longo de todas as fases de desenvolvimento do sistema. Existem tcnicas para realizar anlise de segurana de sistemas e em particular e a c de (sistemas de) software.

135

Dependabilidade Com o muito trabalho que se tem realizado na rea da computao tolerante a ca a faltas, os conceitos relativos ` segurana e abilidade tm evolu e tema c e do se procurado usar termos que melhor descrevam aspectos particulares que se queiram enfatizar. Tem-se portanto tentado produzir denies claras e largamente aceites para co os conceitos bsicos encontrados neste campo. a Neste sentido, introduziu-se a noo de dependabilidade. A dependabilidade ca de um sistema a propriedade que permite conar justicadamente no servio e c que este fornece. A dependabilidade tem como casos especiais as noes de abilidade e seguco rana. A gura seguinte ilustra os diversos conceitos associados com a depenc dabilidade.
DEPENDABILIDADE

Prontido de utilizao

Continuidade de fornecimento de servio

Noocorrncia de consequncias catastrficas

Noocorrncia de revelao noautorizada de informao

Noocorrncia de alterao imprpria de informao

Aptido para sofrer reparaes e evolues

DISPONVEL

FIVEL

SEGURO

CONFIDENCIAL

INTEGRAL

MANUTENVEL

A dependabilidade pode ser descrita em termos de trs componentes: e Enfraquecimentos: circunstncias que sejam causa de, ou resultem de, noa a dependabilidade; e co a c Meios: os mtodos, ferramentas, e solues necessrios para um servio dependvel com o necessrio grau de conana; a a c Atributos: a forma e as medidas pelas quais se possa avaliar/estimar a qualidade de um servio dependvel. c a

136

A gura seguinte ilustra o conceito de dependabilidade em termos destes trs e componentes:


Disponibilidade Fiabilidade Atributos Segurana Confidencialidade Integridade Manutenibilidade Preveno de faltas DEPENDABILIDADE Meios Tolerncia a faltas Remoo de faltas Previso de faltas Faltas Enfraquecimentos Erros Falhas

137

Excepes e Servio a Excepes co c co Excepes mtodo para implementar tolerncia a faltas de software. co e a Requisitos genricos para um mecanismo de servio a excepes: e c co (R1) Deve ser fcil de compreender e usar. a (R2) O cdigo para o servio a excepes no dever ser to intrincado o c co a a que obscurea a compreenso da operao normal sem erros. Um c a ca o ca mecanismo que misture o cdigo de operao normal e o de a cil processamento a excepes ser dif de compreender e manter; Poco dendo perfeitamente levar a um sistema menos vel. a c (R3) Sobrecargas de execuo s devem existir quando se realiza o servio ca o a uma excepo. A maioria das aplicaes requer que o desemca co penho de um programa que usa excepes no seja adversamente co a afectado em condies normais de operao. Contudo, isto pode co ca no ser sempre assim. Em algumas circunstncias, em particua a lar quando a velocidade de recuperao de primordial importncia, a ca e a aplicao poder tolerar um pouco de sobrecarga em operao normal ca a ca sem erros. co (R4) O mecanismo deve permitir o tratamento uniforme de excepes detectadas pelo ambiente e pelo programa. Por exemplo, uma excepo tal como o transbordo aritmtico deve ser servida exactamente ca e da mesma forma como uma excepo levantada pelo prprio programa ca o como resultado de uma falha de assero. ca (R5) Mecanismo de excepes deve permitir programar aces de recuperao co co ca (de erros).

138

Servio a Excepes em Linguagens de Tempo-Real Mais Antigas c co Valor de retorno no usual, ou retorno de erro de um procedimento: a Exemplo: if(chamada a fun~o(par^metros)==UM ERRO){ ca a /* Codigo de servio ao erro */ c }else{ /* Codigo para o regresso normal */ } Cumpre o requisito de simplicidade (R1) e permite a implementao de ca aces de recuperao (R5). co ca Falha em cumprir o requisitos R2, R3, e R4: o cdigo obscuro, implica o e sobrecarga sempre que usado, e no claro como lidar com erros no e a e ambiente. Outro exemplo: em POSIX, para cada a sys call(param) est denido um macro chamada ao sistema

#define SYS CALL(A) if(sys call(A)!=0) error(); em que error() funo que executa o processamento de erros. ca Salto forado saltar ou alterar o endereo de retorno de uma subrotina. c c Pode-se saltar por cima de uma ou mais instrues que imediatamente se co sigam a uma subrotina para indicar a presena ou ausncia de erro. c e Exemplo: jsr pc, PRINT CHAR jmp IO ERROR jmp DEVICE NOT ENABLED # Processamento normal # # # # Chamada a subrotina Endereo de regresso: caso 2 c Endereo de regresso: caso 3 c Endereo de regresso: caso 1 c

Vantagens: pouca sobrecarga (R3), permite programar acoes de recuc perao (R5). ca Desvantagem: estrutura de programao obscura = R1, R2. ca Desvantagem: tratamento uniforme de excepes detectadas pelo ambiente co e pelo programa (R4) tambm no pode ser satisfeito. e a 139

Goto no local: a Exemplo:

svc data rrerr label erl; %uma variavel de label% enddata proc WhereErrorIsDeteted(); ... goto erl; ... endproc; proc Caller(); ... WhereErrorIsDetected(); ... endproc; proc main(); ... restart; ... erl := restart; ... Caller(); ... endproc;

Goto mais do que um jump implica regresso de um procedimento de forma anormal a pilha deve ser restaurada e desenrolada para que o ambiente seja restaurado para o procedimento que contm a declarao e ca do label-destino. Sobrecarga de processamento excepcional da pilha s existe quando acono tece um erro o que est de acordo com o requisito R3. a Uso de gotos ex de acordo com os requisitos R4 e R5. vel Uso de gotos leva a programas obscuros: contraria os requisitos R1 e R2. 140

Varivel de procedimento de erro: a Exemplo:

svc data rrerr label erl; % uma variavel de label% proc(int) erp; % erp e uma variavel de procedimento % enddata proc recover(); ... ... endproc; proc WhereErrorIsDeteted(); ... if recoverable then erp(n) else goto erl end; ... endproc; proc Caller(); ... WhereErrorIsDetected(); ... endproc; proc main(); ... erl := fail; erp := recover; ... Caller(); ... fail: ... endproc;

Novamente: principal desvantagem com este mtodo os programas poe dem tornar-se bastante dif ceis de perceber e manter.

141

Tcnicas de Servio a Excepes Mais Recentes e c co Mtodos mais directos de servio a excepes sem implicar mistura de cdigo e c co o normal com cdigo de servio a excepes. o c co Mais recentemente: introduzir mecanismos de servio a excepes directac co mente na linguagem fornecendo um mecanismo mais estruturado. Mecanismos particulares variam de linguagem para linguagem; Vamos de seguida descrever alguns traos comuns. c Excepes e sua Representao co ca Dois tipos de tcnicas de deteco de erros: e ca Deteco no/pelo ambiente. ca Deteco na/pela aplicao. ca ca Dependendo do atraso na deteco do erro, pode ser necessrio levantar a ca a excepo sincronamente ou assincronamente. ca e ca Uma excepo s ca ncrona levantada como resultado imediato de uma seco de cdigo que tenta realizar uma operao inapropriada. o ca e Uma excepo ass ca ncrona levantada num instante diferente (algum tempo depois p.ex.) da operao que resultou na ocorrncia do erro. ca e A excepo pode ser levantada no processo que originalmente executou a ca operao (que resultou no erro) ou num outro processo. ca Existem portanto quatro classes de excepes: co a Detectada pelo ambiente e levantada sincronamente: e.g. diviso por zero ou a violao dos limites de um array. ca Detectada pela aplicao e levantada sincronamente: e.g. falha de uma veca ricao de assero denida pelo programa. ca ca ca Detectada pelo ambiente e levantada assincronamente: e.g. uma excepo levantada em resultado de uma falha de energia ou de uma falha de um mecanismo de monitorizao de sade. ca u 142

Detectada pela aplicao e levantada assincronamente: e.g. um processo ca pode reconhecer que ocorreu uma condio de erro que resultar que um ca a outro processo no cumpra a sua meta temporal ou no termine correca a tamente. excepo depois levantada no processo que no cumprir a ca e a a meta. As excepes ass co ncronas so frequentemente designadas por sinais e so usua a almente consideradas no contexto da programao concorrente. ca Dom nio de um Servidor de Excepes co Num programa podem haver vrios servidores para uma excepo particular. a ca Associado a cada servidor est um dom que especica a regio de computao a nio a ca ao longo da qual, se uma excepo ocorrer, ser activado esse servidor. ca a A preciso/resoluo com que pode ser especicado um dom a ca nio determina quo precisamente pode ser detectada a fonte da excepo. a ca Numa linguagem estruturada por blocos, um dom nio pode normalmente ser o bloco. Exemplo em ADA: varivel fora de gama a levantada uma excepo constraint error. e ca declare subtype Temperature is Integer range 0..100; begin -- read temperature sensor and calculate its value exception -- handler for Constraint Error end; Quando os blocos formam a base de outras unidades tais como procedimentos e funes o dom de um servidor de excepes usualmente essa unidade. co nio co e Em algumas linguagens nem todos os blocos podem ter servidores de excepes (internos). Alternativamente o dom co nio de um servidor de excepes co e deve ser explicitamente indicado e o bloco considerado guardado. 143
ADA

O dom nio de um servidor de excepes especica quo precisamente o erro co a pode ser localizado. a unidade bloco pode no ter granularidade sucia ente/adequada. Exemplo do problema da preciso de localizao do erro: a ca

declare subtype Temperature is Integer range 0..100; subtype Pressure is Integer range 0..50; subtype Flow is Integer range 0..200; begin -- read temperature sensor and calculate its value -- read pressure sensor and calculate its value -- read flow sensor and calculate its value -- adjust temperature, pressure and flow according -- to requirements exception -- handler for Constraint Error end;

144

Com dom nios de servidores de excepes baseados em blocos, uma soluo co ca pode ser diminuir o tamanho dos blocos ou encade-los (nest). Exemplo a

declare subtype Temperature is Integer range 0..100; subtype Pressure is Integer range 0..50; subtype Flow is Integer range 0..200; begin begin -- read temperature sensor and calculate its value exception -- handler for Constraint Error for temperature end; begin -- read pressure sensor and calculate its value exception -- handler for Constraint Error for pressure end; begin -- read flow sensor and calculate its value exception -- handler for Constraint Error for flow end; -- adjust temperature, pressure and flow according -- to requirements exception -- handler for other possible exceptions end;

co Alternativamente procedimentos contendo servidores de excepes podem ser criados para cada um dos blocos encadeados.

145

Outra soluo poss servidores de excepes denidos ao n de cada ca vel co vel instruo e.g. linguagem CHILL tem este mecanismo. ca Exemplo hipottico e -- NOT VALID Ada declare subtype Temperature is Integer range 0..100; subtype Pressure is Integer range 0..50; subtype Flow is Integer range 0..200; begin Read Temperature Sensor; exception -- handler for Constraint Error; Read Pressure Sensor; exception -- handler for Constraint Error; Read Flow Sensor; exception -- handler for Constraint Error; -- adjust temperature, pressure and flow according -- to requirements end Causa da excepo localizvel mais precisamente, mas existe mistura de ca a cdigo de servio de excepes com cdigo de uxo normal pode resultar em o c co o programas menos claros requisito R2 no vericado. a A melhor soluo para este problema poder ser a passagem de parmetros ca a a na invocao de servidores de excepes. E.g. em C++ poss ca co e vel denir parmetros quaisquer e den a veis; Ada parmetros xos. a Propagao de excepes ca co Noo de propagao de excepes estreitamente relacionado com o conceito ca ca co de dom nio de uma excepo. ca ca At aqui quando um bloco ou procedimento levanta uma excepo, tem-se e assumido que existe um servidor associado com esse bloco ou procedimento. Contudo isto pode nem sempre acontecer; e existem dois mtodos poss e veis para lidar com a situao em que no existe nenhum servidor de excepo ca a ca imediato. 146

1o mtodo encarar a ausncia de servidor de uma excepo como um e e ca erro de programao que deve ser detectado na compilao. ca ca Contudo, muitas vezes excepo levantada num procedimento pode apenas ca (ser poss de) ser servida no contexto do procedimento chamador neste vel caso no poss ter um servidor local no procedimento. a e vel E.g. 1 excepo levantada como resultado de uma assero envolvendo os ca ca parmetros de entrada de um procedimento apenas pode ser servida no a procedimento que chamou. Contudo, pode nem sempre ser poss o compilador vericar se o contexto vel chamador inclui servidores de excepo apropriados. ca Isto pode requerer uma complexa anlise de uxo de controlo principalmente a quando um procedimento chama outros procedimentos que levantam excepes. co Consequentemente linguagens que requeiram a gerao de erros em tais ca situaes durante a fase de compilao requerem que um procedimento especico ca que que excepes pode levantar e que no sejam servidas localmente. co a O compilador pode ento vericar se no contexto chamador existe um servidor a apropriado e se necessrio gerar uma mensagem de erro E.g. CHILL, C++. a e a 2o mtodo que pode ser usado quando no existe um servidor local ca vericar se existe um servidor subindo acima na cadeia de invocao de procedimentos durante a execuo ca Este mtodo designado propagao de excepes. Ada, C++, Modulae e ca co 2/3 permitem. ca co Problema com propagao de excepes ocorre quando a linguagem requer que as excepes sejam declaradas e portanto seja fornecido um alcance de co validade. Problema: poss uma excepo ser propagada fora do alcance do seu e vel ca servidor, tornando portanto imposs encontrar um servidor. vel Para resolver este problema a maioria das linguagens tm um servidor e agarra tudo (catch all) serve tambm para evitar que o programador e enumere muitos nomes de excepes. co

147

Excepo no servida num programa sequencial programa abortado. ca a Se programa contm mais que um processo e um deles no serve uma das e a suas excepes, ento esse processo abortado. co a e Contudo pode-se pr o problema de se a excepo deve ou no ser proo ca a pagada para o processo pai. A propagao de excepes pode ser considerada em termos de se os servidores ca co co esto associados estaticamente ou dinamicamente com as excepes. a Associao esttica (e.g. CHILL) realizada durante a compilao e no ca a e ca a permite a propagao porque a cadeia de invocao desconhecida. ca ca e e ca Associao dinmica realizada durante a execuo e portanto permite a ca a propagao. ca mais ex vel. ca mas (-) mais sobrecarga de execuo porque se tem que pesquisar o servidor (com associao esttica pode-se gerar um endereo do servidor durante ca a c a compilao). ca

Modelo de Recomeo (Reatamento) versus Modelo de Terminao c ca Mecanismo de servio de excepes considerao crucial o invocador c co ca da excepo deve ou no continuar a sua execuo aps a excepo ter sido ca a ca o ca servida? Modelo de recomeo (reatamento) ou noticao: Se o invocador pode conc ca tinuar, ento pode ser poss para o servidor resolver o problema que causou a vel o levantamento da excepo e o invocador continuar como se nada tivesse aconca tecido. Por outro lado o modelo onde o controlo no devolvido ao invocaa e dor/causador da excepo chamado modelo de terminaao ou de escape. ca e c vel Modelo h brido: se for poss ao servidor decidir sobre se deve continuar a operao que causou a excepo, ou terminar a operao. ca ca ca 148

Modelo de recomeo: Exemplo: c


Hq P Hr levanta excepo q 4 Hq recomea Hr 5 Hr Q R levanta excepo r 3 Hr recomea R 6 Q invoca R 2 P invoca Q 1

P Q R R excepo r ca servidor Hr em Q (no existe servidor local para r a em R) Hr q Hq em P (rotina chamadora de Q) Hq termina Hr continua
levanta servida levanta servida por

invoca

invoca

Modelo de recomeo mais facilmente compreendido se encararmos o serc vidor como um procedimento impl cito que invocado quando a excepo e ca e levantada. Um problema com este mtodo (em algumas linguagens) que se torna free e quentemente dif de reparar erros que so levantados pelo ambiente de execuo. cil a ca E.g. arithmetic overow no meio de uma sequncia de expresses complexas e o pode resultar em vrios registos contendo avaliaes parciais. Como consequncia a co e de chamar o servidor escrever por cima destes registos. Linguagens Pearl e Mesa fornecem mecanismos pelos quais um servidor pode regressar para o contexto que levantou a excepo Mas tambm suporca e tam o modelo de terminao. ca cil ca Modelo de recomeo estrito dif de implementar soluo-compromisso: c re-executar (apenas) o bloco associado com o servidor de excepes. co E.g. linguagem Eiel contm este mecanismo como parte do modelo de servio e c a excepes designado por retry. co O servidor escreve uma ag para indicar que ocorreu um erro e o bloco pode testar essa ag. 149

Para este mtodo funcionar, as variveis locais do bloco no devem ser reie a a nicializadas num retry. Caso contrrio poder ser desencadeado o mesmo a a erro/excepo. ca Vantagem do modelo de recomeo: manifesta-se quando a excepo foi levanc ca tada assincronamente e portanto tem pouco a ver com a execuo presente do ca processo. Modelo de terminao: aps uma excepo ter sido levantada e o servidor j ca o ca a ter sido executado, o controlo no regressa depois ao ponto onde a excepo a ca ocorreu. e Ao contrrio: o bloco ou procedimento contendo o servidor terminado e a o controlo passado para o bloco ou procedimento que chamou. e Um procedimento invocado pode portanto terminar numa de vrias poss a veis condies uma destas condies a condio normal e as outras so condies co co e ca a co de excepo. ca Quando o servidor est dentro de um bloco, o controlo transferido para a a e ca o ca 1a instruo que se segue ao bloco aps a excepo ter sido servida. Exemplo com blocos: declare subtype Temperature is Integer range 0..100; begin begin -- read temperature sensor and calculate its value -- may result in an exception being raised exception -- handler for Constraint Error for temperature, -- once handled this block terminates end; -- code here executed when block exits normally or -- when an exception has been raised and handled. exception -- handler for other possible exceptions end;

150

Exemplo com procedimentos: ao contrrio do que acontece com blocos, o uxo a de controlo pode alterar-se dramaticamente como se ilustra na gura seguinte: P Q R;
Procedimento P 1 Procedimento Q P invoca Q 2 9 3 Q invoca R 4 Busca do servidor 8 Procedimento termina 6 Servidor 7 para r 5 Excepo r levantada Procedimento R
invoca invoca

excepo levantada em R ca

e servida em

Com o modelo h brido cabe ao servidor decidir se um erro recupervel ou e a a e no. Se for, o servidor pode devolver um valor e a semntica a mesma que a no caso do modelo de recomeo. Se o erro no for recupervel, o invocador da c a a excepo terminado. ca e

Execuo Concorrente ca Existem trs mecanismos bsicos para representar execuo concorrente: e a ca fork e join cobegin/coend declarao expl ca cita de processos co-rotinas so tambm por vezes inclu a e das como mecanismo para expressar execuo concorrente. ca a cita de controlo Co-rotinas: so subrotinas mas que permitem a passagem expl a a entre elas de uma forma simtrica e no apenas de uma forma hierrquica. e O controlo passado de uma co-rotina para outra atravs de uma instruo e e ca de resume que nomeia a rotina a continuar de seguida. 151

Quando uma co-rotina executa 1 resume, pra a sua execuo mas mantm a a ca e informao de estado local de forma a que se uma outra subrotina a resume ca depois, a co-rotina poder continuar a sua execuo. a ca Exemplo: (uxo de controlo identicado por setas numeradas)
Corotina A 1 6 Resume B 7 Resume B 10 12 11 Resume C 15 8 2 Corotina B 3 Resume C 9 Resume A 14 4 Corotina C 5 Resume A 13 Resume B 12 6

Cada co-rotina pode ser encarada como implementando um processo. Contudo, no necessrio suporte do sistema de execuao dado que as a e a c o ca co-rotinas ordenam elas prprias a sua ordem de execuo. Co-rotinas no adequadas para processamento verdadeiramente paralelo a dado que a sua semntica apenas permite uma rotina de cada vez. a Fork e Join: A instruo/funo fork especica uma rotina que deve comear ca ca c a execuo concorrentemente com a rotina invocadora. ca A instruo/funo join permite que o chamador se sincronize com o m da ca ca rotina especicada. Exemplo: function F return ...; . . . end F; procedure P; ... C := fork F; . . . J := join C; ... end P;

152

Entre a execuo do fork e do join, o procedimento P e a funo F executam ca ca concorrentemente. Ao chegar ao join o procedimento espera at que a funo termine (se tal e ca ainda no aconteceu). a ca ca Exemplo: ilustrao da execuo de fork e join.
Processo em execuo

Fork P Join

Fork

Join Tempo Pai pede o join primeiro Filho termina antes do join

Processo suspenso

Fork e join permitem a criao dinmica de processos e fornecem meios para ca a passar informao para o processo-lho atravs de parmetros. ca e a a e ca Embora sendo ex veis, no fornecem um mtodo estruturado para a criao de processos e so muito sujeitos a erros de utilizao. a ca Cobegin/coend: o cobegin (ou parbegin ou par) uma forma estruturada de e representar a execuo concorrente de uma coleco de instrues. ca ca co
Cobegin

cobegin S1; S2; S3; . . . Sn; coend

S1

S2

S3

S4 Tempo

Coend

153

Este cdigo executa as instrues S1,. . . ,Sn concorrentemente. o co A instruo cobegin termina quando todas as instrues concorrentes tiverem ca co terminado. Cada Si pode ser uma qualquer instruo permitida pela linguagem, incluindo ca chamadas a procedimentos podem ser usados parmetros a transmitir ao a procedimento ou ao processo. Uma instruo de cobegin pode mesmo incluir outras que, elas prprias, ca o tenham um cobegin dentro delas. Declarao expl ca cita de processos: Execuo concorrente poss por meio de cobegin e fork. ca vel Mas a estrutura de um programa concorrente pode ser tornada mais clara se as prprias rotinas especicarem se devem ser executadas concorrentemente. o Este o caso da declarao expl e ca cita de processos e Exemplo em Modula-1: um controlador de robot que usa trs processos semelhantes cada um dos quais controla uma dimenso de movimento. a MODULE main; TYPE dimension = (xplane, yplane, zplane); PROCESS control (dim : dimension); VAR position : integer; (* absolute position *) setting : integer; (* relative movement *) BEGIN position := 0; (* rest position *) LOOP new setting (dim, setting); position := position + setting; move arm (dim, position) END END control; BEGIN control(xplane); control(yplane); control(zplane) END main.

154

Servios de Tempo-Real c Se um programa interage de alguma forma consistente com a referncia temporal e do seu ambiente ento tem que ter acesso a algum mtodo de conhecer o tempo a e ou pelo menos alguma forma de medir a passagem do tempo. Isto pode ser feito de duas formas: 1. Ter acesso directo ` referncia temporal do ambiente. Exemplos: a e Interrupo ambiente sistema; ca Sinal de rdio emitido com informao de tempo (e.g. Alemanha); a ca GPS tambm tem referncia do tempo. e e e ca 2. Usar um relgio interno de hardware que d uma aproximao adequada o da passagem do tempo no ambiente. Do ponto de vista do programador, o acesso ao tempo pode ser feito atravs e o de uma primitiva de relgio da linguagem ou de um device driver para o relgio o interno, relgio externo ou receptor de radio. o

Atrasar um Processo Atraso relativo: permite a um processo esperar por um evento futuro em vez de fazer chamadas de busy wait ao relgio. Exemplo em Ada (atraso relativo o com busy wait): Start := Clock; -- from calendar loop exit when (Clock - Start) > 10.0; end loop; Alternativa em Ada primitiva delay; POSIX sleep, nanosleep (+ granularidade): delay 10.0;

155

Delay apenas garante que o processo passa a pronto depois de expirar o per odo: o atraso real at entrar em execuo tambm depende de outros processos e ca e que esto a competir pelo processador; a Tambm notar: granularidade do delay e granularidade do relgio no e o a necessariamente as mesmas; Alm disso o relgio interno pode ser implementado com interrupes que e o co podem ser inibidas por curtos per odos. Ilustrao: ca

Tempo especificado pelo programa

Diferena de granularidade Processo entre o relgio Interrupes pronto mas e o "delay" inibidas no a executar

Processo a executar

Tempo

Atrasos absolutos: se for necessrio um atraso at (` chegada de) um instante a e a de tempo absoluto duas hipteses: o 1. O programador calcula o atraso relativo necessrio; a 2. Primitiva adicional necessria. a co cios separados por 10 seg. Exemplo por atraso relativo: 2 aces com in Start := Clock; First Action; delay 10.0 - (Clock - Start); Second Action; Para o atraso ser exacto, a instruo de delay anterior deveria ser no ca a interromp vel. a Mas se First Action demora 2 seg., ento 10.0 - (Clock - Start) 8 seg.; mas se a tarefa interrompida (e.g. durante 3 seg.) por outra tarefa e aps o clculo do tempo de delay, ento aps o reatamento temos um o a a o delay de 8 e no de 5 como se pretendia nesta situao. a ca 156

Soluo em Ada instruo delay until: ca ca Start := Clock; First Action; delay until Start + 10.0; Second Action; Tal como no delay, o delay until tem preciso apenas no seu limite ina ferior. A tarefa envolvida no ser activada antes do tempo corrente atingir a a aquele que especicado na insruo, mas poder ser activada depois. e ca a O excesso de tempo associado tanto com o atraso relativo como com o atraso absoluto designado de desvio local. e Contudo com o atraso absoluto poss eliminar o desvio cumulativo que e vel pode surgir se se permitir que os desvios locais se sobreponham numa sequncia e ca de atrasos relativos. Exemplo de uma aco em Ada realizada a cada 7 seg. declare Next : Time; Interval : Constant Duration := 7.0; begin Next := Clock + Interval; loop Action; delay until Next; Next := Next + Interval; end loop; end;

Programao de Timeouts ca Programao de timeouts: possivelmente a restrio temporal mais simples ca ca que pode ocorrer num sistema embebido reconhecer e actuar em resposta a e uma no ocorrncia de algum evento externo. a e Exemplo: 1 sensor de temperatura que tenha que fazer leituras todos os segundos; se no chegar uma leitura at 10 seg. pode-se denir que ocorreu a e uma falta. 157

Em geral: timeout restrio sobre o tempo que um processo se permite ca esperar por uma comunicao. ca Timeouts tambm podem ser aplicados para impor restries ao tempo de e co execuo de aces. Exemplo: um programador pode pretender que uma seco ca co ca de cdigo execute dentro de um certo tempo. Se tal no acontecer, ento pode o a a ser necessrio algum procedimento de recuperao de erros. a ca Timeouts tm aplicao no contexto de: e ca a Comunicao por variveis partilhadas (e.g. semforos, ou monitores) no ca a contexto de seces cr co ticas ou de condies de sincronizao (e.g. buer co ca cheio no contexto de um problema produtor/consumidor). Passagem de mensagens: nenhuma mensagem para receber ou buer de envio cheio no contexto de recepo e envio s ca ncronos de mensagens, respectivamente. Em aces: permite detectar pedaos de cdigo que excedam o tempo co c o alocado para a sua execuo. ca Outro exemplo: tarefa que envolva parte obrigatria e parte opcional e que tenha que terminar dentro de um o certo tempo. Depois da obteno de um resultado adequado para a parte ca obrigatria, o tempo restante at ` ocorrncia de um timeout pode ser o e a e utilizado para melhorar incrementalmente a primeira soluo. ca

Especicao de Requisitos Temporais ca Para muitos sistemas de tempo-real no suciente que os programas estejam a e logicamente correctos; necessrio a satisfao de requisitos temporais detere a ca minados pelo sistema subjacente. Estas restries temporais podem ser mais co complexas que simples timeouts. Para projectar o sistema de acordo com os requisitos temporais so muia a ca tas vezes usadas aproximaes ad hoc; procedendo-se depois ` implementao co do sistema, e ` vericao da implementao acompanhada se necessrio por a ca ca a renamentos para atingir o objectivo. 158

Aproximaes mais rigorosas: co Uso de linguagens com mecanismos semnticos formalmente denidos: a propriedades temporais podem ser denidas e analisadas: Tcnicas pouco maduras; e Pouca experincia conhecida; e ca Anlise de desempenho de sistemas de tempo-real em termos da vericao a da possibilidade de escalonamento de uma certa carga de trabalho nos recursos de execuo (processadores). ca Vericao de um sistema de tempo-real 2 fases: ca a (1) Vericao de requisitos dado um computador sucientemente rpido e ca vel, so os requisitos temporais coerentes e consistentes? E tm potena a e cial de ser satisfeitos? E.g. se um evento A deve ser completado antes do evento B mas est dea pendente de algum evento C que ocorre aps B, ento independentemente o a da velocidade de processamento, no poss satisfazer estes requisitos. a e vel (2) Vericao da implementao com um conjunto nito de recursos de ca ca hardware, podem os requisitos temporais ser satisfeitos?

159

Alcances Temporais (Temporal Scopes) Um alcance temporal (AT) identica uma coleco de instrues que tm ca co e associada uma determinada restrio temporal. ca Atributos poss veis para associar com um alcance temporal: e Meta (deadline) o instante at ao qual o AT deve ser/ter terminado. nima quantidade de tempo que deve decor Atraso m nimo (no in cio) m rer at comear a execuo do alcance temporal. e c ca Atraso mximo (no in a cio) mxima quantidade de tempo que pode dea correr at comear a execuo do alcance temporal. e c ca Tempo de execuo mximo de um alcance temporal. ca a Tempo mximo decorrido num alcance temporal. a
Agora Atraso mnimo a

Atraso mximo

Tempo

Tempo mximo decorrido

Unidade de execuo Meta Tempo mximo de execuo=a+b+c

Alcances temporais podem-se dividir em peridicos e aperidicos o o Exemplo de AT peridico ciclo de amostragem e controlo com metas xas. o Alcances temporais aperidicos ou espordicos surgem usualmente de eventos o a ass ncronos. 160

Em geral, alcances temporais aperidicos so encarados como sendo activados o a aleatoriamente de acordo com uma certa distribuio de probabilidades (e.g. de ca Poisson). Para permitir clculos de tempos de resposta no pior caso, dene-se frequena temente um per odo m nimo entre dois eventos (da mesma fonte). O processo associado designa-se espordico. a Em muitas linguagens de tempo-real, os alcances temporais esto associados a aos processos que os contm. Os processos podem ser descritos como peridicos, e o aperidicos, ou espordicos dependendo das propriedades do seu alcance temo a poral interno. Muitos dos atributos temporais de um AT denidos na lista acima podem ser satisfeitos por: correr os processos a uma frequncia correcta; e completar todos os processos dentro da sua meta temporal. O problema de satisfazer as restries temporais torna-se portanto num de co escalonar processos para cumprir metas escalonamento de metas. Notemos que j estudmos mtodos para analisar tempos de resposta e a a a e possibilidade de escalonamento. O requisito de atraso mximo antes do in de execuo de um AT, pode ser a cio ca alcanado/modelado separando o alcance em dois processos com uma relao c ca de precedncia: e O primeiro que representa a fase inicial do AT, pode ter uma meta que garanta que no seja violado o atraso mximo no in a a cio. A necessidade deste tipo de estrutura surge por exemplo de uma aplicao que primeiro ca leia um sensor e produza depois uma sa a partir dessa leitura. Para ter da um controlo no do instante em que o sensor lido necessria uma meta e e a apertada para esta aco inicial. ca A sa pode depois ser produzida por uma aco que tenha associada uma da ca meta posterior 161

Estas variaes relativas ao instante em que o sensor lido ou quando um valor co e de actuao produzido na sa so designadas de ru de entrada (input ca e da a do jitter) e ru de sa (output jitter) respectivamente. do da

162

UNIVERSIDADE DE COIMBRA FACULDADE DE CIENCIAS E TECNOLOGIA DEPARTAMENTO DE ENGENHARIA ELECTROTECNICA E DE COMPUTADORES

Sistemas de Tempo Real: Apontamentos Tericos (Parte II) o

Rui Ara jo u Email: rui@isr.uc.pt http://www.isr.uc.pt/~rui Tel: 239.796276 Tel. Int.: 1352

COIMBRA Setembro, 2006

1
1.1
1.1.1

Interligao de Dispositivos com Interface em Bus ca


Introduo ca
Conceito de Bus

Nos sistemas constitu dos com base em microprocessadores (Ps), o microprocessador necessita de transferir dados de e para outros dispositivos tais como memrias s de leitura (ROMs), o o memrias de escrita/leitura (RAMs) e circuitos perifricos. o e Essas transferncias so feitas graas a um percurso de dados - ` partida poderia pr-se e a c a o a hiptese de dedicar um percurso de dados a cada dispositivo (ligaes ponto-a-ponto) que o co transferisse dados de/para o P, existindo no P tantos conjuntos de linhas de dados quantos os dispositivos a que ele ligasse. Mas facilmente se reconhece que tal soluo impraticvel, ca e a dado o elevado n mero de dispositivos a que ligam os Ps em muitos sistemas. As transferncias u e so ento feitas atravs de um percurso comum de dados, designado por bus. a a e Bus um conjunto de linhas destinado a servir para a interligao de mais de dois disposie ca tivos. Em contrapartida, uma ligao ponto-a-ponto s permite interligar dois dispositivos. ca o No sentido mais prprio do conceito, o bus caracterizado pelo facto de cada um dos o e dispositivos a ele ligados poder servir ora de emissor de dados, ora de receptor - trata-se pois de um bus bidireccional. No entanto, por extenso de linguagem chama-se tambm bus a e a um conjunto de linhas que so sempre comandadas pelo mesmo dispositivo, mas que so a a prprias para serem ligadas a vrios outros dispositivos. Como exemplo, suponhamos um o a sistema constitu por um microprocessador de 8 bits e duas memrias de escrita/leitura do o RAM#A e RAM#B. O microprocessador diz-se de 8 bits por trabalhar com dados de 8 bits e tem 8 linhas bidireccionais para dados, que tanto servem para escrita (transferncia do e P para um dispositivo externo) como para ler dados (transferncia de um dispositivo externo e para o P). Em cada uma das memrias RAM existem tambm 8 linhas de dados bidireccionais, o e e a ligao do bus de dados ser assim: ca a
P D D D D D D D D
7 6 5 4 3 2 1 0 7 6

RAM #A D D D D D D D D
5 4 3 2 1 0 7 6

RAM #B D D D D D D D D
5 4 3 2 1 0

Figura 1: Bus de dados para ligao de um P a duas memrias RAM. ca o

Que pode ser representada mais compactamente da maneira seguinte:

P D ... D
7 0

RAM #A D ... D
7 0

RAM #B D ... D
7 0

Figura 2: Representao compactada de um bus. ca Naturalmente, tanto as linhas de sa de dados do P como as das RAMs so de 3 estados da a e existem sinais de controlo que orquestram convenientemente a activao/desactivao e a ca ca orientao dessas linhas. ca Dentro do P e das RAMs existe pois um circuito de entrada/sa em que os mesmos da pinos so utilizados para o uxo de sinais em ambos os sentidos, e que do tipo do da gura a e seguinte:
Para os circuitos de entrada Dos circuitos de sada

Activao de sada

Figura 3: Circuito para linhas de entrada/sa da. O exemplo apresentado corresponde a um bus bidireccional. Como exemplo de bus no-bidireccional podemos considerar o bus de endereos de um a c microprocessador. No sistema anterior, haver tambm um conjunto de linhas que transmitem a e `s memrias o endereo gerado pelo microprocessador: a o c

Endereos P D ... D
7 0

RAM #A D ... D
7 0

RAM #B D ... D
7 0

Dados

Figura 4: Bus de dados e bus de endereos. c Como se disse acima, aplicar a designao de bus tambm a este bus de endereos corca e c responde a uma extenso de linguagem, que no entanto bastante vulgar - acaba por usar-se a e o termo bus para qualquer conjunto de linhas destinadas a serem comunicadas a vrios dispoa sitivos, mesmo no caso em que essas linhas so sempre comandadas pelo mesmo dispositivo. a Alis, ainda se aplica a designao de bus de controlo ao conjunto das linhas de controlo a ca associadas `s operaes de transferncia feitas entre o P e os circuitos que a ele ligam. a co e 1.1.2 Tarefas de Projecto com Dispositivos com Interface em Bus

Hoje em dia, grande parte do trabalho de projecto de circuitos digitais consiste na interligao ca de dispositivos com interface em bus (microprocessadores, memrias RAM/ROM, e perifricos o e como portos srie ou controladores de disco). Esta interligao feita dentro de uma unica e ca e placa de circuito impresso (com um bus a denido) e entre diferentes placas, atravs de um e outro bus. Em todos os dispositivos ligveis em bus as linhas de dados so de 3 estados (3S) a a ou, mais raramente, de colector aberto. Os aspectos topolgicos da interligao (que sinais o ca do P ligar a que sinais das RAMs, das ROMs, . . . ) so um ponto fundamental mas esto a a actualmente bastante simplicados pois: A maior parte dos Ps, e especialmente RAMs, ROMs e outros dispositivos que ligam aos Ps tm uma estrutura de sinais semelhante; e A ligao das linhas de dados sempre em bus; ca e Dada essa similitude entre os dispositivos a que os Ps ligam, estes dispem de linhas de o controlo com uma funcionalidade e temporizao adequadas para a ligao `s linhas de ca ca a controlo encontradas nas RAMs, ROMs e perifricos vulgares (e geralmente os fabricantes e de Ps tambm produzem circuitos perifricos que utilizam precisamente os sinais de e e controlo do P; todas as ligaes esto ento ` partida pr-estabelecidas); co a a a e Outros aspectos desta interligao, como por exemplo o de seleccionar (para uma operao ca ca de transferncia) uma RAM de entre vrias a que o P est ligado, so quase directamente e a a a solucionados por circuitos MSI standard (da fam TTL ou outras) especicamente dilia rigidos a estas aplicaes (neste caso seria utilizado um descodicador). co 4

Mas para projectar um circuito funcional no basta fazer interligaes correctas - o projecto a co tem de cumprir todos os requisitos de temporizao dos circuitos integrados utilizados - e ca e assim que os problemas relativos `s sequncias de transferncia e ` sua temporizao a e e a ca acabam por ser os mais complexos neste tipo de sistemas. As sequncias e a temporizao encontram-se descritas detalhadamente nas folhas de espee ca cicao (data sheets) dos prprios Ps, memrias e perifricos. ca o o e Mas dada a complexidade interna de dispositivos tais como os Ps, bem como a variedade de modos em que outros dispositivos podem a eles ser ligados, o n mero de especicaes temporais u co muito elevado, mesmo para os Ps mais simples (por exemplo, a folha de especicaes do e co Z80 - um P bastante simples de 8 bits - inclui 53 especicaes diferentes de tempos). co Quando se utiliza um P executando transferncias de diversos tipos (por exemplo, transe ferncias para memrias RAM estticas - adiante veremos o que que so as memrias RAM e o a e a o estticas - e/ou para dispositivos perifricos) o projecto tem de assegurar que so cumpridos toa e a dos os requisitos de temporizao relevantes para os tipos de transferncia utilizados. Como as ca e folhas de especicao raramente discriminam as especicaes de tempos quanto `s situaes ca co a co em que elas so, ou no so, relevantes, reconhece-se que a tarefa de vericao de tempos a a a ca e praticamente imposs se no se empregar uma abordagem que permita identicar quais as vel a especicaes relevantes para as vrias situaes. co a co 1.1.3 Abordagem dos Problemas de Temporizao ca

Do que foi dito acima, cou claro que util, seno indispensvel, fazer uma s e a a ntese dos traos c comuns dos dispositivos correntes, de modo a permitir: Identicar os pontos essenciais de uma folha de especicao repleta de dados; ca Identicar quais so os items dessa folha de especicao que so relevantes para as a ca a situaes (tipos de transferncias) em que os dispositivos so utilizados no projecto em co e a questo; a Evitar o risco de produzir um projecto com bugs devido ao desconhecimento de algum pormenor ou regra de projecto simples, subentendido nas especicaes. co Para isso, vamos comear por passar em revista as consideraes de projecto (relativas c co `s sequncias e temporizao), ou seja, os requisitos que tm de ser cumpridos para um circuito a e ca e funcionar avelmente. Segue-se um conjunto de tpicos destinados a claricar e a simplicar a leitura das o folhas de especicao dos circuitos e depois um estudo das sequncias de escrita/leitura ca e em memrias. o Finalmente, examinam-se as sequncias de transferncia de Ps representativos, e faz-se e e referncia tambm aos perifricos prprios dos Ps. e e e o

1.2

Convenes de Representao co ca

Os circuitos integrados so dispositivos f a sicos, e quando se d uma comutao o estado das a ca linhas no conhecido a todos os instantes. a e Por exemplo, suponha-se uma porta inversora, de que o fabricante apenas especica o limite mximo do tempo de propagao (20 ns, por exemplo). Ento, o estado da sa do inversor a ca a da e desconhecido durante os 20 ns que se seguem ` comutao da entrada (quando os fabricantes a ca tambm especicam o m e nimo do tempo de propagao, o intervalo de desconhecimento ca e encurtado); de acordo com as convenes descritas a seguir, a evoluo do circuito seria como co ca na g. 5.
20ns Entrada Sada

Figura 5: Diagrama temporal para um inversor. E claro que aplicando um osciloscpio ao sinal conhece-se a sua evoluo com todo o detalhe. o ca Mas do ponto de vista do projectista, que desenha o circuito para funcionar com todos os dispositivos (inversores no nosso exemplo) que cumprem a especicao de fabrico, o estado ca do sinal efectivamente desconhecido. Utilizam-se as convenes seguintes para representar e co o n de conhecimento do estado de uma linha (ou de um bus) num determinado segmento vel temporal.
1 0 linha activa, a "1" 1 0 linha activa, a "0" 1 0 linha inactiva (HZ, ou alta impedncia)

linha ou bus activo, valor indefinido

linha ou bus com valor indefinido, activo ou inactivo

linha activa a passar de 1 para 0 algures entre t1 e t2 t1 t2 linha ou bus a entrar em HZ algures entre t1 e t2 t1 t2 t1 t2 t1 t2

linha activa a passar de 0 para 1 algures entre t1 e t2

linha ou bus a sair de HZ algures entre t1 e t2

Figura 6: Convenes usadas em diagramas temporais. co Notar que dizer que uma linha (sinal) ou um bus esto vlidos ou invlidos perfeitamente a a a e distinto de dizer que esto activos (tambm se diz LZ = low impedance = baixa impedncia) a e a 6

valor a t1 t2

valor b

equivalente a:

valor a t1 t2

valor b

Figura 7: Alternativas para representar buses a variar. A representao da esquerda a que ca e e a mais utilizada - no porque seja mais rigorosa, mas porque mais sugestiva e sobrecarrega a e menos os diagramas. ou inactivos (tambm se diz HZ = high impedance = alta impedncia). P.ex., na g. 7, at e a e t1 o bus est vlido (isto , transporta um valor denido), de t1 a t2 est invlido e depois de a a e a a t2 est novamente vlido - mas est sempre activo. a a a Diz-se que um sinal est asserido quando est no estado lgico (quer seja 0, quer seja 1) a a o que acciona uma determinada funo. ca a Por exemplo, o sinal PRESET de um ip-op est asserido quando a linha que o transporta est no n baixo. Quando o sinal no est asserido, diz-se que est deasserido. Notar que a vel a a a muitas vezes se utilizam os termos vlido / invlido no sentido que acabmos de denir para os a a a termos asserido / deasserido. Alis, temos falado de sinais activos-a-zero e sinais activos-a-um a precisamente nesse sentido. Dada a necessidade de dispor de termos diferentes para os trs e conceitos, utilizaremos os termos asserido / deasserido para o sentido de accionamento de uma funo, e os termos activo / inactivo com o sentido: activo = LZ, inactivo = HZ. ca

1.3

Bases dos Requisitos de Temporizao ca

Nesta seco, examinaremos as vrias poss ca a veis razes de ser dos requisitos de temporizao o ca dos circuitos, o que nos permitir posteriormente guiar a leitura das folhas de especicao, a ca identicando os requisitos relevantes para as vrias situaes de utilizao do circuito integrado. a co ca Iremos ver que os requisitos de temporizao derivam da necessidade de: ca Cumprir tempos de preparao e de manuteno; ca ca No exceder os limites de funcionamento vel do dispositivo em termos de: a a Frequncia mxima do relgio; e a o Duraes m co nimas dos pulsos aplicados `s entradas. a Evitar a conteno de bus. ca 1.3.1 Tempos de Preparao e de Manuteno ca ca

e o Os Ps so dispositivos s a ncronos: todo o seu funcionamento dependente de um relgio interno, e os seus registos internos so registos D (um registo D simplesmente uma associao a e ca em paralelo de ip-ops D). Como sabemos, a entrada de um ip-op D tem de cumprir tempos de preparao (set-up) e ca manuteno (hold). Ento, para a operao de leitura o projectista tem de garantir que os dados ca a ca 7

fornecidos por um dispositivo exterior (RAM, ROM, . . . ) cumprem os tempos de preparao ca e manuteno - em relao, claro, ` vertente do relgio interno que faz a amostragem desses ca ca e a o dados.
Relgio Endereos (P>) READ (P>) DADOS (P<) Preparao Manuteno Vertente que faz a amostragem

Figura 8: Ciclo de leitura no P 8085. READ uma sa do P que assinala (para o exterior) e da a operao de leitura. ca Outros dispositivos, embora no s a ncronos, tambm requerem tempos de preparao e mae ca nuteno. Por exemplo, numa RAM esttica necessrio que os endereos estejam vlidos um ca a e a c a determinado tempo de preparao antes do in do pulso de escrita aplicado ` RAM. Com ca cio a efeito, se o endereo no est estabilizado quando surge o pulso de escrita, a memria escreve c a a o numa clula errada (ou at em mais de uma). Mas no basta que o endereo estabilize a partir e e a c do in do pulso de escrita - tem de ser um certo tempo antes, pois a lgica de seleco de cio o ca clulas, no interior da RAM, introduz atrasos - e s passado um certo tempo aps o endereo e o o c car vlido que a clula correcta ca seleccionada. a e e De uma maneira geral, o projectista tem de garantir que em todas as transferncias de e dados, so cumpridos os tempos de preparao e manuteno do dispositivo que recebe os a ca ca dados. 1.3.2 Limites de Frequncia Mxima e Largura de Pulso M e a nima

Todos os circuitos s ncronos tm um limite para a frequncia mxima do relgio que lhes e e a o e aplicado. Este limite deriva de, internamente ao dispositivo, existirem ip-ops cujas sa das, a seguir a uma vertente activa do relgio, apresentam novos valores. Estas sa o das so aplicadas a a circuitos combinacionais cujas sa das so por sua vez aplicadas `s entradas de outros ip-ops. a a Os novos valores das sa das dos primeiros ip-ops vo dar origem tambm a novos valores para a e as sa das dos circuitos combinacionais. Assim, s aps algum tempo depois da vertente activa o o que se pode considerar que todos os ip-ops internos tm as suas entradas estabilizadas e e e s ento que se pode aplicar uma nova vertente activa de relgio. Existe pois um limite o a e o m nimo para o tempo entre duas vertentes activas do relgio, ou seja, um limite mximo para o a a frequncia do relgio. e o Quanto ao m nimo da largura de pulso, tambm se reconhece facilmente que um pulso e de largura excessivamente pequena corre o risco de no ser reconhecido - pois os atrasos de a propagao dos elementos constituintes do circuito podem ser tais que este no consiga reagir ca a durante o tempo curto durante o qual o pulso accionado. e 8

1.3.3

Conteno de Bus ca

Com excepo dos circuitos de colector aberto (open colector) todos os circuitos lgicos apreca o sentam uma sa totem-pole: a sa est ligada a Vcc por um comutador e ` terra por outro da da a a (estes comutadores so trans a stores bipolares nas fam lias TTL e FETs nos circuitos MOS).
Vcc Vcc Vcc

sada=1

sada=0

sada=HZ

(a)

(b)

(c)

Figura 9: Sa totem-pole, quando (a) est a 1, (b) est a 0, (c) quando est em alta da a a a impedncia; este estado s poss nos circuitos 3S. a oe vel As sa das 3S tm a capacidade de desligar simultaneamente os 2 comutadores, o que liberta e as linhas de sa e possibilita que outros dispositivos as utilizem para transmitirem dados, da como se exemplica na g. 10.
Endereos

P uma linha de endereo

ROM 1 OE1 Dados

ROM 2 OE2

Figura 10: Sistema constitu por um P e duas ROMs. do No circuito da g. 10, ambas as ROMs tm sa e das 3S, controladas por sinais OE (OE = output enable = activao de sa ca da). Uma sa do P, que ser uma linha de endereo, da a c desactiva uma das ROMs ao mesmo tempo que activa outra. Desta maneira o P pode ler clulas das 2 ROMs (que poderiam fcilmente ser mais) por um unico percurso de linhas de e a entrada. Claro que na altura em que o P amostra os dados lidos todos os dispositivos ligados ao bus, excepto aquele que est a ser lido, devem estar em HZ - isto , nessa altura no pode a e a haver conteno de bus (termo que designa a activao simultnea de 2 ou mais sa ca ca a das ligadas ao mesmo bus). Mas a conteno de bus deve ser evitada em qualquer altura. Com efeito, a conteno ca ca provoca a passagem de correntes muito maiores do que as correntes normais de sa e entrada da 9

dos circuitos - basta ver que, se numa linha esto ligadas sa a das umas a 1 e outras a 0, existe praticamente um curto-circuito entre Vcc e terra (relembrar a g. 9) - e os circuitos podem ser danicados. Os riscos de destruio dos circuitos advm basicamente de fenmenos trmicos, pelo que ca e o e se poderia pensar que a conteno seria admiss ca vel, desde que no se desse durante a altura da a amostragem de dados, e que a sua razo de incidncia fosse percentualmente baixa. a e Mas h outra considerao de projecto que nos leva a evitar totalmente a possibilidade de a ca conteno, por muito baixa que seja a sua razo de incidncia - que a conteno provoca picos ca a e e ca de corrente suscept veis de provocarem interferncias e degradarem a abilidade dos circuitos. e O problema torna-se mais complexo porque os dispositivos de 3S tm atrasos da funo e ca activao/desactivao em relao ao sinal de entrada que a controla. Por exemplo, o circuito ca ca ca da g. 10 est sujeito a conteno quando o sinal que selecciona entre as 2 ROMs sofre uma a ca comutao - a que estava activada comea a entrar em HZ, enquanto que a outra sai de HZ. ca c Embora os fabricantes projectem os circuitos para que a desactivao seja mais rpida do que ca a a activao, no h garantia de que no haja conteno. ca a a a ca Mas os Ps - nos ciclos de leitura - produzem uma sa (geralmente designada por READ) da que s asserida passado algum tempo de os endereos terem estabilizado. As ROMs e RAMs oe c correntes tm tambm duas entradas que controlam a passagem a HZ das suas sa e e das. Supondo co e que o P da g. 10 dispe de um sinal READ nessas condies, e que as ROMs tm as tais 2 o entradas, o circuito da g. 11 j conseguiria evitar totalmente a conteno. a ca
Endereos

READ P End Dados

ROM 1 OE 1 OE 2

ROM 2 OE 1 OE 2

Figura 11: Sistema constitu por um P e duas ROMs. Utilizao do sinal READ para do ca suprimir a conteno. ca Na g. 11, quando asserido o OE ligado a READ, j o outro OE (ligado ao bit de e a endereo) estabilizou h algum tempo (relembrar a g. 8). A ROM que no vai ser lida c a a a a ca nunca chega a activar as suas sa das e no h conteno. Resumindo, o papel do projectista, quanto `s sequncias de transferncia e ` sua tempoa e e a rizao, garantir que os tempos de preparao e de manuteno de dados e de endereos so ca e ca ca c a cumpridos, que os limites de frequncia e de durao de pulsos no so infringidos e que no e ca a a a h conteno. a ca 10

1.4

Leitura de Folhas de Especicaes co

As folhas de especicaes (data sheets) de circuitos integrados (C.I.) digitais incluem, alm co e de um esquema lgico e uma eventual descrio funcional, 3 grupos de especicaes: o ca co absolute maximum ratings ou condies mximas de operao - um exemplo o valor co a ca e mximo da tenso de alimentao. So condies (geralmente relativas a valores DC, ou a a ca a co ` dissipao) que, a serem excedidas, podem danicar o circuito; a ca DC characteristics ou caracter sticas DC - englobam a corrente de alimentao, os n ca veis de voltagem 0 e 1,. . . AC characteristics ou caracter sticas de temporizaao - incluem tempos de propagao, c ca frequncia mxima do relgio,. . . e a o Por agora, apenas este ultimo grupo que nos interessa. e O primeiro aspecto a ter em ateno na leitura das caracter ca sticas de temporizao o de ca e que elas constam de requisitos - isto , condies que so necessrias para assegurar o correcto e co a a funcionamento do C.I. (p.ex., no exceder a frequncia mxima de relgio) - e de prestaes, a e a o co que so os tempos garantidos pelo C.I. A tarefa do projectista garantir os requisitos de todos a e os C.I.s, e para isso ele pode contar com as prestaes dos (outros) C.I.s. co Contudo, a maioria dos fabricantes no distingue explicitamente requisitos e prestaes, a co apresentando todas as especicaes reunidas numa unica tabela. Apenas alguns distinguem co explicitamente timing requirements (requisitos) e timing responses (prestaes). co As tabelas de tempos dos Ps so bastante extensas e sem ter uma intuio bsica do a ca a funcionamento de um P - e portanto dos tempos que so relevantes - fcil cair em confuses a e a o e perder de vista a razo de ser dos tempos apresentados. a Como exemplo das complicaes que surgem, vulgar que em vez de um requisito de co e preparao (naturalmente em relao a determinada vertente de um relgio) o fabricante apreca ca o sente vrios requisitos derivados, que ainda por cima no aparecem como tempos de preparao! a a ca [Um caso destes desenvolvido a seguir, em 1.4.1] e Tambm poss e e vel que certas especicaes sejam inteiramente omitidas. [Um exemplo co disto desenvolvido em 1.4.2]. Isto deve ser considerado como uma falha por parte do fabricante. e 1.4.1 Exemplo de Requisitos Derivados

Sabemos que uma operao de leitura para o P vai acabar por redundar na carga de um registo ca de entrada do P - que um registo D cuja entrada de relgio ser naturalmente derivada do e o a relgio do P. Os ip-ops D exigem determinados tempos de preparao e de manuteno, e o ca ca portanto esperamos encontrar na folha de especicaes uma especicao de preparao dos co ca ca dados e outra de manuteno. Mas na folha de especicaes do 8085 aparecem 4 tempos em ca co relao aos dados na operao de leitura: ca ca

11

tLDR

tRD tAD tRDH

- ALE to valid data in during read 460ns mx a (o ALE uma sa do P 8085 que assinala a e da validade dos endereos por ele produzidos) c - RD \ to valid data in during read 300 ns mx a - A0-15 valid to valid data in during read 575 ns mx a 0 ns m n - data hold time after RD /

O ultimo tempo (tRDH ) de fcil interpretao - corresponde ao tempo de manuteno (hold e a ca ca time) de que estvamos ` espera; no entanto, os registos D implementados em NMOS (como a a o caso do 8085) tm tempos de manuteno de 10ns e maiores, e alm disso esperar e e ca e amos que o tempo fosse especicado em relao a uma vertente do relgio do P, no a RD. ca o a
Relgio READ (P>) DADOS (P<) Preparao Manuteno Vertente que faz a amostragem

Figura 12: Detalhe do ciclo de leitura do 8085 (h sinais que no esto representados). a a a Um exame ao ciclo de leitura do 8085 esclarece estas d vidas. A vertente do relgio interno u o que amostra os dados tambm desencadeia (com um certo atraso) a vertente ascendente de e RD. Assim, o hold time que em relao ` vertente do relgio seria de 10 a 30ns, nulo ou ca a o e at negativo em relao a RD / . e ca Qual a razo porque o tempo de manuteno denido em relao a RD / ? Como se viu a ca e ca na g. 11, o sinal RD prprio para ligar a sinais OE de memrias ou outros dispositivos. O e o o projectista, ao ligar memrias e perifricos ao P normalmente no utiliza o relgio do P e no o e a o ciclo de leitura o unico sinal de temporizao que utiliza o prprio RD. Assim, o requisito de ca e o manuteno, tal como apresentado, mais conveniente para o projectista (poupa-lhe clculos ca e e a de tempos). J para os outros trs tempos a interpretao no to imediata. Reconhecemos que a e ca a e a representam tempos de set-up, pois todos especicam que os dados de leitura devem car vlidos . . . ns depois do evento . . . e como os eventos referidos so controlados pelo P, o a a fabricante sabe como traduzir a especicao para a forma dados devem car vlidos . . . ns ca a antes da vertente de relgio que faz a amostragem dos dados. Por alguma razo, o fabricante o a preferiu utilizar a primeira forma de especicar os tempos. Tambm intrigante o facto de e e aparecerem trs tempos de set-up distintos, e no s um. e a o Pensemos num sistema t pico implementado ` volta de um 8085 - p.ex., suponhamos que a temos, alm do 8085, 2 C.I.s de ROM - como na g. 11. Como se v nessa gura, as sa e e das de endereo A015 do 8085 vo condicionar as entradas de endereo e um dos OEs desses C.I.s. A c a c sa RD do 8085 vai condicionar o outro OE das ROMs. da Nas especicaes das ROMs aparecem (como prestaes) tempos de atraso mximo: co co a 12

a) desde endereos vlidos at dados de sa vlidos; c a e da a b) desde OE1 asserido at dados de sa vlidos; e da a e da a c) desde OE2 asserido at dados de sa vlidos. Assim, a tarefa do projectista que est a tentar satisfazer - escolhendo memrias suciena o temente rpidas - o tempo de set-up do 8085 (que um requisito do 8085) consistir, em a e a primeiro lugar, em determinar quais so os tempos mximos que o P permite para a), b) e c). a a Agora, claro porque que o fabricante fornece os dois tempos: e e tRD tAD - RD \ to valid data in during read, - A0-15 valid to valid data in during read,

em vez de um unico tempo de set-up: simplesmente para traduzir o requisito do 8085 em e tempos que o projectista pode directamente vericar face `s prestaes do circuito de memria a co o utilizado. Falta-nos ver a razo de ser da especicao: a ca tLDR - ALE to valid data in during read

O 8085, para poupar pinos, multiplexa os bits A07 com o bus de dados (8 bits) nos mesmos 8 pinos. No in do ciclo-mquina, esses pinos so dedicados aos endereos A07 , e a vertente cio a a c descendente do sinal ALE indica que os bits A07 j esto vlidos h algum tempo. a a a a
A07 A07 dados

ALE

Figura 13: Utilizao dos pinos AD0-7 no ciclo de leitura do 8085. Na la fase do ciclo, estes ca pinos fazem sair os bits de endereo A07 . Na 2a fase, so utilizados para ler os dados. c a Para as memrias normais, todos os bits de endereo devem permanecer vlidos durante o c a todo o ciclo - necessrio um circuito exterior que agarre A07 enquanto estes bits esto e a a vlidos. Uma hiptese seria utilizar um registo de 8 bits amostrado por ALE \ e nesse a o caso os endereos para as memrias s estariam vlidos na sua totalidade aps ALE \ ; e o c o o a o projectista querer saber qual o tempo mximo que o P permite para o atraso a), a partir de a a a ALE \ . Novamente se conclui que o fabricante especicou vrios tempos apenas para poupar trabalho ao projectista. Contudo, os bits A07 tambm podem ser agarrados por um latch que nesse caso ser e a transparentizado enquanto ALE estiver a 1. Nestas condies, os endereos para as memrias co c o cam vlidos antes de ALE \ , e o projectista no necessita da ultima especicao para a a ca nada. . . pode risc-la da folha de especicao e considerar que nunca l esteve! a ca a 13

` Concluso: A custa de uma exposio algo desenvolvida sobre o 8085, evidenciaram-se a ca vrios pontos importantes: a Com base em noes bsicas sobre a estrutura interna de Ps (ou RAMs, ROMs,. . . ) o co a projectista sabe quais so as especicaes de tempos bsicas que deve esperar. Assim, a co a reduz-se o risco de passar em branco alguma especicao essencial e d-se o devido valor ca a a todas as especicaes que aparecem; co Frequentemente, os fabricantes produzem vrias especicaes a partir de uma unica a co especicao bsica, com o objectivo de poupar trabalho ao projectista; conforme as conca a guraes, algumas destas especicaes derivadas podem ser puramente desnecessrias. co co a 1.4.2 Exemplo de Especicaes Omitidas co

Um circuito MSI muito utilizado em sistemas de P o transceiver. Colocado entre 2 buses A e e B, o transceiver permite: Colocar em B o valor que est em A; a Colocar em A o valor que est em B; a Isolar os 2 buses. A constituio interna de um transceiver t ca pico - o 74LS245 - mostrada na g. 14. e
G B1 B2 B8

DIR

A1

A2

A8

Figura 14: Organizao interna do 74LS245. constitu ` base de elementos buer no ca do a a inversores (cuja entrada lateral de activao desactivao). e ca ca Se a entrada G estiver deasserida, o circuito apresenta HZ nos pinos As e Bs. Se G estiver asserido, o circuito funciona como um simples buer, de A para B se DIR=1 e B para A se DIR=0 (DIR controla a direco). ca

14

As caracter sticas de temporizao do 74LS245 apenas indicam 3 tempos: ca 1 2 3 Propagation delay time 12 ns mx. a Output enable time 40 ns mx. a Output disable time 25 ns mx. a

O tempo 1 simplesmente o tempo (mximo) de propagao do buer no inversor a que e a ca a o 74LS245 equivale quando G est asserido e DIR se encontra estvel. a a ` A partida, parece que os tempos 2 e 3 so aplicveis a 2 situaes distintas: a a co a) Quando DIR est estvel, o atraso mximo at ` entrada em HZ das sa a a a ea das 3, desde o e instante em que G deasserido. Quando G asserido, as sa e e das podem demorar um tempo 2 at entrarem em LZ (com um valor j vlido se as entradas de dados se encontrarem e a a estacionrias desde h algum tempo). a a a c ca b) Quando G est permanentemente asserido e se comuta DIR, a mudana de direco consiste em: i) Entrada em HZ do lado do 74LS245 que era sa (passa a entrada); da ii) Entrada em LZ do lado do 74LS245 que era entrada (passa a sa da). Ento, o tempo 3 tambm o atraso mximo desde a comutao de DIR at ` efectivao a e e a ca ea ca de i). Analogamente, o tempo 2 o atraso mximo desde a comutao de DIR at ` efectivao e a ca ea ca de ii). Mas os 3 tempos especicados no chegam para elucidar todos os problemas de projecto a que se podem pr ` volta do 74LS245. Suponhamos que se pretende fazer o 74LS245 passar o a ca ca de HZ (nos 2 lados - logo, G deasserido) para a activao na direco AB, sendo importante evitar que active na direco BA, mesmo que seja por um tempo curto. Alm disso, o sinal ca e de que se dispe para aplicar a DIR no garantido vlido seno a partir da altura em que o a e a a e o a c o sinal G asserido (podendo mesmo s car vlido alguns ns mais tarde, devido a diferenas nos tempos de propagao). ca
Evoluo pretendida para o 74LS245 Sinais de que se dispe para aplicar a DIR e G G HZ transmisso A>B

DIR

Figura 15: Problema de activao do 74LS245. ca Por muito que se examine os 3 tempos fornecidos na folha do 74LS245, no poss a e vel determinar se aquilo que se pretende vericado! e A concluso a de que a especicao do 74LS245 est incompleta, o que conrmado pela a e ca a e folha do 8286 - um circuito funcionalmente anlogo ao 74LS245. a 15

O diagrama de tempos do 8286 encontra-se na g. 16.


Entradas t HZ G Sadas t LZ t hold DIR t su tp

Figura 16: Diagrama de tempos do 8286. So agora especicados 5 tempos. 3 so os j especicados para o 74LS245: a a a tp tLZ tHZ Propagation delay time Output enable time Output disable time

Os outros 2 no tm equivalente na folha do 74LS245: a e tsu thold DIR setup time DIR hold time tempo de preparao de DIR ca tempo de manuteno de DIR ca

e a a O primeiro deles signica que quando G asserido, o sinal DIR j deve estar estvel desde h um tempo tsu - para que no haja o risco de a activao ser momentaneamente no sentido a a ca errado. Esta especicao j permite resolver a d vida deixada pela folha do 74LS245. ca a u O segundo signica que quando G deasserido, DIR deve continuar com o valor que tinha e durante algum tempo, novamente para que no haja o risco de activao momentnea no sentido a ca a errado. a a Concluso: Certas prestaes, ou mesmo requisitos dos vrios dispositivos por vezes no a co so inclu a das na folha de especicaes. Isto acontece muitas vezes com especicaes que s co co o so relevantes para situaes invulgares, mas no s. a co a o A qualidade, extenso e clareza das especicaes variam muito de fabricante para fabria co cante, mesmo para dispositivos funcionalmente idnticos. e

1.5
1.5.1

Sequncias de Escrita/Leitura em Memrias e o


Memrias ROM o

Nesta seco trata-se genericamente de ROMs, quer sejam Mask ROMs, EPROMs ou PROMs ca - todos estes dispositivos, uma vez programados, so de utilizao idntica. a ca e 16

Uma memria ROM, na sua congurao mais bsica, um circuito combinacional - para o ca a e o qual se pode especicar o tempo de propagao mximo desde a estabilizao das entradas ca a ca (endereos) at ` estabilizao do estado correspondente das sa c ea ca das (dados). O diagrama da g. 17 suciente para especicar completamente a operao desta congurao bsica. e ca ca a
Endereos

Dados t AD t hold

Figura 17: Diagrama temporal de uma ROM bsica. a O tempo (mximo) de propagao de endereos para dados geralmente chamado tempo a ca c e de acesso da memria e aparece designado por vrios s o a mbolos, sendo vulgar tAD (AD de address). Por vezes, tambm aparece especicado o tempo durante o qual os dados permanecem e vlidos aps a variao dos endereos (thold ). a o ca c Esta congurao tem a desvantagem de no se poder ligar mais do que uma ROM ao ca a mesmo bus. As ROMs comuns so fornecidas numa congurao que inclui um buer 3S nas a ca sa das de dados. Esse buer , na verso mais simples, controlado por uma entrada output e a enable. Mas as ROMs mais divulgadas incluem um outro sinal - o chip enable. Este, alm de e controlar o buer - exactamente como se fosse outro output enable - tem a funo adicional de, ca quando deasserido, colocar a ROM num estado de baixo consumo (standby).
Endereos

(Chip Enable)

CE

ROM bsica

OE (Output Enable)

Buffer de sada

Figura 18: Congurao das ROMs mais vulgares. ca A sa da ROM do estado standby bastante mais lenta do que a simples activao do da e ca buer de sa da. Assim, o atraso mximo CE asserido para dados de sa vlidos bastante a da a e da a maior do que o atraso mximo OE asserido para dados de sa vlidos - fora isso, o CE de a uma ROM idntico ao OE. e e

17

Naturalmente que as caracter sticas de temporizao desta congurao incluiro mais temca ca a pos:
Endereos t CE t ce t OE Dados t oh oe t df acc

Figura 19: Diagrama de tempos para uma ROM com OE e CE (2764). Os tempos citados nas caracter sticas de temporizao da 2764 (uma EPROM 8Kx8) so: ca a tacc tce toe tdf toh NOTAS (apresentadas juntamente com os tempos): address to output delay CE to output delay OE to output delay OE high to output oat address to output hold 250ns max 250ns max 100ns max 0ns min, 85ns max 0ns min

1 - OE may be delayed up to tacc toe after the falling edge of CE for read mode without impact on tacc . 2 - toh is specied from OE or CE going high, or address change - whichever occurs rst.

Todos estes tempos representam prestaes da 2764. Vamos examinar em detalhe o signico cado da sua especicao: ca tacc, tce , toe so os atrasos mximos at dados de sa vlidos, respectivamente desde a a e da a endereo vlido, CE asserido e OE asserido. c a No diagrama coincidem os ns desses 3 tempos, mas claro que isso est assim apenas para e a no complicar excessivamente o diagrama. E uma prtica comum fazer simplicaes destas a a co nos diagramas. por vezes levando projectistas menos experientes a interpretaes erradas. co O facto de se especicar 3 tempos, denidos com in em ocorrncias em entradas distintas, cio e e com m numa mesma ocorrncia nas sa e das, deve ser entendido da seguinte maneira: As sa das (dados) cam vlidas quando: a Tiver decorrido tacc desde o momento em que os endereos caram vlidos, E c a tiver decorrido tce desde o momento em que CE foi asserido, E tiver decorrido toe desde o momento em que o OE foi asserido. 18

Esta interpretao conrmada pela nota 1. Tomando um exemplo: embora toe seja o tempo ca e mais pequeno de todos, a validade dos dados ser condicionada s pela assero de OE se esta a o ca ocorrer mais de [250-100]ns depois do momento em que CE foi asserido e os endereos caram c vlidos. a Examinemos agora os 2 ultimos tempos especicados. O tdf (OE high to output oat) e traduzido por tempo desde a deassero de OE at ` entrada dos dados em HZ - oat (no ca ea sentido de oating, ou seja utuante) muitas vezes utilizado para signicar HZ. e A utilidade da especicao do mximo de tdf clara. Este tempo determina o instante ca a e a partir do qual outros dispositivos ligados ao mesmo bus podem activar as suas sa das - sem a risco de conteno com a 2764 que foi agora desactivada mediante deassero do seu OE. J ca ca quanto ` especicao do m a ca nimo no claro qual a sua utilidade poss a e vel. . . Os fabricantes poderiam especicar mais tempos do que os que aparecem na folha. Por exemplo, poderiam especicar o m nimo do tempo de acesso por endereo (tacc ). Mas este c tempo no nos serve de nada - pois at decorrer o mximo de tacc no se pode avelmente a e a a a a a utilizar os dados, quer eles possam ou no j estar vlidos. Regra geral, apenas se especicam os tempos que possam ser de alguma utilidade para o projectista. H alguns fabricantes que tambm especicam os tempos m a e nimos desde a assero de OE ca ou CE at ` passagem das sa ea das a LZ (estes tempos no esto indicados na g. 16, do que se a a deve depreender que so nulos para a 2764). a Estes tempos - normalmente muito curtos, da ordem de 5 ou 10ns - indicam que outro dispositivo ligado ao mesmo bus pode permanecer activo durante um certo tempo aps a assero o ca de CE e OE sem risco de conteno. ca Quanto ao toh - address to output hold - informa o projectista de que a partir do momento c em que deixam de estar reunidas as 3 condies: (i) CE asserido, (ii) OE asserido, (iii) endereos co vlidos, o tempo durante o qual se pode contar que os dados permaneam vlidos nulo. a c a e Poder-se-ia pensar que, j que nulo, no faz sentido especicar este tempo; o que fazem a e a e muitos fabricantes. Mas h memrias que para este tempo garantem um m a o nimo pequeno - 10 ou 20ns - que pode acabar por ser extremamente conveniente num projecto espec co. Especicar o tempo, quando nulo. tem o mrito de tirar o projectista de d vidas. e u

19

Existem tambm ROMs que tm um registo D no percurso de endereos. Este registo e e c D amostrado pela vertente descendente do CE. e As diferenas de temporizao em relao `s ROMs normais so: c ca ca a a 1. Os endereos tm de cumprir tempos de preparao tas e de manuteno tah em relao c e ca ca ca a CE \ ; 2. Os endereos podem deixar de estar vlidos aps terem cumprido o tempo de manuteno; c a o ca 3. Como a ROM apenas reage `s sa a das do registo D, deixa de fazer sentido especicar o tempo de acesso por endereo (atraso desde endereos vlidos at dados de sa c c a e da vlidos); a 4. E especicado um tempo m nimo tcc de recuperao do CE - tempo m ca nimo em que o CE deve permanecer deasserido.
endereos podem estar invlidos Endereos t as CE t ce t OE Dados t oh oe t df t ah t cc

Figura 20: Diagrama de tempos para uma ROM com registo de endereos. c

20

1.5.2

Memrias RAM Estticas o a

Ao n dos pinos, a diferena entre as RAMs estticas na sua congurao mais vulgar e as vel c a ca ROMs que estudmos so as seguintes: a a Na RAM, os pinos de dados so de entrada/sa a da; A RAM possui uma entrada de controlo WE (write enable); Enquanto que na ROM o CE era funcionalmente idntico ao OE (apenas diferiam pelos e atrasos), na RAM o CE inibe tanto a leitura como a escrita. Por outro lado, o OE apenas controla a leitura - poss escrever na RAM com o OE permanentemente deasserido. e vel

Endereos ce oe

Endereos

Rom

Dados ce oe we

Ram

Dados

Figura 21: Pinos das conguraes mais comuns de ROMs e RAMs estticas. co a Na g. 22 mostra-se o diagrama de blocos de uma RAM x4, isto , com 4 bits de dados. e
Endereos standby

Matriz RAM
escrita Dados Mecanismo de escrita/ leitura

CE WE

OE

Figura 22: Diagrama de blocos de uma RAM x4. Do diagrama tira-se que: O buer de sa de dados s est em LZ quando CE e OE esto asseridos e WE est da o a a a deasserido. Para a escrita se efectivar, necessrio que CE e WE estejam asseridos. e a 21

A entrada WE asserida quando se pretende escrever na RAM, estando deasserida na e leitura. Com a entrada WE permanentemente deasserida, o funcionamento da RAM idntico e e ao das ROMs que estudmos. Assim, o diagrama de tempos da g. 19, bem como o signicado a dos tempos que a aparecem, vale tambm para o ciclo de leitura das RAMs. e Resta-nos ver o ciclo de escrita. No ciclo de escrita, os dados apresentados `s linhas de dados so escritos na clula seleccia a e onada pelo endereo fornecido ` memria, quando for asserido WE. c a o Se a seleco de clulas no est ainda estabilizada quando se inicia o pulso de escrita, ca e a a podem ser escritas clulas erradas. Assim: e E especicado um tempo de preparao dos endereos em relao ao in do pulso ca c ca cio de escrita. Por outro lado, se o endereo muda enquanto internamente ` RAM ainda est activo o c a a mecanismo de escrita, pode tambm haver escrita de clulas erradas. Logo: e e E especicado um tempo de manuteno dos endereos em relao ao m do pulso ca c ca de escrita. Mas os dados s so agarrados (amostrados) no m do pulso de escrita. Assim, s o a o e necessrio que os dados de entrada estejam vlidos por altura do m do pulso de escrita e a a especica-se: Um tempo de preparao dos dados relativo ao m do pulso de escrita; ca Um tempo de manuteno dos dados relativo ao m do pulso de escrita. ca ca o Como foi dito acima, CE deasserido inibe a operao de escrita. A escrita s se processa quando CE e WE esto coincidentemente asseridos - e o termo pulso de escrita aplica-se a ao intervalo de tempo durante o qual se verica a coincidncia. e
ce we escrita ce we escrita

Figura 23: Pulso de escrita (exemplos). Para a escrita se efectuar naturalmente necessrio que o pulso de escrita tenha uma durao e a ca m nima: especicado um tempo m e nimo do pulso de escrita. Por vezes so especicados a separadamente: (1) um tempo m nimo de WE asserido, denido com m na primeira das transies WE / e CE / ; e (2) um tempo m co nimo de CE asserido, denido da mesma maneira. 22

Outros requisitos geralmente especicados so: a Um tempo m nimo desde endereo vlido at ao m do pulso de escrita. Este c a e tempo maior do que a soma do tempo de preparao do endereo relativo ao in e ca c cio da escrita com o tempo m nimo do pulso de escrita - caso contrrio, no valia a pena a a especic-lo; a Um tempo m nimo desde CE asserido at ao m do pulso de escrita. Naturale mente, este tempo tambm maior do que o tempo m e e nimo do pulso de escrita; O tempo m nimo do ciclo de escrita, denido como o tempo m nimo que os endereos c devem permanecer vlidos ` volta de um pulso de escrita. a a Para alguns fabricantes, e para algumas memrias, este tempo simplesmente a soma de: o e Tempo m nimo desde endereo vlido at ao m do pulso de escrita; c a e Tempo de manuteno do endereo relativo ao m da escrita. ca c Noutros casos, especicado um tempo substancialmente maior do que esta soma. e
t Escrita Pulso de escrita (CE e WE simultneos)

wrcyc

Figura 24: Denio do tempo de ciclo de escrita (twrcyc ). ca O tempo m nimo do ciclo de escrita - nos casos em que substancialmente maior do que a e soma dos tempos indicados acima - uma especicao de interpretao algo duvidosa. e ca ca Com efeito, a sequncia da g. 25 no infringe nenhuma especicao de tempo e no entanto e a ca acabam por se operar dois pulsos de escrita num tempo bastante mais curto do que 2 twrcyc .

t Escrita

wrcyc

wrcyc tavw

Pulso de escrita tah tas


Figura 25: Dois ciclos de escrita consecutivos tah o tempo de manuteno dos endereos, tas e ca c o tempo de preparao e tavw o tempo desde endereos vlidos at ao m da escrita. ca c a e Mas nas folhas das RAMs mais recentes nota-se uma tendncia para especicar um tempo e endereos vlidos at ao m da escrita igual (ou quase) ao tempo de ciclo de escrita. c a e 23

Por outro lado, nota-se - em relao a todos os dispositivos - que os fabricantes tm vindo a ca e melhorar as especicaes, claricando-as e reduzindo a possibilidade de interpretaes erradas. co co E bem poss que a especicao do tempo de ciclo de escrita esteja entre as que eram feitas vel ca de um modo mais d bio. u Por tudo isto, aconselhvel no implementar sequncias como a da g. 25, embora estejam e a a e correctas se entendermos as especicaes ` letra. co a Como se disse atrs, o pulso de escrita denido pela coincidncia de CE e WE asseridos. a e e usual os fabricantes apresentarem dois diagramas de tempo distintos para o ciclo de escrita: E e um - WE controlled - em que o WE que dene o pulso de escrita; e outro, em que o pulso de CE o mais curto, e em que o CE que dene o pulso de escrita - CE controlled. e e
t wrcyc Endereos t cw CE t wp WE tas t ah

t avw t ds

Dados de entrada

t dh

Figura 26: Ciclo de escrita controlado por WE. Nas guras 26 e 27: - tempo m nimo de ciclo de escrita, - tempo m nimo de pulso de escrita, - tempo m nimo de CE asserido para o m da escrita, - tempo m nimo desde endereos vlidos at o m da escrita, c a e - tempos de set-up [preparao] e hold [manuteno] de endereos e ca ca c dados. Como se v das Fig.s 26 e 27, os 2 diagramas poderiam ser substitu e dos por um unico, em que os tempos se encontrariam referidos ao in e ao m do pulso de escrita, em vez de cio referidos quer a WE, quer a CE conforme qual destes sinais seja aquele que controla o ciclo de escrita. a Na maioria das aplicaes, durante o ciclo de escrita o OE est permanentemente deasserido, co e no h possibilidade de conteno nas linhas de dados. No entanto, os fabricantes tambm a a ca e fornecem especicaes para a situao de OE permanentemente asserido. co ca Estas especicaes devem ser entendidas como prestaes da RAM e denem os limites do co co intervalo de tempo em que as sa das da RAM esto em HZ, ou seja, em que as linhas de dados a 24 twrcyc twp tcw tavw tas , tah ; tds , tdh

t wrcyc Endereos t cw CE t wp WE tas t ah

t avw t ds

Dados de entrada

t dh

Figura 27: Ciclo de escrita controlado por CE. podem ser activadas por outros dispositivos. a Para o ciclo de escrita WE controlled, os tempos especicados so: twz tow - tempo mximo desde WE \ at passagem dos dados a HZ. a e - tempo m nimo desde WE / at passagem dos dados a LZ. e

Como se v na g. 28, a RAM est garantidamente em HZ desde um tempo twz depois de e a WE \ , e at um tempo tow depois de WE / . e
CE WE Dados de entrada t Dados de sada t wz t ow ds t dh

Figura 28: Ciclo de escrita controlado por WE - tempos das sa das de dados com OE=0. ca tica. Saliente-se que com OE asserido a temporizao de escrita torna-se extremamente cr Para a 4016 - uma RAM com uma temporizao t ca pica - temos: tdh =0ns (m nimo), tow =10ns (m nimo).

Isto quer dizer que o dispositivo externo que fornece os dados de escrita tem de estar vlido (e a portanto activo) no instante WE / , mas deve j ter as suas sa a das desactivadas 10ns aps esse o 25

instante. Apenas as sub-fam lias TTL mais rpidas (Advanced Schottky, FAST) conseguem a tempos de desactivao abaixo dos 10ns. ca Utilizando apenas circuitos MOS (os Ps e memrias comuns so MOS) e TTL LS ou ALS, o a no h outra soluo seno manter o OE deasserido nos ciclos de escrita - o que alis geralmente a a ca a a no pe problemas. a o Existem outras conguraes alm destas, mas so menos utilizadas: co e a H RAMs com registo de endereo amostrado por a CE \ ; a c H RAMs com registo de endereo amostrado por WE \ (logo, nos ciclos de leitura a c funcionam como RAMs normais). Naturalmente que para estas conguraes a temporizaao ser diferente. co c a Tambm existem RAMs que tm dois chip enables em vez de um chip enable e um output e e enable. Os dois chip enables tm de estar simultaneamente asseridos para a memria poder e o ser escrita ou lida. Nestas memrias, dif evitar totalmente a conteno no m do ciclo de o e cil ca escrita. Tambm existem RAMs estticas de entradas e sa e a das (de dados) separadas, mas a sua temporizao no muito diferente do que vimos. ca a e 1.5.3 Memrias RAM Dinmicas o a

As memrias RAM estticas so as de temporizao mais simples e so, do ponto de vista do o a a ca a trabalho de projecto, as mais convenientes (levantam menos problemas). Em contrapartida, a maneira como se faz o armazenamento de dados numa RAM esttica a cada bit reside numa estrutura semelhante a um ip-op - faz com que por cada bit existam sempre mais de 3 trans stores. Assim, as RAMs estticas so as mais dispendiosas em termos a a de ocupao de rea de chip e de dissipao por cada bit armazenado. ca a ca Nas RAMs dinmicas, o mecanismo de armazenamento radicalmente diferente - o estado a e de cada bit est associado ` carga armazenada numa zona do chip que funciona como um a a condensador de baixas fugas, havendo para cada bit um trans stor para o circuito de leitura. A ocupao de rea de chip e a dissipao trmica por cada bit so muito mais baixos do que ca a ca e a para as RAMs estticas, pelo que a quase totalidade da memria dos computadores vulgares a o e implementada com RAMs dinmicas. a A desvantagem das RAMs dinmicas a de que necessrio que exista um circuito de gesto a e e a a da memria que faa peridicamente determinadas operaes - as operaes de refrescamento. o c o co co O refrescamento serve para regenerar as cargas armazenadas que representam os bits. Devido ` necessidade das operaes de refrescamento, a utilizao de RAMs dinmicas a co ca a e bastante mais complexa, em termos de projecto, do que a de RAMs estticas. a Por agora, no estudaremos as RAMs dinmicas. a a

26

1.6
1.6.1

Ciclos de Transferncia de Microprocessadores e


Conceitos Bsicos a

Transferncias de/para memria e circuitos de entrada/sa e o da Os Ps transferem dados de e para memrias (ROM e RAM) e circuitos perifricos (tambm o e e designados por circuitos de entrada/sa da, ou input/output - I/O). No existe nenhuma disa tino fundamental entre a transferncia de/para memria e a transferncia de/para circuitos ca e o e perifricos, pois os perifricos, vistos do P, so como memrias de poucas clulas. e e a o e Um exemplo: so muito utilizados os circuitos UART (Universal Asynchronous Receiver a Transmitter) que servem para transmitir e receber caracteres em modo ass ncrono. Para desencadear o envio de um caracter, o P simplesmente faz uma operao de escrita do cdigo ca o desse caracter para um determinado registo do circuito UART, registo esse a que corresponde um determinado endereo. A operao exactamente igual ` transferncia de um byte para c ca e a e uma clula de uma RAM. Para o P mudar a velocidade de transmisso, basta-lhe escrever e a um cdigo adequado num outro registo (um endereo diferente, portanto) do mesmo circuito, o c para obter o caracter recebido pela parte receptora do UART basta-lhe ler o valor do registo associado a outro endereo ainda, . . . c Em alguns Ps, as transferncias de/para memria e as de/para entrada/sa so traduzie o da a das pela assero de sinais distintos (por exemplo sinais como seleco de memria e seleco ca ca o ca de entrada/sa da), mas o funcionamento destes sinais muito semelhante ao de um bit adicie onal de endereo. Fala-se no entanto, de dois espaos de endereamento: o espao de memria c c c c o e o espao de entrada/sa (por vezes utilizado o termo porto - port - ou porto de entrada, c da e ou porto de sa da, para designar um elemento enderevel num dispositivo de entrada/sa ca da por exemplo, num UART temos um determinado porto para estabelecer a velocidade de transmisso, outro para o caracter a ser enviado, . . . ). Existem alguns Ps em que inclusivamente a os endereos so mais curtos para a entrada/sa (pode por exemplo acontecer que haja 16 c a da bits de endereo para as transferncias de memria e apenas 8 - os 8 mais signicativos no c e o a sero ento utilizados - para as transferncias de entrada/sa a a e da). Outros Ps simplesmente no fazem qualquer distino entre os dois tipos de transferncia, a ca e e so atribu a das aos circuitos de entrada/sa algumas zonas do espao de endereamento que da c c unico - diz-se ento que se trata de um P com mapeamento de entrada/sa para memria e a da o (memory-mapped I/O). Assim, no estudaremos as transferncias de/para circuitos de entrada/sa a e da, mas camos com a noo de que as diferenas - se as houver - so a n de pormenor. ca c a vel Sinais temporizadores Dos sinais de entrada/sa de um P, alguns tm apenas a funo de transmitir informao da e ca ca - o caso dos dados e dos endereos - mas outros tm um papel temporizador - ser por exemplo e c e a o caso de um sinal cuja transio 01 sinalize que os endereos j esto vlidos. ca c a a a a Os sinais temporizadores so caracterizados pelo facto de as suas vertentes (01 ou 10) 27

assinalarem a ocorrncia de determinados eventos, e estes sinais serviro plausivelmente para e a temporizar o funcionamento dos dispositivos que ligam ao P. Muitos Ps dispem de sinais o read (leitura) e write (escrita) e o in da assero de qualquer um destes sinais geralmente cio ca assinala que os endereos j esto vlidos. c a a a Existem tambm sinais que alm do papel temporizador tm uma funo informativa. E o e e e ca caso de sinais tais como memory read e I/O read em alguns Ps. Estes sinais no so asseridos a a seno quando o P j ps em HZ as suas sa a a o das para o bus de dados - pelo que o in cio da assero de um destes sinais pode servir para temporizar o in da activao das linhas ca cio ca de dados do dispositivo externo - e a activao de um ou de outro informa qual o tipo de ca transferncia em curso. e Transferncias s e ncronas e ass ncronas Nos Ps menos sosticados, as transferncias so s e a ncronas - ou seja, a sua temporizao ca e feita unicamente pelo relgio do P e/ou por sinais que dependem desse relgio de uma maneira o o xa - e assim a temporizao dessas transferncias r ca e e gida e no depende da velocidade dos a dispositivos que ligam ao P. c cio Por exemplo, numa transferncia de leitura s e ncrona o P comea (no in do intervalo dedicado ` transferncia) por apresentar o valor do endereo da clula de memria (ou registo a e c e o de circuito perifrico) a ser lida e aps um tempo xo (correspondente a um certo n mero de e o u per odos, ou semi-per odos, de relgio) amostra para um registo interno o valor que encontra o nas suas linhas de dados. Se o dispositivo lido no conseguir, dentro desse tempo, apresentar o valor contido na a clula lida, o P acaba simplesmente por ler um valor errado (que para todos os efeitos e e aleatrio). o

28

Em contraste, as transferncias ass e ncronas correspondem a implementar o chamado protocolo de aperto de mo (handshaking). Numa transferncia de leitura ass a e ncrona, o P comea c tambm por apresentar um novo valor de endereo, ao mesmo tempo que assere um sinal - DS, e c Data Strobe - que signica que pretende obter o dado correspondente. O P protela a leitura do seu bus de dados at que o dispositivo lido assira um sinal dados vlidos - DAV, Data e a Valid . Isto permite que o P trabalhe com memrias (ou outros dispositivos) por mais lentos o que sejam. O protocolo de aperto de mo completo (fully-interlocked handshake) tambm estabelece que a e a posterior desactivao dos sinais seja feita de acordo com as velocidades de reaco prprias ca ca o de cada dispositivo. Assim, a seguir a ler o dado, o P faria a deassero de DS, mas no o ca a poderia tornar a asserir imediatamente - antes disso, tem de se certicar de que o dispositivo lido j reagiu a essa deassero, e no tomar a nova assero erradamente como a continuao a ca a a ca ca da assero anterior. Assim, o dispositivo lido tem de acusar que reconheceu DS \ o que ca realiza fazendo DAV \ . S aps ver DAV \ que o P pode novamente fazer DS / . o o e
DS (A>B) respondendo ao DS de A, B produz dados vlidos vendo DAV asserido, A deassere DS vendo DS deasserido, B retira os dados e deassere DAV

Dados (A<B)

111111111 000000000 111111111 000000000 111111111 000000000


s aps dar dados vlidos que B assere DAV

111111 000000 111111 000000 111111 000000

DAV (A<B)

Figura 29: Operao de leitura com - fully-interlocked handshake. Dispositivo A faz a leitura ca do dispositivo B. Vrios Ps modernos - da fam do Motorola 68000, por exemplo, utilizam transferncias a lia e ass ncronas. No entanto, vamos por agora limitarmo-nos ao estudo das transferncias s e ncronas.

29

1.7
1.7.1

Transferncias S e ncronas
Ciclo de Escrita

1o exemplo: microprocessador Z80 - ciclo de escrita de memria o Para o Z80-A (relgio a 4MHz), o diagrama temporal do ciclo de escrita o da g. 30: o e
125ns Relgio 1 TdCr(A) Endereo 5 TdCf(WRf) WR TdD(WRf) 3 Dados 2 TdCf(D) TdWRr(D) 8 4 TwWR TdCr(Dz) 7 6 TdCf(WRr) 125ns

Figura 30: Diagrama temporal para o ciclo de escrita no Z80. Os tempos 1 a 8 so os que, dentro de todos os constantes da folha de especicaes do a co Z80, tm relevncia nesta situao. e a ca Podemos ver que o ciclo de escrita demora 3 per odos de relgio e que o primeiro evento o do ciclo a entrada dos endereos em validade (as linhas de endereo estavam com o valor do e c c endereo utilizado no ciclo anterior, que tanto pode ter sido de escrita como de leitura, e agora c comutam para o valor do endereo usado neste ciclo). O Z80 especica um tempo 1 como sendo c o mximo tempo que os endereos podem levar a entrar em validade (como o tempo 1 - que a c e o uma prestao do Z80 - especicado em relao ao 1 relgio / , depreendemos que essa ca e ca o e vertente que acciona, internamente ao Z80, a comutao dos endereos). ca c o e e O 2 evento do ciclo a entrada em validade das linhas de dados, e denido pelo tempo 2 (como as linhas de dados, no ciclo de escrita, so comandadas pelo Z80, este tempo tambm a e e a uma prestao do Z80) - tomando como referncia a 1 vertente relgio \ do ciclo. O ca e o tempo 3 refere-se ao mesmo evento, mas em relao com o instante da vertente WR \ . O ca e Z80 tambm mantm os dados vlidos durante algum tempo aps WR / , o que indicado e e a o pelo tempo 8. e ca cio o O 3o evento a assero de WR. Notar que o in do pulso de WR s ocorre bastante tempo depois (cerca de 3 semi-per odos) da validao dos endereos - isto essencial para ca c e a o a poder ligar WR directamente ` entrada WE de memrias RAM estticas e outros dispositivos com temporizao semelhante, pois nesses dispositivos necessrio que os endereos tenham ca e a c cio um determinado tempo de preparao em relao a WE \ . O tempo 5 localiza o in da ca ca a assero de WR em relao ` 2 vertente relgio \ do ciclo. ca ca a o

30

O pulso de WR tem uma durao m ca nima, especicada por 4 (esta durao m ca nima outra e caracter stica de temporizao necessria quando se pretende ligar WR directamente ` entrada ca a a de memrias RAM estticas). O tempo 6 localiza o m da assero de WR. o a ca O tempo 7 indica o mximo intervalo que o P demora a colocar as suas sa a das em alta impedncia - isto importante se o prximo ciclo for de leitura, caso em que o uxo de dados a e o mudar de direco. a ca No ciclo de escrita de memria do Z80, mesmo os dados so garantidos vlidos antes de WR o a a \ . Para a maioria das memrias (e outros dispositivos) isto no importante - e assim h o a e a muitos outros Ps que no tm dados j vlidos no momento WR \ . a e a a Finalmente, assinale-se que todos os tempos (1 a 8) so prestaes do Z80. Isto j seria de a co a esperar, pois num ciclo de escrita s ncrono todas as linhas so controladas pelo P. a 2o exemplo: microprocessador 8085 - ciclo de escrita de memria o O P 8085 no dispe, como o Z80, de 16 pinos para os endereos e de mais 8 pinos para a o c o bus de dados. Em vez disso, as 8 linhas menos signicativas dos endereos (AD0 -AD7 ) c so temporalmente partilhadas (fala-se de endereos multiplexados com os dados) com o bus a c de dados - isto , essas 8 linhas, durante a fase inicial dos ciclos, transportam a informao e ca relativa aos 8 bits menos signicativos dos endereos, e durante o resto do ciclo transportam a c informao de dados (de leitura ou de escrita). Poupam-se assim pinos, permitindo que o 8085 ca seja encapsulado numa embalagem standard de 40 pinos. Por causa disto, existe no 8085 um sinal especial - ALE (address latch enable) - que quando a a 1 sinaliza que os endereos esto a ser actualizados e cuja vertente \ sinaliza que eles j c a esto vlidos. Assim, o ALE pode ser ligado ao enable (asserido a 1) de um latch ou ento ao a a a relgio de um registo D em que a vertente activa seja a descendente; `s entradas desse latch o a ou registo D ligam-se as linhas AD0 -AD7 . As sa das desse latch ou registo mantero ento o a a valor dos 8 bits do endereo durante a parte restante do ciclo, como necessrio para ligar `s c e a a memrias normais. o A associao de um 8085 com um latch ou registo externo, ligado conforme descrito, tem ca um funcionamento idntico ao de um P com buses separados tal como o Z80. e O diagrama de tempos do ciclo de escrita do 8085 est na g. 31. a Alguns dos pormenores deste diagrama esto relacionados apenas com a multiplexagem de a o sinais e com o sinal ALE. Como ALE \ pode servir de relgio para um registo D amostrar o valor dos endereos, especicado o tempo de preparao - t4 - e o de manuteno - t6 - para c e ca ca essa operao de amostragem. Tambm especicada a durao m ca e e ca nima do pulso de ALE e o a e t3. Tambm aparece especicado o tempo t1 desde ALE \ at relgio \ (no clara a e utilidade desta especicao - talvez seja util apenas em alguma circunstncia especial). ca a Os endereos para as memrias que interliguem com o 8085 podem s ser validados aps c o o o ALE \ - efectivamente, tal o caso quando o circuito que preserva durante o ciclo os 8 bits e menos signicativos do endereo um registo accionado por ALE \ . Assim, para avaliar se c e o tempo de acesso por endereo dessas memrias sucientemente rpido -nos fornecida a c o e a e especicao t2. ca 31

Relgio Endereos A8A15 AD0AD7

111 000 111 000 111 000 111 000


t3

t1

Endereos t6 t4 t5

111 000 111 000


t7

t11 Dados t8 t10

ALE t9 t2 WR

Figura 31: Diagrama temporal para o ciclo de escrita no 8085. As especicaes t8 e t10 tambm so directamente relacionveis com os requisitos de temco e a a porizao de dispositivos semelhantes `s RAMs estticas. Com efeito, na escrita a amostragem ca a a a ca ca dos dados geralmente feita na vertente WE / e haver requisitos de preparao e manuteno e que devem ser contrapostos `s especicaes t8 e t10, respectivamente. a co Ciclo s ncrono de escrita de memria - resumo: o Abstraindo de pormenores (como os do ALE), os ciclos de escrita so na realidade muito a semelhantes no Z80 e no 8085. Em ambos os casos, 1. o ciclo demora vrios per a odos de relgio, o 2. o P comea por apresentar um valor vlido de endereo; c a c 3. Em seguida faz WR \ , mas s aps um intervalo suciente para acomodar o tempo o o de acesso por endereo das memrias estticas de uma certa classe de velocidade (isto c o a : para memrias muito lentas no ser poss e o a a vel a ligao totalmente s ca ncrona, mas a temporizao estudada para que haja um n mero razovel de memrias, de entre as ca e u a o correntes, para as quais seja poss a ligao completamente s vel ca ncrona); 4. Mais adiante no ciclo, apresenta dados vlidos, e os dados cumprem um tempo de prea e parao e um tempo de manuteno em relao a WR / , como requerido pela generaca ca ca lidade das memrias (Para o 8085 - e para muitos outros Ps - os dados s cam vlidos o o a j depois de WR \ . Isto no resulta em erro, pois embora possa suceder que a clula a a e correcta comece por ser escrita com um valor incorrecto, -lhe depois sobreposto o valor e correcto). 5. Os endereos geralmente permanecem estveis at ao m do ciclo, cumprindo um tempo c a e de manuteno em relao a WR / . ca ca Durante todo o ciclo de escrita o bus de dados comandado pelo P - nenhum outro e dispositivo deve activar as suas sa das para o bus de dados. 32

1.7.2

Ciclo de Leitura

1o exemplo: microprocessador Z80 - ciclo de leitura de memria o Para o Z80-A (relgio de 4MHz), o diagrama temporal do ciclo de leitura o da g. 32: o e
125ns Relgio 1 TdCr(A) Endereo 2 RD 3 Dados [sada] TsD(Cf) Dados [entrada] TdCr(Dz) 5 6 TdCf(RDf) TdCf(RDr) 4 125ns

ThD(RDr)

Figura 32: Diagrama temporal para o ciclo de leitura no Z80. Tal como no ciclo de escrita, vemos que o ciclo de leitura demora 3 per odos de relgio e o que um dos primeiros eventos do ciclo a entrada dos endereos em validade. O tempo 1 o e c e mximo tempo que os endereos podem levar a entrar em validade e tem um valor igual ao que a c j era especicado para o ciclo de escrita. a Mas agora existe um outro evento accionado pelo 1o relgio / , que a entrada em HZ, o e das linhas de dados. Efectivamente, o ciclo anterior poder ter sido de escrita, e o P ter tido a a ento as suas sa a das de dados activadas. Para que agora o dispositivo lido possa transferir um valor, necessrio que o P comece por pr em HZ as suas sa e a o das de dados, o que feito num e tempo mximo 3. a o e ca cio o O 3 evento do ciclo a assero de RD. Notar que embora o in do pulso de RD s ocorra algum tempo depois da validao dos endereos, esse tempo menor do que o atraso de ca c e WR em relao a endereos vlidos no ciclo de escrita. ca c a Entende-se que assim seja, pois os dispositivos escritos tm um requisito de preparao de e ca endereos vlidos em relao ao in do pulso de escrita, mas j o mesmo no acontece com c a ca cio a a os dispositivos lidos. e O tempo, mais curto, desde endereos vlidos at RD \ suciente para estabilizar c a e os mecanismos de seleco entre dispositivos, se se ligar RD ao OE de todos os dispositivos ca que podem ser lidos - assim, quando os OEs forem asseridos, s activar o dispositivo que se o a pretende seleccionar, e os outros permanecem com as suas sa das desactivadas.

33

Os dados so recolhidos (amostrados) pelo P no nal do ciclo, quase coincidentemente com a RD / . Em qualquer operao de amostragem, o dispositivo que l os dados tem requisitos de ca e preparao e de manuteno. Neste caso o Z80 especica o requisito de preparao 5 em ca ca ca relao ` ultima vertente relgio \ do ciclo, o que permite deduzir que essa vertente que ca a o e internamente ao Z80 opera a amostragem dos dados. No entanto, o tempo de manuteno j ca a a especicado em relao a RD / , o que ` partida parece incorrecto. No entanto, esse tempo e ca ca 6 especicado a 0ns m e nimo, e como o Z80 que controla RD / , a especicao de 0ns e m nimo aps RD / ser uma forma alternativa de especicar um tempo de manuteno no o a ca a e o nulo aps relgio \ , forma essa que anal mais cmoda para o projectista, que geralmente o o no lida com o relgio do P mas apenas com os sinais de controlo do P. a o 2o exemplo: microprocessador 8085 - ciclo de leitura de memria o No ciclo de leitura do 8085 vamos encontrar uma temporizaao igual (` encontrada no ciclo c a de escrita) para os endereos e ALE. c
Relgio Endereos A8A15 AD0AD7

111 000 111 000 111 000 111 000


t3

t1

t9 Endereos t6 t4 t5 Dados lidos

t13

t8 t10

t12 t15 t14 t11 t7

ALE t2 RD

Figura 33: Diagrama temporal para o ciclo de leitura no 8085. Os tempos t1, t3, t4 e t6 dizem respeito apenas ` temporizao do ALE e ` sua relao a ca a ca com os endereos. c O 8085 garante um tempo de preparao de endereos em relao a RD \ , tempo esse ca c ca que expresso por t5. e Como os endereos menos signicativos so preservados exteriormente ao 8085, e como essa c a operao pode ser feita por um registo amostrado por ALE \ , aparece t2 para permitir ca avaliar o tempo de preparao dessa parte dos endereos. ca c t7 especica a largura m nima do pulso de leitura.

34

Enquanto que no Z80 o bus de endereos est, praticamente desde o princ c a pio do ciclo, dispon vel para o dispositivo lido poder activar as suas sa das de dados, no 8085 o bus (de dados e endereos) utilizado durante a fase inicial do ciclo para pr c fora o valor dos 8 c e o a bits menos signicativos do endereo. S aps RD \ que o 8085 garante as suas sa c o o e das em HZ (t8 especicado como 0ns mximo). e a Em relao aos dados lidos, esperar ca amos que fosse especicado um tempo de preparao ca dados vlidos . . . ns, no m a nimo, antes do evento . . . mas, em vez disso, aparecem os 3 requisitos derivados t9 (dados vlidos . . . ns, no mximo, aps endereos vlidos), t10 (dados a a o c a a a o vlidos . . . ns, no mximo, aps ALE \ ) e t11 (dados vlidos . . . ns, no mximo, aps RD a a o \ ). J vimos em 1.4.1 (pg.s 11 e seguintes) a razo de ser destes requisitos derivados. a a a J o tempo de manuteno dos dados lidos aparece especicado (t12) em relao a RD / , a ca ca como no Z80. Os endereos A8 -A15 permanecem vlidos um tempo t13 (m c a nimo) aps RD / e o prximo o o ALE / s ocorrer um tempo t14, no m o a nimo, aps RD / . o No m do ciclo, o bus de dados deixa de estar dispon (o P pode activar as suas linhas vel de sa de dados), o que especicado pelo tempo t15. da e Ciclo s ncrono de leitura de memria - resumo o Tambm aqui h pontos comuns entre estes, e outros, Ps: e a 1. O ciclo demora vrios per a odos de relgio; o 2. O P comea por produzir endereos vlidos; c c a 3. Em seguida (ou mesmo antes) o P liberta o bus de dados; c a 4. Aps isto, faz RD \ . RD \ ocorre depois de endereos vlidos um tempo sucio ente para que as linhas de seleco dos vrios dispositivos (que dependem dos bits mais ca a signicativos do endereo) estejam j estveis no momento RD \ . c a a RD \ tambm s ocorre depois de, ou coincidentemente com, a entrada em HZ das e o sa das de dados do P. Isto assim para que os dispositivos lidos possam activar as suas e sa das a partir de RD \ . 5. Os dados so amostrados pelo P em RD / , ou numa vertente do relgio interno a o a ca ca prxima de RD / . Isto d origem a requisitos de preparao e manuteno dos dados. o 6. No m do ciclo, o bus de dados deixa de estar dispon para o dispositivo lido (o P vel poder activar as suas linhas no ciclo seguinte, que pode ser de escrita). a

35

1.7.3

Exemplo de vericao de tempos ca

Ligao de um P Zilog Z80 a RAMs estticas ca a Para simplicidade, vamos considerar apenas 2 RAMs, mas o problema seria idntico para e mais RAMs. Como j vimos, para evitar conteno no ciclo de leitura o sinal READ (RD no a ca Z80) deve ser ligado ao OE das RAMs. O Z80 tem um sinal prprio para ser ligado ao WE das o RAMs - o sinal WR. As RAMs so 2Kx8 (11 linhas de endereo), e supe-se que no existem outros dispositivos a c o a ligados ao bus do Z80.
Endereos A0A10

A11

Z80
WR RD Dados

RAM 1
WE OE CE

RAM 2
WE OE CE

Figura 34: Esquema de ligaes das RAMs ao Z80. co NOTAS: 1. O Z80 (como muitos outros Ps) tem uma linha WAIT, que serve p.ex. para uma RAM lenta poder prolongar os ciclos de escrita e de leitura (com o aux de um circuito lio adicional de temporizao). No nosso caso, pretende-se no usar o WAIT; ca a 2. O Z80 possui muito mais linhas de controlo, que no so necessrias no nosso caso e que a a a no esto representadas no diagrama. a a Geralmente, vantajoso escolher as RAMs mais lentas de entre as compat e veis com a temporizao do P - as RAMs mais rpidas quase sempre consomem mais potncia, alm de serem ca a e e mais caras - e este um dos objectivos do trabalho de vericao dos tempos. Aqui vamos e ca simplesmente vericar se uma determinada RAM satisfaz todos os requisitos de temporizao ca ao passo que para conseguir um projecto optimizado vulgar ensaiar-se a vericao de tempos e ca para vrias RAMs em alternativa. a E claro que as prestaes do Z80 que no so necessrias ` vericao dos requisitos da RAM co a a a a ca no sero sequer mencionadas - nada obriga a que todas as prestaes entrem na vericao de a a co ca tempos - apenas os requisitos devem ser exaustivamente vericados. Posto o esquema de ligaes, temos de vericar se todos os requisitos de temporizao do co ca Z80 e das RAMs so satisfeitos. Vamos comear pelo ciclo de escrita. a c 36

1.7.4

Ciclo de escrita

Pelo lado da RAM (tempos da RAM esttica 4016C1), temos: Ciclo de escrita (ver g.s 26 a e 27, - pg. 24) - todos os tempos so requisitos: a a twrcyc twp tcw tavw tas tah tds tdh tempo tempo tempo tempo tempo tempo tempo tempo m nimo de ciclo de escrita m nimo do pulso de escrita m nimo de CE \ para m de escrita m nimo de end. vlidos para m de escrita a de preparao de end. vlidos para WE \ ca a de manuteno de end. vlidos depois de WE / ca a de preparao de dados vlidos para WE / ca a de manuteno de dados vlidos depois de WE / ca a 250ns 130ns 200ns 150ns 0ns min 10ns min 80ns min 0ns min

Pela parte do Z80, so especicados 8 tempos relativos ao ciclo de escrita (quando o WAIT a no utilizado) - e todos so prestaes: a e a co
125ns Relgio 1 TdCr(A) Endereo 5 TdCf(WRf) WR TdD(WRf) 3 Dados 2 TdCf(D) TdWRr(D) 8 4 TwWR TdCr(Dz) 7 6 TdCf(WRr) 125ns

Figura 35: Temporizao de escrita do Z80. ca Os tempos especicados (as mnemnicas so as da ZILOG) so: o a a 1 2 3 4 5 6 7 8 TdCr(A) TdCf(D) TdD(WRf) TwWR TdCf(WRf) TdCf(WRr) TdCr(Dz) TdWRr(D) Relgio / para endereo vlido o c a a Relgio \ para dados vlidos o Dados vlidos para WR \ a Durao do pulso de escrita ca Relgio \ para WR \ o Relgio \ para WR / o Relgio / para dados em HZ o Permanncia de dados vlidos aps WR / e a o 110ns max. 150ns max. 80ns min. 220ns min. 80ns max. 80ns max. 90ns max. 60ns min.

Ao contrrio da maioria dos outros fabricantes, a Zilog prefere especicar os tempos com rea ferncia ao relgio do P, e no tanto em relao aos sinais de controlo do P com caracter e o a ca sticas temporizadoras (p.ex. WR e RD). 37

Em relao a projectos com temporizaes muito cr ca co ticas, em que quaisquer 5 ou 10 nanosegundos so preciosos, esta opo da Zilog traz algumas vantagens, pois fornece todos os a ca detalhes. Mas por outro lado obriga o projectista a fazer clculos que j esto imersos nas a a a especicaes tal como so apresentadas por outros fabricantes. co a Estamos agora em condies de fazer a vericao de tempos do ciclo de escrita - ou co ca seja, vericar que todos os requisitos da RAM so cumpridos (j que para o ciclo de escrita o a a Z80 no apresenta requisitos) e adicionalmente vericar que no existe conteno. a a ca Durante o ciclo de escrita, o Z80 mantm o sinal RD permanentemente deasserido. e Assim, as linhas de dados das RAMs esto permanentemente desactivadas e no existe a a qualquer possibilidade de conteno. ca Temos agora de vericar todos os requisitos da RAM, um por um:
twrcyc - tempo m nimo de ciclo de escrita - (250ns): E o tempo que os endereos devem c e c a permanecer vlidos ` volta do pulso de escrita. Na g. 35 v-se que os endereos cam vlidos quase a a durante 3 ciclos inteiros de relgio - ou seja, quase 3 250 = 750ns. o twp - tempo m nimo do pulso de escrita - (130ns): O tempo 4 do Z80 de 220ns, e como CE e das RAMs depende dos endereos - que esto vlidos para ambos os lados do pulso de WR - a largura c a a a e do pulso de escrita (coincidncia de WE e CE asseridos) no menor do que 4. Como 220ns > 130ns, e satisfaz. tcw - tempo m nimo de CE \ para m de escrita - (200ns): No nosso circuito, CE depende dos endereos (uma das RAMs tem ainda o atraso de uma porta inversora, que inferior a 20ns). c e Este tempo no dado directamente nas especicaes do Z80, temos de calcul-lo. E igual a: a e co a 5 125ns [mximo de 1] + [m a nimo de 6]. Do tempo 6 s especicado o mximo, pelo que temos oe a de considerar nulo o m nimo. Ficamos com: 5 125ns 110ns = 515ns, a que h ainda a subtrair os a 20ns do inversor, mas que excede em muito os 200ns requeridos. tavw - tempo m nimo de end. vlidos para m de escrita - (150ns): E igual ao caso anterior, a apenas com as diferenas de que no h a considerar o atraso do inversor e que o requisito da RAM c a a e 150ns (em vez dos 200ns anteriores). tas - tempo de preparao de end. vlidos para WE \ (0ns min): Tambm no dado ca a e a e directamente nas especicaes do Z80. E igual a: 3125ns[mximo de 1]+[m co a nimo de 5]. Tambm e aqui temos de considerar nulo o m nimo de 5. Mas os 0ns so largamente satisfeitos: 3125ns110ns = a 265ns. tah - tempo de manuteno de end. vlidos depois de WE / (10ns min): De acordo com ca a as especicaes da g. 35, o Z80 garante neste caso: 125ns [mximo de 6] = 125 80 = 45ns m co a n.. tds - tempo de preparao de dados vlidos para WE / (80ns min): De acordo com ca a as especicaes da g. 35, o Z80 garante neste caso: [m co nimo de 3] + [m nimo de 4] = 80 + 220 = 300ns m n.. tdh - tempo de manuteno de dados vlidos depois de WE / (0ns min): Este requisito ca a da RAM directamente garantido pelo tempo 8 do Z80, que de 60ns. e e Como se v, no ciclo de escrita todos os requisitos da RAM so fcilmente garantidos pelas e a a prestaes do Z80. Mas nem sempre assim - basta ver que os tempos utilizados so os da verso A co e a a do Z80, que tem 4MHz de relgio. e que existe uma verso de 8MHz (H). o a e Por exemplo, no Z80-H a durao do pulso de WR de 100ns, inferior aos 130ns requeridos pela ca RAM. Isso levaria a seleccionar uma RAM mais rpida. a

38

1.7.5

Ciclo de Leitura

Pelo lado da RAM, temos: Ciclo de leitura (ver g. 19, na pg. 18) - todos os tempos so a a prestaes: co tacc tce toe tdf toh da atraso de endereo para sa c atraso CE \ para sa da da atraso OE \ para sa atraso OE / para sa em HZ da permanncia da sa aps mudana de endereo e da o c c 250ns max 250ns max 110ns max 10ns min, 80ns max 10ns min

Pelo lado do Z80, so especicados requisitos (a preparao e a manuteno dos dados) e a ca ca prestaes (relativas aos sinais que so sa co a das do Z80).
125ns Relgio 1 TdCr(A) Endereo 2 RD 3 Dados [sada] TsD(Cf) Dados [entrada] TdCr(Dz) 5 6 TdCf(RDf) TdCf(RDr) 4 125ns

?
ThD(RDr)

Figura 36: Temporizao de leitura de memria do Z80. ca o As prestaes so: co a 1 2 3 4 TdCr(A) TdCf(RDf) TdCr(Dz) TdCf(RDr) Relgio o Relgio o Relgio o Relgio o / \ / \ para para para para endereo vlido c a RD \ dados em HZ RD / 110ns max. 95ns max. 90ns max. 85ns max.

Note-se que devia ser denida tambm a altura em que o Z80 deixa de garantir que tem as e suas sa das de dados em HZ. Contudo, pode com segurana assumir-se que isso no acontece c a antes do relgio / aps RD / . o o Os requisitos so apenas dois: a o 5 TsD(Cf) Preparao de dados vlidos para relgio \ ca a 6 ThD(RDr) Manuteno de dados vlidos aps RD / ca a o 50ns min. 0ns min.

39

Vamos em 1o lugar vericar se existe conteno. No in do pulso de RD no existe. ca cio a As RAMs tm OE deasserido at RD \ , o que s ocorre depois do primeiro relgio \ do e e o o ciclo de leitura (o facto de o tempo 2 ser especicado em relao a essa vertente do relgio ca o indica que precisamente essa vertente que desencadeia - interiormente ao Z80 - a ocorrncia e e de RD \ ). Por outro lado, o Z80 garante que pe as suas linhas de dados a HZ no mximo 90ns aps o o a o e o a primeiro relgio / do ciclo. At ao primeiro relgio \ , h uma margem de: 125ns 90ns = o 35ns. ca No m do ciclo de leitura, RD / faz OE / nas RAMs, o que provoca a desactivao das suas sa das - segundo o tempo tdf , esta desactivao pode demorar 80ns (mx.). ca a Por outro lado, as especicaes do Z80 apenas nos permitem assumir que o Z80 mantm co e o o as linhas de dados em HZ at ao relgio / que ocorre aps RD / . Ou seja, aps RD / o e o Z80 pode activar as suas sa das desde que decorra: 125ns [mximo de 4] = 125 85 = 40ns, a o que em rigor daria um tempo de conteno de 80 40 = 40ns no m do ciclo de leitura. ca ` primeira vista, isto seria razo suciente para escolher uma RAM mais rpida - mas A a a acontece que dif encontrar tempos de desactivao inferiores a 40ns nas RAMs NMOS e e cil ca CMOS, que so as normalmente utilizadas! a Quer isto dizer que com o Z80A s poss utilizar RAMs das fam oe vel lias mais rpidas? Se a assim fosse, a utilidade do Z80A seria muito reduzida (e que dizer das verses mais rpidas do o a Z80 . . . ). e O verdadeiro problema aqui que o fabricante no especicou o tempo desde relgio / at e a o ` sa dos dados de HZ. Plausivelmente, o fabricante poderia especicar um tempo superior a da a 40 ou 60ns, mas na ausncia desta especicao uma abordagem rigorosa leva a tomar esse e ca tempo como nulo. Neste tipo de casos (que ocorrem muito frequentemente. . . ) o projectista pesa cuidadosamente os vrios factores: a E muito provvel que o fabricante pudesse especicar um tempo at largamente excea e dentrio em relao ao estritamente necessrio (40ns no nosso caso); a ca a Mesmo que no seja o caso, o resultado de algumas dezenas de ns de conteno, embora a ca prejudique a abilidade, no decisivo a e Neste caso concreto, a maioria dos projectistas arriscaria, embora fosse aconselhvel fazer a testes com osciloscpio e outros instrumentos de medida. o Como um projecto sempre feito para ser compat com CIs que esto sujeitos a variaes e vel a co de fabrico, os resultados de um teste destes devem ser interpretados com um grande sentido cr tico. Com efeito, o teste sempre feito com um CI particular que pode ser mais favorvel e a do que a mdia (e que dizer ento dos CIs mais desfavorveis. . . ) quanto ` caracter e a a a stica que est a ser vericada. a O mais natural seria contactar com o fabricante, pedindo a especicao em falta, mas por ca vezes moroso obter uma resposta. e 40

Resta-nos vericar os dois requisitos do Z80 (os tempos 5 e 6). 5 TsD(Cf) Preparao de dados vlidos para relgio \ - (50ns min): A vertente ca a o o o de relgio \ referida no tempo 5 ocorre 5125 = 625ns aps a primeira vertente relgio / do o ciclo de leitura. Assim, equivalente dizer que os dados devem estar vlidos 625 50 = 575ns e a a (no mximo) aps a 1 vertente de relgio / do ciclo. a o o Na RAM h a considerar 3 atrasos distintos para a validade dos dados: a e c c a O 1o o decorrente dos endereos. Segundo o tempo 1 do Z80, os endereos cam vlidos a o c a 110ns aps a 1 vertente de relgio / do ciclo. Como na RAM o atraso endereo vlido o para dados vlidos de 250ns no mximo, o atraso total de 110 + 250 = 360ns, o que a e a e est dentro dos 575ns. a O 2o o correspondente ` assero do CE. O caso mais cr e a ca tico o da RAM que tem e o a a o c um inversor no percurso do CE, e para esta CE s car vlido 20ns aps o endereo. O atraso da RAM CE asserido para dados vlidos tambm de 250ns e portanto o atraso a e e total de 110 + 20 + 250 = 380ns, tambm muito dentro dos 575ns. e e O 3o corresponde ` assero do OE que est ligado ao RD do Z80. Este sinal, segundo a ca a o o tempo 2 do Z80, ca asserido 95ns aps a 1a vertente relgio \ do ciclo, ou seja, o a 125 + 95 = 220ns aps a 1 vertente de relgio / do ciclo. Na RAM, o atraso OE o o asserido para dados vlidos de 110ns, pelo que o atraso total de 220 + 110 = 330ns. a e e Assim, o tempo 5 do Z80 claramente cumprido, at com uma margem de 575380 = 195ns e e (no caso mais cr tico). Apenas nos falta vericar o tempo 6: ThD(RDr) Manuteno de dados vlidos aps ca a o RD / - (0ns min): Na g. 36 nota-se que na parte nal do ciclo de leitura, nenhum dos e sinais do Z80 que esto ligados ` RAM varia antes de RD / . Como at RD / as entradas a a de controlo da RAM permanecem estveis, tambm o permanecem as suas sa a e das de dados, e o tempo 6 claramente cumprido. e ca Na vericao de tempos zeram-se 2 simplicaes: a 1a , de que os tempos de transio ca co a dos sinais so nulos, e a 2 , de que os 2 semiper a odos do relgio do P so exactamente iguais o a (o que no rigorosamente garantido pelos circuitos osciladores). A considerao rigorosa a e ca destes dois factores iria provocar diferenas da ordem dos 5 a 10ns em alguns casos. Como se c encontraram largas margens de segurana, desnecessrio consider-los. c e a a

41

1.8

Sinais de Interface dos Microprocessadores

Os microprocessadores so utilizados em conjuno com outros circuitos integrados que incluem a ca ROMs e RAMs e tambm circuitos perifricos como: e e controladores de disco duro e diskette, controladores de comunicaes srie, co e circuitos de portos paralelos, circuitos temporizadores/contadores (incluindo relgios de tempo real ). o Os circuitos perifricos so geralmente vistos do P como se se tratasse de memrias com e a o algumas (poucas) clulas de escrita e algumas (tambm poucas) clulas de leitura. e e e Para permitir a interligao do P com as ROMs, RAMs e perifricos o P apresenta uma ca e srie de sinais nos seus pinos. Estes sinais variam bastante de microprocessador para microe processador, mas existe em todos eles um subconjunto de sinais que se podem considerar como caracterizando um hipottico microprocessador bsico. Para podermos abordar a variedade e a de sinais que encontramos nos diferentes microprocessadores sem perder de vista os seus pontos comuns vamos comear por considerar os sinais desse hipottico microprocessador bsico. c e a 1.8.1 Sinais de Interface num Microprocessador Bsico a

O microprocessador bsico necessita de ter um bus de dados bidireccional (um P de a 8 bits ter 8 bits neste bus) e um bus de endereos - que geralmente de 16 bits nos Ps a c e de 8 bits - unidireccional (apenas pode ser comandado pelo P). As linhas do bus de dados so normalmente designadas por: D0 D1 . . . D7 (em que o D de data) e as linhas do bus de a e endereos por: A0 A1 . . . A15 (em que o A de address). c e Os outros sinais necessrios para a ligao a memrias ROM e RAM so as sa a ca o a das: um sinal de escrita WR ( vulgar que o n de assero deste sinal seja o 0), e vel ca um sinal de leitura RD ( vulgar que o n de assero deste sinal seja o 0). e vel ca Os sinais WR e RD, alm de transmitirem a informao de que o ciclo presente de escrita e ca e ou de leitura, tm tambm um papel temporizador - os instantes das suas transies tm e e co e um signicado adicional. O in da assero de WR sinaliza (em quase todos Ps) que os cio ca endereos j esto vlidos h algum tempo, tempo esse normalmente suciente para satisfazer o c a a a a requisito de preparao de endereos vlidos antes do in do pulso de escrita das memrias ca c a cio o RAM estticas. a

42

O in da assero de RD tambm geralmente sinaliza que os endereos j esto vlidos cio ca e c a a a h algum tempo. Embora as memrias (quer ROM, quer RAM) no tenham nenhum requisito a o a de preparao de endereos no ciclo de leitura, vimos anteriormente que para evitar conteno ca c ca no in do ciclo de leitura necessrio que as entradas de seleco (chip enable) das ROMs cio e a ca ou RAMs estejam j estabilizadas quando asserida a entrada output enable. As entradas de a e seleco estaro - pelo menos para o microprocessador bsico - dependentes apenas das linhas ca a a de endereo do P e a entrada output enable estar naturalmente ligada ` sa RD do P. E c a a da por esta razo que os Ps so projectados para terem um tempo de preparao de endereos a a ca c vlidos antes da assero de RD. a ca Alm das linhas de sinal acima descritas, o microprocessador bsico apenas precisaria de e a uma entrada de relgio e porventura uma outra de inicializao (quando o circuito ligado, o ca e deve haver uma operao de inicializao aps a tenso de alimentao ter estabilizado, que ca ca o a ca ser feita por intermdio dessa entrada de inicializaao - geralmente designada por reset). a e c

Relgio Inicializao

Endereos

WR RD

Dados

Figura 37: Linhas de um microprocessador bsico. a

1.8.2

Sinais de Interface em Microprocessadores Reais

Nos microprocessadores reais, alm dos sinais relacionados com o funcionamento do microproe cessador bsico que vimos, encontramos outros sinais, a maior parte das vezes relacionados a com modos de funcionamento adicionais. Note-se, no entanto, que para executar as sequncias bsicas de transferncia basta que estes e a e sinais adicionais, quando entradas do P, sejam xados ao estado deasserido - e quando sa das, simplesmente no sejam utilizados. Vamos ver em seguida alguns desses sinais adicionais, a relacionados com: espaos de endereamento de memria e de entrada/sa c c o da, sinais de validao/temporizao, ca ca sinais de interrupo, ca sinais de controlo de bus.

43

1.8.3

Espaos de Endereamento de Memria e de Entrada/Sa c c o da

Muitos microprocessadores tm dois espaos de endereamento diferentes - um para circuie c c tos de memria e outro para circuitos perifricos (sendo este ultimo designado por espao de o e c entrada/sa da). Em termos de linhas no circuito, a distino pode ser feita de vrias maneiras: ca a Com uma linha IO/M (que sinaliza uma operao de entrada/sa - IO, ou seja, inca da put/output - quando est a 1 e que sinaliza uma operao de memria quando est a 0), a ca o a conjugada com as duas linhas normais WR e RD; Com duas linhas MEMREQ (memory request, ou seja operao de memria) e IOREQ ca o (IOrequest , ou seja operao de entrada/sa ca da), conjugada com as duas linhas normais WR e RD; Com 4 linhas (com papel temporizador todas elas) MEMRD (memory read), MEMWR (memory write), IORD (input/output read), IOWR (input/output write). Outros microprocessadores no implementam a distino entre perifricos de memria e de a ca e o entrada/sa da. Diz-se ento que a entrada/sa mapeada em memria (memory-mapped a da e o I/O). 1.8.4 Sinais de Validao/Temporizao ca ca

Certos microprocessadores geram sinais que servem apenas a validao de outros sinais (tendo ` ca estes ultimos um papel de transporte de informao), assinalando o instante em que estes ca ultimos sinais cam vlidos. Tal o caso do sinal ALE no microprocessador 8085. a e Uma entrada de temporizao que existe praticamente em todos os Ps a linha de espera ca e (wait input), que serve para ligar o P a memrias (ou outros circuitos) menos rpidos do que o a o m nimo exigido pelos ciclos normais de escrita e leitura desse P. Enquanto o wait estiver asserido, o P prolonga o ciclo de escrita ou de leitura, permitindo assim utilizar memrias o mais lentas. 1.8.5 Sinais de Interrupo ca

Em quase todos os processos controlados por Ps h tarefas que no podem esperar muito a a tempo para serem executadas. Por exemplo, suponhamos um P que est ligado a um perifrico de comunicaes srie a e co e estando este a receber uma cadeia de caracteres; o perifrico tem apenas uma clula para e e armazenamento temporrio dos caracteres recebidos. Se o P no l essa clula rapidamente a a e e aps ela ter sido preenchida com um caracter recebido, ela reescrita com o caracter seguinte, o e perdendo-se denitivamente o anterior. Assim, se o P est numa determinada altura a executar um programa que est a levar a a a cabo outra tarefa, poder falhar caracteres recebidos - a menos que se espalhem blocos de a instrues de teste ` recepo por todas as zonas de programa que o P possa estar a executar. co a ca Esta hiptese extremamente inconveniente, pelo que se implementa normalmente um eso e quema de interrupo em hardware. Existe uma linha (ou linhas) de entrada do P que quando ca 44

accionadas interrompem o curso do programa do P e o dirigem para endereos de execuo c ca espec cos (onde se encontrar um programa de atendimento espec a co para a interrupo). ca Paralelamente aos sinais de entrada de interrupo para o P, tambm existe geralmente ca e uma sa do P - o interrupt acknowledge - que sinaliza que o P j reagiu a uma interrupo da a ca e que serve para (entre outras coisas) terminar o ciclo do circuito que gerou a interrupo. ca Os vrios sinais de interrupo, a existirem, tm geralmente n a ca e veis de prioridade diferentes. 1.8.6 Sinais de Controlo de Bus (Modo HOLD)

Certos dispositivos que esto ligados ao bus do P tambm tm a capacidade de controlar o a e e bus de dados e os sinais de leitura/escrita exactamente como se estivessem no lugar do P. E por exemplo o caso dos dispositivos de acesso directo ` memria (DMA) que permitem fazer a o transferncias entre memria e perifricos muito mais rapidamente do que se fossem efectuadas e o e pelo P, mas que tm que se substituir a este no controlo dos buses temporariamente. e Um dispositivo externo que queira assumir a gesto do bus assere um sinal HOLD REa QUEST (pedido de HOLD) que uma entrada para o P. e O P no cede instantaneamente o comando do bus, mas sim espera por uma ocasio em a a que o possa fazer com um m nimo de disrupo das suas operaes - possivelmente o m da ca co execuo de uma instruo. Nesse momento, coloca todas as suas linhas de dados, endereos e ca ca c controlo do bus no estado HZ, ao mesmo tempo que informa o dispositivo requerente de que o bus j est livre - asserindo um sinal HOLD ACKNOWLEDGE (HOLD satisfeito). Esse a a dispositivo passa a poder controlar o bus com o mesmo estatuto que o P tinha. co a o O modo HOLD implica a paragem de todas as operaes do P, no s externas mas tambm internas, j que o P deixa de poder ler instrues que obviamente tm sempre de e a co e estar armazenadas numa memria exterior. o
16
16 bits 16 bits

13 3
Descodificador 3:8

Endereos

Hold Request

Endereos

...

CS

Ender.

CS

Ender.

CS

Ender.

Contr. DMA
Dados WR RD
Linha de RD comum Linha de WR comum

ROM 8Kx8
Dados OE

RAM n1 8Kx8
WE Dados OE

RAM n2 8Kx8
WE Dados OE

Dados WR RD

Hold Acknowledge

Bus de dados 8 bits

Figura 38: Exemplo de um sistema com um microprocessador e um controlador de DMA. No sistema da g. 38, nota-se que os buses de dados e de endereos, bem como as linhas c WR e RD, so comuns ao P e ao controlador de DMA. a 45

1.9
1.9.1

Seleco de Memria e Perifricos ca o e


Seleco de Memria e Perifricos por Linha de Endereo Dedicada ca o e c

Para seleccionar no bus qual o dispositivo a activar pode utilizar-se uma linha de endereo por c cada dispositivo, mas este processo apenas permite uma utilizao muito parcial do espao de ca c endereamento do P. Por exemplo, no circuito da gura seguinte: c
MREQ A A A

Z80
13

WR RD
0

15

14

D ... D
7

12

... A

CE WE OE A12 . . A0 RAM n1 D7 8Kx8 . . D0

CE WE OE A12 . . A0 RAM n2 D7 8Kx8 . . D0

CE WE OE A12 . . A0 RAM n3 D7 8Kx8 . . D0

Figura 39: Exemplo de seleco de dispositivos por linha de endereo dedicada. ca c NOTA: O Z80 dispe de um sinal - de mnemnica MREQ - que quando asserido indica o o que o presente ciclo de transferncia de/para memria. Existe um sinal anlogo - IOREQ e e o a que tem o mesmo papel, mas para as transferncias de/para perifricos (ou seja, no espao de e e c endereamento de entrada/sa c da). Alm deste papel informativo (transferncia com memria e e o ou com perifrico, estes sinais tm tambm um papel temporizador, pois a assero de qualquer e e e ca deles indica que os endereos j esto vlidos). c a a a Se o Z80 da gura acima no estivesse ligado a outros dispositivos para alm das trs RAMs, a e e ca no seria necessria a utilizao do sinal MREQ para o circuito de seleco das RAMs. Com a a ca a utilizao de MREQ mantm-se a possibilidade de ligar a outros dispositivos colocados no ca e espao de endereamento de entrada/sa c c da. 46

Relativamente ` g. 39, temos a seguinte utilizao do espao de endereamento, no sendo a ca c c a poss enderear mais dispositivos: vel c
0x0000 0x2000 RAM n1 0x3FFF 0x4000 RAM n2 0x5FFF 0x6000 0x8000 RAM n3 0x9FFF 0xA000 0xC000 0xE000 no utilizvel no utilizvel no utilizvel 0xBFFF 0xDFFF 0xFFFF no utilizvel 0x7FFF no utilizvel

0x1FFF

1.9.2

Seleco de Memria e Perifricos por Descodicao das Linhas de Enca o e ca dereo c

vel a ca Fazendo a descodicao das linhas de endereo poss passar ` seguinte organizao, em ca c e que todo o espao de endereamento utilizvel: c c e a
0x0000 RAM n1 0x2000 RAM n2 0x3FFF 0x4000 RAM n3 0x5FFF 0x6000 Livre 0x7FFF 0x8000 Livre 0x9FFF 0xA000 Livre 0xBFFF 0xC000 Livre 0xE000 Livre 0xFFFF 0xDFFF 0x1FFF

47

O circuito respectivo, em que se utiliza um descodicador, apresentado a seguir: e


MREQ A A A WR RD
0

Z80
13

15

14

D ... D
7

12

... A

A Y0 Y1

Enable

Y2 Y3 Y4 Y5 Y6 Y7

CE WE OE A12 . . A0 RAM n1 D7 8Kx8 . . D0

CE WE OE A12 . . A0 RAM n2 D7 8Kx8 . . D0

Descodificador 3 para 8

CE WE OE A12 . . A0 RAM n3 D7 8Kx8 . . D0

Figura 40: Exemplo de seleco de dispositivos por descodicao das linhas de endereo. ca ca c

Adaptado de: Eduardo S Marta, Sistemas Digitais, DEEUC, Seco de Textos da FCTUC, 1994. a ca 48

UNIVERSIDADE DE COIMBRA FACULDADE DE CIENCIAS E TECNOLOGIA DEPARTAMENTO DE ENGENHARIA ELECTROTECNICA E DE COMPUTADORES

Sistemas de Tempo Real: Apontamentos do Laboratrio o

Rui Ara jo u

COIMBRA Setembro, 2006

Rui Ara jo u Email: rui@isr.uc.pt http://www.isr.uc.pt/~rui Tel: 239.796276 Tel. Int.: 1352

Contedo u
1 Desempenho e Optimizao de Cdigo ca o 1.1 Optimizar ou no optimizar? . . . . . . . . . . . a 1.2 Lei de Amdahl . . . . . . . . . . . . . . . . . . 1.3 Optimizaes Simples . . . . . . . . . . . . . . . co 1.3.1 Aritmtica Inteira . . . . . . . . . . . . . e 1.3.2 Eliminar Induo nos Ciclos . . . . . . . ca 1.3.3 Testes e Tabelas . . . . . . . . . . . . . . 1.3.4 Usar Expresses Simples . . . . . . . . . o 1.3.5 Uso de Identidades Aritmticas . . . . . e 1.3.6 Reduo de Fora . . . . . . . . . . . . . ca c 1.3.7 Eliminao de Sub-expresses Comuns . ca o 1.3.8 Funes Intr co nsecas . . . . . . . . . . . . 1.3.9 Dobragem de Constantes . . . . . . . . . 1.3.10 Optimizao de Invariantes de Ciclo . . . ca 1.3.11 Propagao de Constantes . . . . . . . . ca 1.3.12 Eliminao de Variveis Mortas . . . . . ca a 1.4 Reduo da Sobrecarga nos Ciclos . . . . . . . . ca 1.4.1 Variveis de Controlo . . . . . . . . . . . a 1.4.2 Desenrolar os Ciclos (Loop Unrolling) 1.4.3 Fuso de Ciclos . . . . . . . . . . . . . . a 1.5 Optimizao de Sistemas com Cache . . . . . . ca 1.5.1 Juntar Arrays . . . . . . . . . . . . . . . 1.5.2 Troca da Ordem dos Ciclos . . . . . . . 1.5.3 Fuso de Ciclos . . . . . . . . . . . . . . a 1.5.4 Criao de Blocos . . . . . . . . . . . . . ca 1.5.5 Outros Mtodos . . . . . . . . . . . . . . e 1.6 Medio dos Tempos de Execuo . . . . . . . . ca ca 5 5 6 6 6 7 7 7 7 7 8 8 8 9 9 10 10 10 11 11 12 12 13 13 13 13 14

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

2 Escalonamento, Medio de Tempos e RTKernel ca 15 2.1 Atribuio de Prioridades por Razo Montona . . . . . . . . . . . . . . . . . . 15 ca a o 2.2 Teste da Possibilidade de Escalonamento Baseado no Factor de Utilizao . . . . 16 ca 3

4 2.3 Atribuio de Prioridades por Ordenamento Montono de Metas ca o 2.4 Clculo dos Tempos de Resposta . . . . . . . . . . . . . . . . . a 2.5 Introduo ao RTKernel . . . . . . . . . . . . . . . . . . . . . . ca 2.5.1 Funes Mais Importantes . . . . . . . . . . . . . . . . . co 2.5.2 Funes de Mdulos Adicionais . . . . . . . . . . . . . . co o

CONTEUDO Temporais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 17 18 18 19 21 21 21 23 23 24 26 26 27

3 Aquisio de Medidas num PC Auxiliada por Interrupes ca co 3.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca 3.2 O Mecanismo das Interrupes nos PCs . . . . . . . . . . . . . . . . . . . . . co 3.3 O 80x86 Perante os Pedidos de Interrupo . . . . . . . . . . . . . . . . . . . ca 3.4 O Controlador de Interrupes (PIC) . . . . . . . . . . . . . . . . . . . . . . co 3.5 Programao de Servios a Interrupo em Borland C . . . . . . . . . . . . . ca c ca 3.6 Utilizao do i8254 da PCL-818L para Gerar Cadncia das Converses A/D ca e o 3.7 Utilizao de Interrupes em RTKernel . . . . . . . . . . . . . . . . . . . . ca co Bibliograa

. . . . . . .

. . . . . . .

Cap tulo 1 Desempenho e Optimizao de Cdigo ca o


Em muitos casos por razes de projecto no poss utilizar processadores de ultima gerao. o a e vel ca Isto obriga, muitas vezes, a que o cdigo desenvolvido seja optimizado de forma tirar o mximo o a partido do processador utilizado. Para isso teremos de por vezes sacricar a estruturao ou a ca legibilidade do cdigo que vamos escrever, a favor da rapidez de execuo do mesmo. o ca Muitas das tcnicas de optimizao de cdigo (e.g. [A. Laplante, 1997]) baseiam-se em ree ca o formular os algoritmos ou reescrever as expresses de forma a eliminar (sempre que poss o vel) chamadas a funes que sejam consumidoras de tempo tais como: exponenciais, ra quadraco zes das e funes transcendentais. co Estas notas so apenas um resumo de algumas das tcnicas mais utilizadas, e no dispensam a e a a consulta de outras fontes de informao especializadas. ca

1.1

Optimizar ou no optimizar? a

O sobre-dimensionamento no necessariamente bom. Imaginemos que queremos controlar a e a temperatura de uma sala. No faz sentido efectuar as medies e produzir os respectivos a co comandos de controlo a uma taxa de 1Hz, porque devido ` inercia trmica da massa de ar ena e volvida quaisquer variaes acontecero a taxas muito mais lentas. Por outro lado, se quisermos co a utilizar para o controlo uma contribuio da derivada da variao da temperatura para obter ca ca um efeito antecipativo e se o per odo de amostragem for demasiadamente pequeno as variaes co medidas sero praticamente nulas. a Pelo que acabmos de ver, torna-se evidente que antes de enveredar por qualquer tentativa a de optimizao de cdigo para o tornar mais rpido, devemos certicar-mo-nos da absoluta ca o a necessidade disto. Pois, se o processo que pretendemos colocar em funcionamento necessitar apenas de uma taxa de execuo de 0.1Hz no necessrio optimizar o cdigo de forma a ca a e a o torn-lo capaz de executar 10 vezes mais rapidamente. a Em resumo: Porqu optimizar: e Requisitos de tempo-real; 5

CAP ITULO 1. DESEMPENHO E OPTIMIZACAO DE CODIGO Aproveitamento das capacidades do hardware; Dimensionamento razovel - task-driven. a

Desvantagens: Perda de legibilidade do cdigo; o Sacrif da estrutura. cio

1.2

Lei de Amdahl

A lei de Amdahl estabelece o melhoramento total mximo obtido pela optimizao de uma a ca parte (fraco) do cdigo de um software. Tem-se, ca o MT = 1 (1 f ) + f Mf

onde MT a melhoria total, f a fraco do cdigo melhorada e Mf a melhoria obtida na e e ca o e fraco f . Esta lei indica que por maior melhoria que se possa obter numa fraco do cdigo, ca ca o essa melhoria repercute-se no desempenho do sistema sempre de forma fraccional. Assim, deve sempre tentar-se melhorar a parte do cdigo que mais substancial. Normalmente esta fraco o e ca corresponde ao processamento dos ciclos iterativos.

1.3
1.3.1

Optimizaes Simples co
Aritmtica Inteira e

Na grande maioria dos casos, as operaes de aritmtica inteira so bastante mais rpidas do as co e a a efectuadas em virgula utuante pelo que as primeiras devero ter escolha preferencial sempre a que poss vel. No entanto, se numa aplicao for absolutamente necessrio utilizar n meros decimais, ca a u n m podemos aplicar um factor de escala (10 ou 2 ) nos valores utilizados, convertendo-os em inteiros e efectuando todas as operaes como se de inteiros se tratasse1 . co
Claro que na realidade teremos de introduzir operaoes adicionais para manter o n mero de casas decimais. c u Exemplo: considerando 3 casas decimais xas, ento 1000 representa 1.000. Mas 1000 1000 = 1000000 e a 1000000, nesta notaao, 1000.000 e no 1.000 como seria o resultado esperado, da que seja necessrio efectuar c e a a um ajuste do n mero de casas decimais depois de cada multiplicaao ou diviso. u c a
1

1.3. OPTIMIZACOES SIMPLES

1.3.2

Eliminar Induo nos Ciclos ca

A indexao de matrizes em ciclos deve ser feita com recurso ao menor n mero poss ca u vel de clculos auxiliares, tendo em conta a optimizao do caso mais frequente (Lei de Amdhal). a ca Assim, pode substituir-se for (i=0;i<=10;i++) a[i+1]=1; por for (i=1;i<=11;i++) a[i]=1; Assim foram eliminadas um conjunto de 11 somas. Interessa optimizar o caso mais frequente. As pores de cdigo que so mais vezes executadas devem merecer ateno especial, co o a ca pois so estes, na maioria dos casos, que consomem mais tempo de processamento. a

1.3.3

Testes e Tabelas

Testes encadeados: um conjunto de instrues if deve ser rearranjado de forma a que o caso co que se verica mais vezes seja o primeiro a ser testado. Organizar uma srie de condies AND de forma a que a condio mais provvel de falhar e co ca a seja testada em primeiro lugar. (Organizar uma srie de condies OR de forma a que a e co condio mais provvel de suceder seja testada em primeiro lugar.) ca a Organizar os elementos de uma tabela de forma a que os elementos mais frequentemente pesquisados sejam os primeiros a ser comparados. Esta tcnica apenas uma variao do que e e ca foi dito acima sobre a organizao de sries de testes AND ou OR. ca e

1.3.4

Usar Expresses Simples o

Reduzir o trabalho do processador em comparaes de funes sempre que a comparao de co co ca alguns parmetros possa ser feita em sua substituio. Por exemplo, substituir comparaes a ca co entre resultados de funes montonas, por testes sobre os parmetros destas funes. Por co o a co exemplo, substituir a comparao if(exp(x)<exp(y)) then ... por if(x<y) then .... ca

1.3.5

Uso de Identidades Aritmticas e

Devem-se usar identidades aritmticas para eliminar cdigo in til. Por exemplo, a multiplicao e o u ca pela constante 1 ou a adio pela constante 0 deves ser eliminadas. Embora isto possa ca parecer trivial e seria normalmente evitado pelo programador, o uso de constante simblicas o pode obscurecer estes clculos do programador humano. a

1.3.6

Reduo de Fora ca c

Reduo de fora refere-se ` utilizao da macroinstruo mais rpida para realizar um dado ca c a ca ca a clculo. Pode-se substituir a multiplicao de um inteiro por outro inteiro que uma potncia 2, a ca e e por uma srie de instrues de deslocamento (shift). Tipicamente, as instrues de deslocamento e co co so mais rpidas que as multiplicaes de inteiros. a a co

CAP ITULO 1. DESEMPENHO E OPTIMIZACAO DE CODIGO

Em alguns compiladores, as variveis do tipo caracter raramente so carregadas em registos, a a enquanto as variveis inteiras o so. A razo para isto pode ser o facto de se assumir que que se a a a iro realizar clculos com inteiros, enquanto que com caracteres se assuma que isso raramente a a acontea. Deve-se portanto ter cuidado ao decidir se uma varivel deva ser um caracter ou um c a inteiro. Alm disso, sabido que tipicamente as instrues de diviso demoram mais tempo a e e co a executar do que as instrues de multiplicao. Assim, pode ser melhor multiplicar pelo inverso co ca de um n mero do que dividir por esse n mero. Por exemplo, x*0.5 ser mais rpido do que u u a a x/2.0.

1.3.7

Eliminao de Sub-expresses Comuns ca o

Deve-se evitar o clculo repetido da mesma sub-expresso em duas equaes diferentes. Por a a co exemplo, o seguinte fragmento de programa x=y+a*b; y=a*b+z; pode ser substitu por do t=a*b; x=y+t; y=t+z; eliminando assim uma multiplicao. Isto pode resultar em poupanas signicativas se a e ca c b so n meros de v a u rgula utuante e este cdigo ocorrer num ciclo. o

1.3.8

Funes Intr co nsecas

Quando for poss usar funes intr vel co nsecas em vez de funes ordinrias. Funes intr co a co nsecas so simplesmente macros onde a chamada ` funo substitu por cdigo em linha durante a a ca e da o a compilao. Isto melhora o desempenho de tempo-real porque se eliminam a necessidade de ca passar parmetros, e criar e eliminar espao para variveis locais, para alm da eliminao da a c a e ca chamada ` funo. Embora com funes intr a ca co nsecas a execuo seja mais rpida, esta soluo ca a ca faz gastar mais memria. o

1.3.9

Dobragem de Constantes

Muitos compiladores realizam a dobragem de constantes, mas no se deve assumir isto como a garantido. Por exemplo: a instruo x=2.0*x*4.0 seria optimizada substituindo 2.0*4.0 ca por 8.0.

1.3. OPTIMIZACOES SIMPLES

Realizando esta operao manualmente obtm-se um cdigo ao qual mais fcil de fazer deca e o e a bug, porque o programador realiza explicitamente a optimizao; E embora a instruo original ca ca seja mais descritiva, pode-se fornecer um comentrio para explicar a instruo optimizada. a ca Por exemplo, se for usado /2 no programa, deve-se pr-calcular esta constante durante e a parte de inicializao do cdigo (parte que no de tempo-real) e guardada como uma ca o a e constante, por exemplo, pi div 2. Tipicamente isto evita uma instruo de load de v ca rgula utuante e uma instruo de diviso de v ca a rgula utuante - potencialmente algumas dezenas de microsegundos.

1.3.10

Optimizao de Invariantes de Ciclo ca

A maior parte dos compiladores transferem para fora dos ciclos os clculos que no precisam de a a ser efectuados dentro deles. Este processo designa-se por optimizao de invariantes de ciclo. ca Por exemplo, o seguinte cdigo o x=100; while(x>0){ x=x-(y+z); } pode ser substitu por do x=100; t=y+z; while(x>0){ x=x-t; } Isto move uma instruo para fora do ciclo mas requer memria adicional. ca o

1.3.11

Propagao de Constantes ca

Certas atribuies de variveis podem ser substitu co a das por atribuies de constantes, permitindo co oportunidades de utilizao de registos ou o uso de modos de endereamento imediatos. Por ca c exemplo, o cdigo seguinte o x=100; y=x; poderia ser traduzido por um compilador no optimizante no seguinte fragmento de linguagem a assembly:

10 LOAD STORE LOAD STORE R1,100 R1,x R1,x R1,y

CAP ITULO 1. DESEMPENHO E OPTIMIZACAO DE CODIGO

Isto poderia ser substitu por do x=100; y=100; o que resultaria na seguinte sequncia assembly mais simples: e LOAD R1,100 STORE R1,x STORE R1,y

1.3.12

Eliminao de Variveis Mortas ca a

Uma varivel est viva num certo ponto de um programa se o seu valor puder ainda ser subsea a quentemente usado. Caso contrrio a varivel est morta e deve ser eliminada. Por exemplo, a a a no seguinte cdigo z uma varivel morta: o e a x=y+z; x=y; Aps a remoo de z camos com o ca x=y;

1.4

Reduo da Sobrecarga nos Ciclos ca

E nos ciclos que se faz a maior parte do processamento e por isso que os devemos simplicar. e A sobrecarga dos ciclos advm em primeiro lugar do uso de variveis de controlo e de instrues e a co de teste e salto, por isso aqui que deve incidir a optimizao. Note-se que se reduzirmos o e ca n mero de saltos necessrios num determinado ciclo estamos tambm a melhorar o desempenho u a e do pipeline do processador, quando este exista.

1.4.1

Variveis de Controlo a

As variveis de controlo dos ciclos devem, sempre que poss a vel, serem pass veis de serem colocadas (caber) nos registos do processador, evitando, assim, vrias instrues-mquina de a co a sobrecarga das leituras escritas na memria. A linguagem C permite ao programador seleccio onar as variveis que so apenas armazenadas em registos. Podemos declar-las da seguinte a a a forma:

1.4. REDUCAO DA SOBRECARGA NOS CICLOS register int i; for(i=0;i<N;i++) ...

11

1.4.2

Desenrolar os Ciclos (Loop Unrolling)

Deve, em casos em que o n mero de iteraes seja pequeno para que se justique, desenrolar-se u co os ciclos, de modo a evitar a sobrecarga de controlo (overhead ). Para tal temos que duplicar (ou ntuplicar) as instrues do ciclo. Por exemplo: podemos substituir co for(i=0;i<6;i++) a[i]=a[i]*8; por a[0]=a[0]*8; a[1]=a[1]*8; a[2]=a[2]*8; a[3]=a[3]*8; a[4]=a[4]*8; a[5]=a[5]*8;

Claro que nem todos os ciclos podem ser desenrolados desta forma, mas para muitos poderemos efectuar a seguinte modicao. ca for(i=0;i<6;i++){ a[i]=a[i]*8; i++; a[i]=a[i]*8; } Aqui melhormos pois reduzimos no ciclo a sobrecarga de teste da varivel i para metade. a a

1.4.3

Fuso de Ciclos a

Consiste em fundir dois ciclos num unico ciclo, reduzindo a sobrecarga de controlo dos ciclos para metade. Por exemplo, o cdigo seguinte pode o for(i=0;i<1000;i++) x[i]=y[i]*8; for(i=0;i<1000;i++) z[i]=x[i]*y[i]; ser substitu por: do for(i=0;i<1000;i++){ x[i]=y[i]*8; z[i]=x[i]*y[i]; }

12

CAP ITULO 1. DESEMPENHO E OPTIMIZACAO DE CODIGO

1.5

Optimizao de Sistemas com Cache ca

Embora a velocidade dos processadores continue a aumentar, este aumento de velocidade no a tem sido acompanhado pelas memrias. Para reduzir esta discrepncia, a arquitectura dos o a computadores tem sofrido modicaes atravs da introduo de memrias cache. Estas tm co e ca o e como objectivo o de fornecer rapidamente ao processador os dados ou as pores de cdigo co o mais utilizadas, em vez de ser necessrio ir busc-los ` memria principal o que obriga a vrios a a a o a ciclos de espera por parte do processador. A optimizao fornecida pelas caches, baseia-se no ca princ de que um programa em execuo exibe sempre um certo n de localidade temporal pio ca vel e espacial. Estes princ pios consistem no seguinte: Localidade espacial: se um elemento de memria foi acedido num determinado instante, o existe uma tendncia para nos instantes seguintes, se efectuarem acessos a elementos de e memria vizinhos. o Localidade temporal: se um elemento de memria foi acedido num determinado instante, o existe uma tendncia para nos instantes seguintes, este voltar a ser acedido. e Podemos ento calcular os tempos mdios de acesso ` memria sabendo o tempo que demora a e a o um acesso ` memria principal se a informao pretendida j se encontrar na cache (Tca ), a a o ca a penalizao sofrida se este no se encontrar na cache (Tpen ) e a razo a que os acessos ` memria ca a a a o no so acelerados pela cache (rf ), atravs de a a e Tma = Tca + rf Tpen . Na expresso anterior, o unico valor que no xo rf podendo ser reduzido atravs da a a e e e optimizao do cdigo. Vejamos ento algumas tcnicas. ca o a e

1.5.1

Juntar Arrays

A tcnica consiste em juntar dois ou mais arrays, acedidos em conjunto num ciclo, numa unica e estrutura de dados. O objectivo aumentar a localidade espacial. Exemplo: e int val[SIZE]; int key[SIZE]; for(i=0;i<SIZE;i++){ val[i]=i; key[i]=i-1; } struct combo{ int val; int key; }; struct combo tab[SIZE]; for(i=0;i<SIZE;i++){ tab[i].val=i; tab[i].key=i-1; }

1.5. OPTIMIZACAO DE SISTEMAS COM CACHE

13

1.5.2

Troca da Ordem dos Ciclos

Em memria, as tabelas esto armazenadas por linhas, isto , a primeira linha armazenada o a e e integralmente e, depois, a segunda, etc. Assim, quando um ciclo acede a uma tabela, varrendo todas as linhas e colunas, deve para aumentar a localidade espacial, faz-lo ao longo das linhas e e no ao longo das colunas. Exemplo: a for(j=0;j<100;j++) for(i=0;i<5000;i++) x[i][j]=2*x[i][j]; for(i=0;i<5000;i++) for(j=0;j<100;j++) x[i][j]=2*x[i][j];

1.5.3

Fuso de Ciclos a

Esta tcnica j foi analisada na subseco 1.4.3. e a ca

1.5.4

Criao de Blocos ca

Por vezes quando efectuamos operaes sobre duas ou mais matrizes onde uma acedida por co e colunas e a outra por linhas, a troca dos ciclos referida acima no resolve o problema. Neste a caso a soluo consiste em efectuar as operaes em pequenos blocos das matrizes de forma a ca co que estes blocos caibam na cache do processador criando assim localidade temporal e espacial. Vejamos o caso da multiplicao de 2 matrizes N N. ca for(i=0;i<N;i++) for(j=0;j<N;j++){ x[i][j]=0; for(k=0;k<N;k++) x[i][j]+=y[i][k]*z[k][j]; } for(jj=0;jj<N;jj+=B) for(kk=0;kk<N;kk+=B) for(i=0;i<N;i++) for(j=jj;j<min(jj+B-1,N);j++){ soma=0; for(k=kk;k<min(kk+B-1,N);k++) soma+=y[i][k]*z[k][j]; x[i][j]+=soma; }

1.5.5

Outros Mtodos e

Outras tcnicas que se podem utilizar so as seguintes: e a 1. Juntar espacialmente os procedimentos ou funes mais utilizadas de forma a aumentar co a localidade espacial durante a referncia aos mesmos (em sistemas paginados ou com e cache). 2. Armazenar espacialmente prximos, elementos dos dados que so utilizados em conjunto o a de forma a aumentar a localidade das referncias (em sistemas paginados ou com cache). e

14

CAP ITULO 1. DESEMPENHO E OPTIMIZACAO DE CODIGO 3. Armazenar procedimentos e funes em sequncia de forma a que tanto as funes chaco e co mantes como as chamadas sejam carregadas simultaneamente (em sistemas paginados ou com cache).

1.6

Medio dos Tempos de Execuo ca ca

A medio do tempo de execuo de um programa ou de uma rotina uma operao importante ca ca e ca para qualquer sistema com requisitos de tempo-real. Podem, neste contexto, denir-se diversos tempos: Tempo de execuo: tempo total usado para realizar o programa ou rotina. Este tempo ca inclui acessos ao disco, ` memria, operaes de entrada/sa a o co da, etc. Tempo de CPU do utilizador (user CP U time): tempo durante o qual o programa ou rotina est efectivamente a executar na CPU. a Tempo de CPU do sistema, de latncia, ou de sobrecarga do sistema (system CP U e time): tempo gasto pelo sistema operativo em sobrecarga de controlo. Para medir estes tempos, podem ser usadas vrias tcnicas: a e Uma forma muito comum usar a chamada ao sistema time antes e depois da chamada da e rotina em questo ou no in e no m do programa em questo. O tempo efectivamente a cio a medido o tempo de execuo, incluindo o tempo de latncia e os tempos de espera por e ca e operaes de entrada/sa co da. A funo clock permite obter uma aproximao do tempo de processador usado pelo ca ca sistema. Outra forma de medir o tempo usar o programa time, chamando-o na linha de comandos e (UNIX) da seguinte forma /usr/bin/time <programa>. O programa colocado em e execuo e, no nal da execuo deste, a aplicao time fornece como resultado o tempo ca ca ca de execuo, o tempo de CPU do utilizador e o tempo de latncia (sobrecarga do sistema). ca e Fornece tambm a percentagem mdia de utilizao da CPU pelo programa (importante e e ca em sistemas multi-utilizador e multi-tarefa). Por ultimo, pode recorrer-se ` utilizao de rotinas prprias de medio do tempo forne a ca o ca cidas pelos sistemas de tempo-real. Temos como exemplo, no RTKernel [On Time, ], as rotinas RTKGetTime(), MarkTime(), ElapsedTime(), RTKSetTimerInterval(), entre outras.

Cap tulo 2 Escalonamento, Medio de Tempos e ca Introduo ao RTKernel ca


O escalonamento a operao de seleco do processo a colocar em execuo no processador, e ca ca ca a partir de uma la de processos prontos - ready - [Ara jo, 2000a]. u H diversas tcnicas de escalonamento mas normalmente seleccionado o processo pronto a e e o a executar com maior prioridade (1 critrio). Se houver mais do que um processo nestas e condies, ser usado um segundo critrio entre aqueles que passaram o critrio anterior. co a e e Os sistemas de tempo real (STR) podem ser classicados em: Sistemas preemptivos: que permitem que a execuo dos processos seja interrompida ca porque um processo de prioridade mais elevada entrou para a la dos processos prontos ou porque atingiu o limite da sua parcela de tempo (time slicing); Sistemas no-preemptivos: que no permitem a interrupo da execuo de nenhum a a ca ca processo at que este devolva o processador ao sistemas operativo. Este , ento, o e e a instante para o escalonador seleccionar um novo processo para execuo. ca

2.1

Atribuio de Prioridades por Razo Montona ca a o

Neste esquema de atribuio de prioridades, cada processo recebe uma prioridade unica em ca funo do seu per ca odo, seguindo a seguinte regra: quanto menor for o per odo de execuo ca (maior frequncia), maior a sua prioridade, isto , Ti < Tj Pi > Pj , sendo Ti o per e e e odo do processo (tempo m nimo entre activaes do processo i) e Pi a prioridade do mesmo processo. co Este esquema de atribuio de prioridades assume que as metas temporais so iguais aos ca a per odos de activao (Di = Ti ). No entanto, nem sempre isto se verica. ca

15

16

CAP ITULO 2. ESCALONAMENTO, MEDICAO DE TEMPOS E RTKERNEL

2.2

Teste da Possibilidade de Escalonamento Baseado no Factor de Utilizao ca

Para um esquema de atribuio de prioridades por razo montona poss testar a possibica a o e vel lidade de escalonamento para um modelo de processos peridicos. o Este teste consiste em vericar se a seguinte condio se verica: ca Ci N 21/N 1 Ti i=1 onde: Ci representa o pior tempo de clculo do processo i; a Ti representa o per odo do processo i; N representa o n mero de processos. u Este teste de escalonabilidade signica que a percentagem mxima de utilizao do procesa ca sador (soma dos factores de utilizao) no deve exceder um determinado limite. Este valor ca a limite depende do n mero de processos (peridicos) a executar e tende para 69.3% no limite u o quando N tende para innito. N Limite de utilizao (%) ca 1 100.0 2 82.8 3 78.0 4 75.7 5 74.3 10 71.8 E importante notar que este teste uma condio suciente mas no necessria. e ca a a
N

(Liu e Layland, 1973)

2.3

Atribuio de Prioridades por Ordenamento Montono ca o de Metas Temporais

Este esquema de atribuio de prioridades surge em oposio ao ordenamento por razo montona ca ca a o (ptimo para o caso em que as metas temporais so iguais aos per o a odos de activao). ca Neste caso, admite-se que as metas temporais so inferiores aos per a odos de activao e, ca quanto menor for a meta temporal de um processo, maior ser a sua prioridade. Temos o a seguinte: Di < Dj Pi > Pj .

2.4. CALCULO DOS TEMPOS DE RESPOSTA

17

2.4

Clculo dos Tempos de Resposta a

O tempo de resposta de um processo (tambm chamado tempo de execuo) o tempo que e ca e vai desde o instante em que foi activado at ao instante em que conclui as operaes relativas e co ao evento que o activou. O tempo de clculo de um processo (tambm chamado tempo de utilizador do processo) a e o tempo que o processo demora a executar no processador. e Usa-se a seguinte notao: ca Di - meta temporal do processo i; Ri - tempo de resposta do processo i; no pior dos casos o tempo de resposta igual ` e a meta temporal; Ci - pior tempo de clculo do processo i. a Um processo isolado ou um processo de mxima prioridade tm um tempo de resposta Ri a e igual ao seu tempo de clculo medido no pior caso, Ci . a Consideramos um conjunto de processos sujeitos a escalonamento preemptivo com prioridades atribu das por razo montona. a o Assim, o tempo de resposta de um processo i depende no s do seu pior tempo de a o clculo Ci mas tambm da interferncia sofrida devido ` existncia de processos com prioridade a e e a e superior. O tempo de resposta de um processo i ento dado pela seguinte expresso: e a a Ri = Ci +
jhp(i)

Ri Cj Tj

onde hp(i) representa o conjunto de processos com prioridade superior ` do processo i, a representa a funo tecto que devolve o menor valor inteiro que maior ou igual ao seu arguca e mento e a parcela correspondente ao somatrio representa a interferncia mxima ocorrida o e a durante a execuo do processo i. ca Esta equao de dif resoluo devido ` existncia de operaes de v ca e cil ca a e co rgula xa. Uma forma iterativa para resolver esta equao calcular a soma: ca e
n+1 w i = Ci + jhp(i) n wi Cj Tj

n+1 0 n n com wi = Ci , at que wi e = wi . Os valores de wi so monotonamente no-decrescentes. a a n Poder haver casos em que os valores de wi crescem indenidamente at innito. Este caso a e signica que o factor de utilizao do processador superior a 100% e que o processo no poder ca e a a ser escalonado para execuo, pois no cumprir a sua meta temporal. ca a a

18

CAP ITULO 2. ESCALONAMENTO, MEDICAO DE TEMPOS E RTKERNEL

2.5

Introduo ao RTKernel ca

Exemplo de programa em RTKernel [On Time, ]: #include #include #include #include #include "rtkernel.h" "Timer.h" "cpumoni.h" "RTKeybrd.h" "rttextio.h"

#define MAIN_PRIORITY 6 void task(void){ ----} void main(){ RTKernelInit(MAIN_PRIORITY); TimerInit(); CPUMoniInit(); RTKeybrdInit(); RTTextIOInit(); SetTimerInterval(0.001); RTKCreateTask(task,1,4096,"task"); RTGetCh(); }

2.5.1

Funes Mais Importantes co

RTKernelInit() - inicializa o RTKernel. RTKCreateTask() - cria uma tarefa. Os parmetros so um ponteiro para a funo com a a ca o cdigo da tarefa, a prioridade da tarefa, o tamanho em bytes da pilha e uma string com o o nome da tarefa. Devolve um ponteiro para a tarefa - TaskHandle. RTKSuspend() - desactiva uma tarefa. Usa como parmetro o TaskHandle da tarefa a a suspender.

2.5. INTRODUCAO AO RTKERNEL

19

RTKResume() - coloca a tarefa apontada pelo TaskHandle na la de processos prontos (caso este processo no esteja bloqueado ` espera de um recurso). a a RTKSetTime() - usada para atribuir o valor do relgio interno do RTKernel. A utilizao e o ca real das funes RTKDelay() e RTKDelayUntil() no afectada por esta funo. co a e ca RTKGetTime() - devolve o valor do relgio interno do RTKernel. o RTKDelay() - bloqueia a tarefa que a chamou por um per odo dado em argumento de entrada, permitindo que outras tarefas com a mesma ou menor prioridade possam executar. O tempo especicado em Ticks, isto , em interrupes do relgio. e e co o RTKDelayUntil() - especicado um instante de tempo a partir do qual a tarefa volta a e executar. At l, permanecer suspensa. O tempo especicado em Ticks. e a a e RTKSetIRQHandler() - especica qual a rotina de servio a uma determinada interrupo. c ca Os parmetros de entrada so o n mero do IRQ a ser usado e um IRQHandler. a a u RTKGetIRQHandler() - devolve um ponteiro para a rotina de servio ` interrupo dada c a ca como argumento de entrada. RTKEnableIRQ() e RTKDisableIRQ() - activa e desactiva o funcionamento de uma determinada interrupo. ca RTKDisableInterrupts() e RTKEnableInterrupts() - desactiva e activa as interrupes. co RTKPreemptionsON() e RTKPreemptionsOFF() - activa ou desactiva o funcionamento preemptivo.

2.5.2

Funes de Mdulos Adicionais co o

<timer.h> TimerInit() MarkTime() ElapsedTime() SetTimerInterval() Ticks() <rtkeybrd.h> RTKeybrdInit() KeyPressed() RTGetCh()

20

CAP ITULO 2. ESCALONAMENTO, MEDICAO DE TEMPOS E RTKERNEL PutChar() <rttextio.h> RTTextIOInit() ClearScreen() NewWindow() OpenWindow() CloseWindow() GotoXY() CursorXY() SetAttribute() SetScreenSize() SetVideoMode() WPutC() WPutS() WGetS() Wscanf() Wprintf()

Cap tulo 3 Aquisio de Medidas num PC ca Auxiliada por Interrupes co


3.1 Introduo ca

A maior parte dos dispositivos de entrada/sa existentes hoje no mercado e que se ligam da nos barramento (bus) do PC, se no a sua totalidade, esto preparados para assinalar ao a a processador, atravs de pedidos de interrupo [Ara jo, 2000b], a disponibilidade para transferir e ca u dados ou a concluso de uma operao previamente requerida. A existncia deste mecanismo a ca e de interrupo tem um forte impacto no desempenho de todo o sistema informtico, uma ca a vez que permite eliminar os per odos de espera activa. Por exemplo, aps ser pedida uma o converso analgica-digital existe um intervalo de tempo em que se deve esperar que seja a o conclu a converso. Se utilizarmos interrupes podemos fazer o pedido de converso e da a co a de seguida executar qualquer outra tarefa, pois sabe-se que quando a converso termina a e gerada uma interrupo indicando que a converso terminou. Isto de extrema importncia ca a e a em sistemas multiprogramados pois, usando interrupes, sempre que uma tarefa estiver ` co a espera da concluso de determinada operao, o processador pode ser utilizado para adiantar a ca o servio de outra tarefa. Quando terminar a operao poder ser reposta em execuo todas c ca a ca as tarefas dependentes dessa operao assim que ocorrer a interrupo (que indica a concluso ca ca a da operao). ca

3.2

O Mecanismo das Interrupes nos PCs co

Os processadores Intel da fam 80x86, que equipam a maioria dos PCs (computadores peslia soais), suportam 3 tipos de interrupes de hardware. (As interrupes de hardware no so co co a a geradas explicitamente por instrues do prprio processador): co o Internas - geradas pelo prprio processador por exemplo quando se efectua uma diviso o a por zero; 21

22CAP ITULO 3. AQUISICAO DE MEDIDAS NUM PC AUXILIADA POR INTERRUPCOES Linha de IRQ Interrupo ca IRQ0 IRQ1 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 IRQ8 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 0x08 0x09 0x0B 0x0C 0x0D 0x0E 0x0F 0x70 0x72 0x73 0x74 0x75 0x76 0x77 Dispositivo servido Timer Tick (relgio interno do PC) o Teclado COM2 COM1 LPT2 ou SoundBlaster ou Placa de rede Unidade de disquetes LPT1 Relgio de tempo real o Reservada Reservada Reservada Coprocessador aritmtico e Controlador de disco r gido Reservada

Tabela 3.1: IRQs e dispositivos a que esto (normalmente) associados nos PCs. a No mascarveis - geradas sempre que o pino NMI activado. Este tipo de interrupes a a e co serve essencialmente para assinalar erros cr ticos como erros de paridade da memria; o Mascarveis - geradas por dispositivos externos. Estas interrupes esto associadas `s a co a a linhas de pedido de interrupo (IRQ Interrupt ReQuest) do barramento (bus) dos PCs e ca passam sempre pelo PIC (Programmable Interrupt Controller , controlador de interrupes co programvel) que gere as prioridades atribu a das a estas e assinala ao processador a sua ocorrncia. e Nos PCs, cada interrupo tem uma rotina de servio associada, cujo endereo armazenado ca c c e num dos 256 vectores que se encontram nos primeiros 1024 bytes da memria RAM do PC. o Cada vez que no barramento (bus) uma das linhas de interrupo activada, o processador vai ca e a esta tabela de 256 vectores para ver qual o endereo (4 bytes) da rotina associada ao n mero c u da interrupo que foi gerada e executa essa rotina. ca As interrupes tm n co e veis de prioridade associados, sendo as prioridades mais elevadas para as interrupes internas, seguidas pelas externas (hardware) e por ultimo as interrupes co co de software. Tambm dentro do conjunto das interrupes de hardware (recebidas atravs do e co e controlador de interrupes) existem prioridades, o que quer dizer que se uma interrupo estiver co ca a ser servida, esta s pode ser interrompida por outra de prioridade superior. As prioridades o neste caso so decrescentes, i.e. a interrupo correspondente ao IRQ0 tem prioridade sobre a a ca interrupo associada ao IRQ1. A Tabela 3.1 relaciona as linhas de pedido de interrupo com ca ca o n mero de interrupo e dispositivo normalmente associado a cada uma destas. u ca

3.3. O 80X86 PERANTE OS PEDIDOS DE INTERRUPCAO

23

3.3

O 80x86 Perante os Pedidos de Interrupo ca

Todas as interrupes so tratadas pelo processador 80x86 da mesma forma, ou seja: guarda o co a contexto m nimo, salvando na pilha o registo de FLAGS, desactiva de seguida a ag de interrupo, guarda o endereo da instruo que iria executar de seguida se o pedido de interrupo ca c ca ca no tivesse ocorrido e salta para o endereo da rotina de servio ` interrupo que ocorreu. a c c a ca Aps servida a interrupo, a rotina correspondente termina com a instruo IRET (nome da o ca ca instruo assembler do 80x86) que leva a que o processador restaure o contexto anterior e ca continue a execuo normal. ca Em determinados instantes da execuo de um programa (especialmente se se tratar do ca sistema operativo) necessrio garantir que a execuo no interrompida e por isso existe um e a ca a e par de instrues que permite desactivar a resposta a qualquer pedido de interrupo externa co ca (CLI - CLear Interrupt ag) ou reactivar a resposta a estas (STI - SeT Interrupt ag). Cada perifrico utiliza, normalmente, uma linha de pedido de interrupo (IRQ) onde ase ca sinala ao PIC (Programmable Interrupt Controller , controlador de interrupes programvel) co a que necessita de ateno por parte do processador. Por seu lado o PIC assinala o facto ao proca cessador (se no estiver a ser servida nenhuma outra interrupo externa de maior prioridade) a ca atravs da linha INTR deste. Se a ag de interrupo do processador no estiver desactivada, e ca a este efectua a salvaguarda do contexto e assinala ao PIC a aceitao do pedido de interrupo. ca ca O PIC por sua vez fornece ao processador o n mero da interrupo correspondente atravs u ca e do barramento de dados, permitindo-lhe assim ir buscar o endereo da primeira instruo da c ca rotina de servio correspondente. c Aps o tratamento do evento que originou o pedido de interrupo, a rotina de servio o ca c ` interrupo dever indicar ao PIC que vai terminar enviando-lhe o cdigo EOI (End Of a ca a o Interrupt) antes de executar a instruo IRET de retorno ao funcionamento normal. ca

3.4

O Controlador de Interrupes (PIC) co

O controlador de interrupes dos PCs um integrado com um funcionamento compat com co e vel o i8259A [Intel, 1988] da Intel (o PIC original). Este PIC contm um conjunto de registos, e acess veis no espao de I/O do PC, atravs dos quais poss c e e vel efectuar a gesto do PIC e a das interrupes. Desse conjunto de registos do i8259A apenas dois nos interessam: o IMR co (Interrupt Mask Register ) e o ISR (Interrupt Service Register ). O IMR um registo que pode ser lido e escrito e permite denir quais as linhas de IRQ e activas (as que o PC autoriza a gerar interrupes). Neste registo cada bit corresponde a uma co linha de pedido de interrupo. Se o bit estiver a um (1) ou a zero (0) a interrupo encontra-se ca ca desactivada ou activada, respectivamente. Note que os PCs dispem de 2 dispositivos i8259A em cascata, pelo que os exemplos que o sero dados a seguir referem-se apenas ao primeiro i8259A, o que controla as linhas de IRQ0 a a

24CAP ITULO 3. AQUISICAO DE MEDIDAS NUM PC AUXILIADA POR INTERRUPCOES IRQ7 (as unicas linhas de interrupo que a placa de E/S PCL-818L [Advantech, 1995] possui). ca Supondo que um perifrico utiliza a linha IRQ5, que est dispon em muitos PCs (ver e a vel tabela 3.1), ento teremos de programar o i8259A para enviar ao processador pedidos de intera rupo recebidos atravs desta linha. Isso implica efectuar o seguinte conjunto de operaes: ca e co

z = L^ registo IMR (porto 0x21 do PC) e z = z & 0xDF; (0xDF=1101 1111b, bit 5 vai a zero) Escreve z no registo IMR Por seu lado o registo ISR permite saber quais os n veis de interrupo que esto a ser ca a servidos. Note-se que dado existir um mecanismo de prioridades, vrios pedidos de interrupo a ca podem estar com o seu servio em curso. Neste registo, cada IRQ mantm o bit correspondente c e activo at que seja enviado o cdigo de m de interrupo (EOI - End Of Interrupt) para o e o ca i8259A. A sinalizao do m de interrupo feita do seguinte modo para o primeiro controlador ca ca e de interrupes: co

... Escreve EOI (0x20) no porto 0x20 } /* fim da fun~o */ ca

3.5

Programao de Servios a Interrupo em Borland ca c ca C

Em Borland C, para denir uma funo como sendo uma rotina de servio ao um pedido de ca c interrupo, deve-se denir essa funo como sendo do tipo interrupt: ca ca

void interrupt funcao irq5() { ... cdigo da fun~o o ca ... } O uso do prexo interrupt garante que no in da funo o compilador coloca instrues cio ca co assembler para salvaguardar todos os registos do processador (FLAGS, AX, BX, CX, DX, ES, DS . . . ) e no m da funo so colocadas instrues assembler para restaurar os valores iniciais ca a co dos registos do processador e a instruo IRET. Todas estas operaes so essenciais para se ca co a fazer uma rotina de servio ` interrupo. c a ca

3.5. PROGRAMACAO DE SERVICOS A INTERRUPCAO EM BORLAND C

25

Note-se que uma funo convencional retorna atravs da instruo RET, o que no efectua ca e ca a o restauro completo do contexto que existia antes da interrupo ser servida. ca Uma rotina de servio a um pedido de interrupo dever obedecer ao seguinte: c ca a 1. As variveis locais devero ser declaradas utilizando o prexo static; a a 2. Sempre que forem utilizados ponteiros estes devero ser do tipo far. De preferncia no a e a utilizar ponteiros; 3. No se podem utilizar funes que impliquem chamadas ao sistema operativo, pois o DOS a co no reentrante. Exemplo de funes proibidas: printf, scanf, getch, . . . a e co Por uma questo de debugging, e para testar se uma funo de servio ` interrupo que ns a ca c a ca o crimos est de facto a ser chamada (uma vez que no podemos usar o printf para esse m), a a a pode-se utilizar um truque simples que consiste em modicar um caracter do cran acedendo e directamente ` memria de v a o deo modo texto) como no exemplo seguinte.
#include <dos.h> #include <stdio.h> // outportb(), inportb(), enable(), disable()

void interrupt (*func_ant)(); // declara~o de ponteiro para fun~o ca ca // guarda endereo da rotina que servia antes c // a interrup~o ca void interrupt rotina_interrupcao() { static char far * video; // obrigatrio o static !! o video = MK_FP(0xB800,0); (*video)++; ... // aqui colocamos o cdigo o ... outportb(0x20,0x20); } void instala_int(void interrupt (* faddr)(), int IRQ_num) { func_ant = getvect(IRQ_num+8); // endereo da interrup~o = 8+IRQ number (Tab.1) c ca disable(); // CLI - Pra todas as interrup~es a co setvect(IRQ_num, faddr); // muda a rotina de servio ao IRQ IRQ_num c z = inportb(0x21); // v^ como est a mscara de interrup~es e a a co outportb(0x21, z & (~(1<<IRQ_num)) ); // coloca o bit respectivo a zero enable(); // STI - Permite novamente as interrup~es co } // cria ponteiro para primeiro caracter do ecran // incrementa valor, ou seja se estava A passa a B para executar o servio que pretendemos c // Manda um EOI para o PIC

26CAP ITULO 3. AQUISICAO DE MEDIDAS NUM PC AUXILIADA POR INTERRUPCOES


void restaura_int(int IRQ_num){ disable(); // setvect(IRQ_num+8,func_ant); // z = inportb(0x21); // outportb(ox21, z | (1<<IRQ_num) enable(); // }

CLI - Pra todas as interrup~es a co o nmero da interrup~o IRQ num + 8 (tab1) u ca e v^ como estava a mscara e a ); // coloca bit respectivo a 1 (desliga interr.) STI - Permite novamente as interrup~es co

Neste exemplo so apresentadas 3 funes: uma que corresponde ` rotina de servio ` ina co a c a terrupo (rotina interrupcao), outra que serve para denir uma funo (primeiro parmetro) ca ca a como servio a uma interrupo gerada por um IRQ (IRQ num) guardando o vector de inc ca terrupo anterior e habilitando a respectiva interrupo de hardware no PIC, e por m uma ca ca funo que repe o vector de interrupo anterior e inibindo a interrupo no PIC. ca o ca ca

3.6

Utilizao do i8254 da PCL-818L para Gerar ca Cadncia das Converses A/D e o

E poss vel seleccionar 3 fontes poss veis para o disparo das converses analgico-digitais o o na placa PCL-818L [Advantech, 1995]: software, externa (no ser utilizada) e pacer . E a a exactamente sobre este ultimo caso que nos vamos debruar. c O integrado i8254 [Intel, 1994] basicamente um conjunto de 3 contadores que podem e funcionar de diversas formas. Os contadores 1 e 2 do i8254 esto ligados em cascata sendo a a sa do ultimo utilizada como fonte de disparo para o conversor A/D. Podemos ver ainda que da o primeiro contador recebe um sinal de relgio de 1 ou 10MHz. Se os contadores estiverem a o funcionar em modo RATE GENERATOR, ento ` sa de cada contador vamos ter pulsos a a da a uma taxa C vezes inferior ` do sinal de entrada. Esse valor C o valor com que iremos a e programar o contador e que corresponde a quantos pulsos de entrada devero ser recebidos a contados) antes de gerar um pulso na sa da. Como temos os 2 contadores C1 e C2 em cascata, a taxa de ocorrncia dos disparos do ADC depende, alm da frequncia do sinal ` entrada de e e e a C1 (1 a 10 MHz), dos valores com que programamos os 2 contadores. Ou seja, a frequncia de e entrada ser dividida por C1 C2. a O porto BASE + 15 da placa de medidas PCL-818L corresponde ao registo de controlo do i8254 existente na PCL-818L e aqui que denimos o modo de funcionamento do mesmo. e

3.7

Utilizao de Interrupes em RTKernel ca co

O RTKernel [On Time, ] contm funes prprias para a utilizao de interrupes, nomeadae co o ca co mente para indicar ao controlador o m da interrupo, ou a modicao da mscara do registo ca ca a IMR. O RTKernel permite tambm obter e/ou alterar os ponteiros para as rotinas de resposta e `s interrupes. Devero por este motivo ser utilizadas estas funes. a co a co

Bibliograa
[Advantech, 1994] Advantech. PCLD-8115 Wiring Terminal Board , September 1994. [Advantech, 1995] Advantech. PCL-818L High-Performance DAS Card with Programmable Gain, October 1995. [A. Laplante, 1997] Philip A. Laplante. Real-Time Systems Design and Analysis: An Engineers Handbook . IEEE Press, New York, USA, second ed., 1997. [Ara jo, 2000a] Rui Ara jo. Sistemas de Tempo Real: Apontamentos Tericos (Parte I). Deu u o partamento de Engenharia Electrotcnica e de Computadores, Universidade de Coimbra, e 2000a. [Ara jo, 2000b] Rui Ara jo. Sistemas de Tempo Real: Apontamentos Tericos (Parte II). Deu u o partamento de Engenharia Electrotcnica e de Computadores, Universidade de Coimbra, e 2000b. [Burns e Wellings, 1997] Alan Burns e Andy Wellings. Real-Time Systems and Programming Languages. Addison Wesley, Harlow, England, 1997. [Intel, 1988] Intel. 8259A Programmable Interrupt Controller (8259A/8259A-2), December 1988. [Intel, 1994] Intel. 82C54 CMOS Programmable Interval Timer , October 1994. [Martins, 2003] Emanuel Martins. Aquisio de Medidas num PC Auxiliada por Interrupes. ca co Texto de apoio da disciplina de Instrumentao Digital, Departamento de Engenharia ca Electrotcnica e de Computadores, Universidade de Coimbra, Coimbra, 2003. e [On Time, ] On Time. RTKernel 4.5 for C/C++ Users Manual, .

27

Anda mungkin juga menyukai