1 exameac0910vf sol1
-
Upload
education-for-all -
Category
Education
-
view
993 -
download
4
Transcript of 1 exameac0910vf sol1
Departamento de Engenharia Electrotécnica e de Computadores MEEC - Arquitectura de Computadores 2009/2010
Instituto Superior Técnico - Universidade Técnica de Lisboa
Nome: Nº:____________
1 de 12
ARQUITECTURA DE COMPUTADORES
1º EXAME
Ano Lectivo: 2009/2010 Data: 17 de Junho de 2010
Duração: 2h30
INFORMAÇÕES GERAIS
1. Identifique todas as folhas do enunciado com nome e nº.
2. Mantenha na secretária apenas a sua identificação e uma caneta (azul ou preta), não são aceites testes
ou exames realizados a lápis.
3. Responda no espaço delimitado a seguir a cada questão.
4. Utilize o verso da página, onde se encontra a pergunta, para rascunho ou para espaço adicional.
5. A não entrega do teste tem o mesmo significado da não comparência ao teste.
6. Justifique todas as respostas.
LISTA DE INSTRUÇÕES ASSEMBLY (P3)
Instrução Flags Afectadas Instrução Flags Afectadas ADD op1, op2 Flags: ZCNO
ADDC op1, op2 Flags: ZCNO
AND op1, op2 Flags: ZN
BR <deslocamento> Flags: ----
BR.cond <deslocamento> Flags: ----
CALL <endereço> Flags: ----
CALL.cond <endereço> Flags: ----
CLC Flags: C
CMC Flags: C
CMP op1, op2 Flags: ZCNO
COM op Flags: ZN
DEC op Flags: ZCNO
DIV op1, op2 Flags: ZCNO
DSI Flags: E
ENI Flags: E
INC op Flags: ZCNO
INT const Flags: ZCNOE
JMP <endereço> Flags: ----
JMP.cond <endereço> Flags: ----
MOV op1, op2 Flags: ----
MUL op1, op2 Flags: ZCNO
MVBH op1, op2 Flags: ----
MVBL op1, op2 Flags: ----
NEG op Flags: ZCNO
NOP Flags: ----
OR op1, op2 Flags: ZN
POP op Flags: ----
PUSH op Flags: ----
RET Flags: ----
RETN const Flags: ----
ROL op, const Flags: ZCN
ROLC op, const Flags: ZCN
ROR op, const Flags: ZCN
RORC op, const Flags: ZCN
RTI Flags: EZCNO
SHL op, const Flags: ZCN
SHLA op, const Flags: ZCNO
SHR op, const Flags: ZCN
SHRA op, const Flags: ZCNO
STC Flags: C
SUB op1, op2 Flags: ZCNO
SUBB op1, op2 Flags: ZCNO
TEST op1, op2 Flags: ZN
XCH op1, op2 Flags: ----
XOR op1, op2 Flags: ZN
Flags Condições (V/F) Transporte - C Zero – Z
Sinal – N Interrupção – E
Excesso - O Positivo - P
Transporte– C/NC Zero – Z/NZ
Sinal – N/NN Interrupção – I/NI
Excesso - O/NO Positivo - P/NP
2 de 12
I – Arquitectura de Ciclo Único
UC UP
Memória
Dados
DATA_OUT
DATA_IN End.
Unidade
Funcional
A B
FSUF
Flags
Const.
Função
Bits de
Estado
Unidade deArmazenamento
A
AA BA
DA
DATA
FSUA
Sel A Sel B
Sel D
Escrita de
Registos
B
Endereço
BUS de Dados
Memória de
Instruções
Controlo de Salto
Descodificador de
Instruções
Actualização PC
PL,JB,BC
SelD, SelA, SelB, FSUA,
MA,MB,FSUF,MW,
MWMUX A
0 1MA
Offset
Zero Fill
Bits de
Estado
DATA_OUT
MB
MUX B
0 1
MD
MUX D
0 1
MD,
DATA_IN
FWFW
FW
Tabela I: Micro-operações na UF e UA
DA, AA, BA FSUF FSUA Função Cod. Função Cod. Função Cod.
R0 00 A 000 Não Escreve 000
R1 01 A + B 001 (RD) = 0 001
R2 10 A - B 010 (RD) = DATA 010
R3 11 B + 1 011 (R1) (R2), (R2) (R1) 011
-B 100 (R1) (R3), (R3) (R1) 100
A – 1 101 (R2) (R3), (R3) (R2) 101
SR (B) 110 (R3) (R0), (R2) (R0), (R1) (R0) 110
NAND (A,B) 111 Não utilizado 111
Formatos das Instruções: (16 bits)
Endereçamento por Registo
OpCode DR SA SB
Endereçamento Imediato
OpCode DR SB Const*
Endereçamento Relativo
OpCode Offset
*Constante de 5 bits
Registos da UC:
PC – Registo de 16 bits
Flags: As flags são guardadas num registo na UF.
FW – Selecção das flags para escrita no registo
00 Não escreve 01 Guarda Z
10 Guarda N e Z
11 Guarda N, Z, C e V
Sinais de Controlo para a UC:
PL – (0- Incremento ou 1- Carregamento
Paralelo do PC)
JB – (0- Salto Incondicional ou 1-Salto Condicional)
BC – Selecção da Condição de Salto
00 – Salta se Z (Zero), 01 – Salta se NZ (No Zero),
10 – Salta se C (Carry),
11 – Salta se V (Overflow)
Sinais de Controlo para a Memória de Dados:
MW – (0- Não Escreve ou 1- Escreve) Escrita Síncrona e Leitura Assíncrona
Unidade de Armazenamento:
Contém 4 registos de 16 bits e implementa as
micro-operações descritas por FSUA (Tabela I).
Unidade Funcional:
Implementa as micro-operações descritas por
FSUF (Tabela I).
Tabela II: Instruções a Implementar OpCode Operação Descrição Bits de Estado
00000 INITO R0 (R3) (R0), (R2) (R0), (R1) (R0) não são alterados
00001 LDI DR, Const (DR) Const N, Z
00010 MOV DR, SA (DR) (SA) N, Z
00011 INC DR, SB (DR) (SB) + 1 N, Z, C, V 00100 DEC DR, SA (DR) (SA) - 1 N, Z, C, V
00101 ADD DR, SA, SB (DR) (SA) + (SB) N, Z, C, V 00110 SUB DR, SA, SB (DR) (SA) - (SB) N, Z, C, V 00111 LD DR, SA (DR) M[(SA)] não são alterados 01000 ST SA, SB M[(SA)] (SB) não são alterados
01001 NEG DR, SB (DR) - (SB) N, Z 01010 NAND DR, SA, SB (DR) (SA) NAND (SB) Z
01011 SR DR, SB (DR) SR (SB) Z 01100 INIT DR (DR) 0 não são alterados 01101 JMP Offset (PC) (PC) + Offset não são alterados 01110 BZ Offset Z: (PC) (PC) + Offset não são alterados 01111 BNZ Offset NZ: (PC) (PC) + Offset não são alterados 10000 SWAP12 (R1) (R2), (R2) (R1) não são alterados
10001 SWAP13 (R1) (R3), (R3) (R1) não são alterados
10010 SWAP23 (R2) (R3), (R3) (R2) não são alterados
Departamento de Engenharia Electrotécnica e de Computadores MEEC - Arquitectura de Computadores 2009/2010
Instituto Superior Técnico - Universidade Técnica de Lisboa
Nome: Nº:____________
3 de 12
1) [1,5 Val] Considere a Unidade de Armazenamento da Arquitectura de Ciclo Único. Determine para o caso do registo R1 a
função que deve ser aplicada à entrada de controlo (Load: 0 – não escreve, 1 – escreve), considerando que o registo R1 é
seleccionado pela saída SD1 de um descodificador em conjugação com a entrada FSUA.
FSUA LOAD FSUA0 SD0\FSUA2 FSUA1 "00" "01" "11" "10"
000 0 "00" 0 0 0 1
001 SD1 "01" 0 1 0 1
010 SD1 "11" 1 1 - 0
011 1 "10" 0 1 - 0
100 1
101 0
110 0
111 -
2) [1,5 Val] Considere a Unidade Funcional da Arquitectura de Ciclo Único. Admita que as operações aritméticas descritas
na tabela e seleccionadas por FSUF são implementadas com recurso a um somador completo de 16 bits e a alguma lógica
combinatória adicional para transformar os operandos A e B nas entradas do somador. Determine o bloco de lógica
necessário para transformar o bit menos significativo (B0) do operando B na respectiva entrada do somador completo (Y0).
FSUF Y0 FSUF0 A0\FSUF2 FSUF1 "00" "01" "11" "10"
000 0 "00" 0 0 - 0
001 B0 "01" 0 1 - 1
010 B0 "11" 1 1 - 1
011 B0 "10" 0 0 - 1
100 B0
101 1
110 -
111 -
3) [1 Val] Considere a Unidade de Controlo da Arquitectura de Ciclo Único. Admita que pretende implementar o
descodificador de instruções com recurso a uma memória. Determine a dimensão mínima da memória indicando a
estrutura de cada palavra de memória em função dos sinais de controlo e descreva o conteúdo das 2 primeiras palavras de
memória.
32 palavras (porque temos 19 instruções para descodificar) de 16 bits (porque temos 16 bits de sinais de controlo)
OPCODE PL JB BC FSUA MA MB FSUF FW MD MW
INITO R0 00000 0 - - - 1 1 0 - - - - - 0 0 - 0
LDI DR, Const 00001 0 - - - 0 1 0 0 - 0 0 0 1 0 0 0
onde aparecem indiferenças a memória pode ser programada com 0s ou 1s.
4 de 12
II – Arquitectura de Ciclo Múltiplo
UC UP
Memória
Dados
DATA_OUT
DATA_IN End.
Unidade
Funcional
A B
FSUF
Flags
Const
Função
Flags
Unidade deArmazenamento
A
AA BA
DA
DATA
RW
TD!!SA TD||SB
TD||DR RW
B
Endereço
BUS de Dados
MW
Offset
DATA_OUT
MB
MUX B
0 1
MD
MUX D
0 1
DATA_IN/INSTR
Instruções
e
MM
MUX M
0 1
MUXC
0 1MC
Memória de
Controlo
IR
OpCode DR SA SB
CAR
PCPI
PL
Extensão
Sinal
Zero Fill
Sinais de
Controlo
NA
IL
MUX SMS
Condição
DATA_IN/
INSTR
0 1 7
8
Formatos das Instruções: (16 bits)
OpCode DR SA SB
Unidade de Armazenamento:
8 registos de uso geral (16 bits)
3 registos auxiliaries (16 bits) para uso ao nível da
microprogramação.
Registos de Controlo:
PC – Registo de 16 bits
CAR – Registo de 8 bits
IR – Registo de 16 bits
Flags:
Aplicadas directamente às entradas do
MUX S.
Unidade Funcional:
Implementa as micro-operações descritas por FS (Tabela IV).
Tabela III: Sinais de Controlo para a UC MS MC IL PI PL
Operação Símbolo Código Selec. Símbolo Oper. Símbolo Oper. Símbolo Oper. Símbolo Código
CAR+1 CNT 000 NA NXA No Load NLI No Load NLP No Load NLP 0
Load CAR NXT 001 OpCode OPC Load In. LDI Inc. PC INP Load PC LDP 1
if C Load CAR,
else CAR+1
BC 010
if V Load CAR,
else CAR+1
BV 011
if Z Load CAR,
else CAR+1
BZ 100
if N Load CAR,
else CAR+1
BN 101
if NC Load CAR,
else CAR+1
BNC 110
if NZ Load CAR,
else CAR+1
BNZ 111
Tabela IV: Sinais de Controlo para a UP e Memória TD TA TB FS MB MD RW MM MW
Selec. Selec. Selec. Código Oper. Código Selec. Selec. Oper. Selec. Oper. Código
R[DR] R[SA] R[SB] 00 F = A 00000 Registo UF Não Escreve Endereço Não Escreve 0
R8 R8 R8 01 F = A+1 00001 Constante Data In Escreve PC Escreve 1
R9 R9 R9 10 F = A+B 00010
R10 R10 R10 11 F = A+B+1 00011
F = A-B 00100
F = A-B-1 00101
F = A-1 00110
F = -A 00111
F = A and B 01000
F = A or B 01010
F = A xor B 01100
F = not A 01110
F = B 10000
F = sr B 10100
F = sl B 11000
Departamento de Engenharia Electrotécnica e de Computadores MEEC - Arquitectura de Computadores 2009/2010
Instituto Superior Técnico - Universidade Técnica de Lisboa
Nome: Nº:____________
5 de 12
4) [1 Val] Considere a Arquitectura de Ciclo Múltiplo e o fluxograma que implementa a instrução XYZ DR, SA, SB.
Descreva sucintamente qual a operação realizada por esta instrução e determine o ganho de eficiência da solução
microprogramada vs a solução programada na mesma arquitectura, isto é, considerando o fluxograma apresentado excepto
as microinstruções IF e EX0.
?0000110IR
1
0
XYZ1 00000110
EX0 11000001
IF 11000000
PCMIR 1 PCPC
N ?
R[SA] - R[SB]
XYZ3
XYZ2
0
100000111
10000111
R[DR] R[SB]
R[DR] R[SA]
5) [3 Val] Apresente um fluxograma ASM correspondente à implementação de uma nova instrução descrita por:
[ ] [ ] ∑ [ ] [ ] [ ] ∑ [ ] [ ]
SUM?IR
1
0
SUM1
SUM2
EX0
IF
PCMIR 1 PCPC
SUM7
SUM8
SUM9
?
1
0SUM10
IF
IF
R DR 0
R8
R10
R DR D +
R8R9 -
R8R9 -
Z
R8 R8 + 1
SUM3
SUM4
SBRR9
1
0
1?N
0
1?N
R 9
SUM6
-R9
1
SUM5
R10 -1
R R R SA
R10
?N0
1
D-R RDR R
IF
SUM11
SUM12
RD MAX(R[SA], R[SB]) Ganho de eficiência:
1. Solução Microprogramada: 4 ciclos de relógio (embora tenha 5 estados!)
2. Solução Programada: Cada estado XYZ dá origem a uma instrução (CMP, MOV, MOV) e o teste é implementado com a instrução BN. A execução leva 3 ciclos com CMP, 3 ciclos com um MOV e 4 ciclos com o BR (na situação mais desfavorável) ou seja 10 ciclos de relógio.
3. Ganho = 10/4 = 2,5
R8: Limite inferior do somatório R9: Limite superior do somatório R10: Sinal a aplicar ao somatório
6 de 12
III – Arquitectura Pipeline
REGISTO DE ESTADO
RE
GIS
TO
S:
DE
CO
DE &
OP
ER
AN
D F
ET
CH
(D
OF
)
RE
GIS
TO
S:
INS
TR
UC
TIO
N F
ET
CH
(IF
) ASA
Result
BSB
UNIDADE
FUNCIONAL
(UF)
RE
GIS
TO
S:
EX
EC
UT
E/M
EM
OR
Y (
EX
/ME
M)
PC
BC
I
NextPCUNIDADE DE
DESCODIFICAÇÃO
DE INSTRUÇÕES
(UDI)
S F
UNIDADE DE ARMAZENAMENTO (UA)
DAD WR
Address
CLK
Flags
(Z,N,C,V)
MU
X D
Data_out
Data_in
FSFS
SHSH
MU
X B
MEMÓRIA
DE PROGRAMA
(INST_MEM)
Data
Endereço
UNIDADE DE
CONTROLO DE
SALTO (UCS)
I
MW
MBAA
JB
PL
AD
MW
MD
DA
WR
FS
SH
AA BA AB
KNS KNS
FW
FW
F
Instruction Fetch
(IF)
Decode and Operand
Fetch (DOF)
Execute / Memory
(EX/MEM)
Write Back
(WB)
MEMÓRIA
DE DADOS
(DATA_MEM)
KNSBA
CLK
Leitura assincrona dos registos Escrita sincrona nos registos
FS
BC
JB
PL
AD
F
Escrita sincrona das flags
Leitura assincrona
do registo de estado
Instruções de dados RTL Assembly Exemplo
NOP NOP NOP NOP
Move DR SA MOV RD,SA MOV R2,R1
Increment DR SA + 1 INC RD,SA INC R1,R2
Add DR SA + SB ADD RD,SA,SB ADD R2,R3,R4
Subtract DR SA – SB SUB RD,SA,SB SUB R0,R1,R2
Decrement DR SA – 1 DEC RD,SA DEC R1,R1
Negative DR - SA NEG DR,SA NEG R3,R2
NAND DR !(SA & RB) NAND DR,SA,SB NAND R3,R2,R5
Exclusive OR DR SA RB XOR DR,SA,SB XOR R3,R2,R5
NOT DR !SA NOT DR,SA NOT R3,R2
Arithmetic Shift Right DR SA >> OP ASR DR,SA,OP ASR R2,R3,31
Arithmetic Shift Left DR SA << OP ASL DR,SA,OP ASL R2,R3,31
Load Immediate DR OP LDI DR,OP LDI R0,10011b
Add Immediate DR SA + OP ADI DR,SA,OP ADI R0,R1,7h
Load DR M[SA] LD DR,SA LD R2,R5
Store M[SA] SB ST SA,SB ST R5,R2
Instruções de dados RTL Assembler Exemplo
Branch on Zero if S(Z)=1 (1) PC PC + AD BZ AD BZ -27
Branch on Non Zero if S(Z)=0 (1) PC PC + AD BNZ AD BNZ 22
Branch on Negative if S(N)=1 (1) PC PC + AD BN AD BN 143
Branch on Non Negative if S(N)=0 (1) PC PC + AD BNN AD BNN 32
Branch on Overflow if S(V)=1 (1) PC PC + AD BV AD BV 2
Jump PC PC + AD JMP AD JMP -4
(1) Else: PC PC +1
Departamento de Engenharia Electrotécnica e de Computadores MEEC - Arquitectura de Computadores 2009/2010
Instituto Superior Técnico - Universidade Técnica de Lisboa
Nome: Nº:____________
7 de 12
6) [1 Val] Considere a arquitectura Pipeline apresentada. Indique qual o limite máximo do ganho, em termos de tempo de
execução, quando comparado com a arquitectura equivalente de ciclo único e refira-se aos factores que podem contribuir
para limitar esse ganho.
Idealmente o limite máximo do ganho será 4 dado que com 4 andares teremos 4 instruções simultaneamente a serem processadas, contudo, na prática
as unidades de interligação entre andares (registos) e a possibilidade de ocorrência de
conflitos de dados e de
conflitos de controlo levam a uma redução do ganho.
7) [3 Val] Admitindo que se pretende executar o seguinte troço de código na Arquitectura Pipeline, (a) indique todas as
situações correspondentes a conflitos de dados e a conflitos de controlo. (b) Resolva esses conflitos (dados e controlo) por
software e determine o limite do ganho de eficiência (variando R4 entre -100 e 100) ao executar o código na Arquitectura
Pipeline vs na Arquitectura Convencional, por simplicidade considere que o sinal de relógio do Pipeline é 4 vezes mais
rápido que o da Arquitectura Convencional. (c) Determine como se alterariam os resultados se os conflitos de dados
fossem resolvidos por forwarding.
Parte I: Parte II: LDI R1, 0 LDI R2, 5 LDI R3, 1 LDI R4, -100 BNN LOOP1 (Flags in EX CONFLITO DE CONTROLO) NEG R3, R3 NEG R4, R4 LOOP1: DEC R4, R4 (NEG R4… in WB, DEC R4… in EXE C. DE DADOS) BN GETOUT (Flags in EX CONFLITO DE CONTROLO) ADD R1, R1, R2 JMP LOOP1 GETOUT: MOV R3, R3 BNN END (Flags in EX CONFLITO DE CONTROLO) NEG R1, R1 END: NOP 413 Ciclos na Arquitectura Convencional
N Ciclos (Parte II)= 413 + 4 (NOPs)+ 101(NOPs)=518, N Ciclos (Parte III)= 413 + 2 (NOPs) + 101(NOPs) = 516 TEXEC Ciclo Único = 413*TCLK
TEXEC Pipeline I = 518*TCLK’ = 518*TCLK/4 = 104,5*TCLK
no caso do forwarding, retiram-se 2 NOPs devido conflitos de dados
LDI R1, 0 LDI R2, 5 LDI R3, 1 LDI R4, -100 NOP BNN LOOP1 NEG R3, R3 NEG R4, R4 NOP NOP LOOP1: DEC R4, R4 NOP BN GETOUT ADD R1, R1, R2 JMP LOOP1 GETOUT: MOV R3, R3 NOP BNN END NEG R1, R1 END: NOP
TEXEC Pipeline I = 516*TCLK’ = 516*TCLK/4 = 104*TCLK
Nota: No caso do pipeline podem considerer-se 3 ciclos adicionais para garantir que a última instrução é concluída.
8 de 12
Departamento de Engenharia Electrotécnica e de Computadores MEEC - Arquitectura de Computadores 2009/2010
Instituto Superior Técnico - Universidade Técnica de Lisboa
Nome: Nº:____________
9 de 12
IV – Memória Cache
Admita a execução da rotina apresentada, numa arquitectura com as seguintes características: (1) cada instrução é codificada
em palavras de 32 bits; (2) a Memória Cache tem capacidade de armazenamento de 8 palavras de 32 bits e um tempo de
acesso de 10 ns; (3) a Memória Principal tem um tempo de acesso de 100ns; (4) Considere que a política de substituição,
quando necessária, corresponde a substituir em primeiro lugar a instrução mais antiga na Cache; (5) Os mapeamentos a
considerar são MAP1 (MAP1 – Mapeamento Associativo-Directo com uma Cache de 4 linhas e 2 colunas) e MAP2 (Directo
com uma Cache de 4 linhas e carregamento de 2 palavras de cada vez).
8) [2,5 Val] Complete a tabela, para os 2 tipos de mapeamento em análise, preenchendo as colunas relativas ao número de
falhas (MISS) e número de leituras da Cache (HIT), e determine para cada caso a “Hit Rate” e o tempo médio de acesso a
cada instrução.
N. MISS N. HIT N. MISS N. HIT
…
80 1000 0000 LDI R1, 0 1 - 1 -
84 1000 0100 LDI R2, 5 1 - - 1
88 1000 1000 LDI R3, 1 1 - 1 -
8C 1000 1100 LDI R4, -10 1 - - 1
90 1001 0000 BNN LOOP1 1 - 1 -
94 1001 0100 NEG R3, R3 1 - - 1
98 1001 1000 NEG R4, R4 1 - 1 -
9C 1001 1100 LOOP1: DEC R4, R4 1 10 - 11
A0 1010 0000 BN GETOUT 1 10 1 10
A4 1010 0100 ADD R1, R1, R2 1 9 - 10
A8 1010 1000 JMP LOOP1 1 9 1 9
AC 1010 1100 GETOUT: MOV R3, R3 1 - - 1
B0 1011 0000 BNN END 1 - 1 -
B4 1011 0100 NEG R1, R1 1 - - 1
B8 1011 1000 END: NOP 1 - 1 -
…
Map 1 Map 2End.
Hex.
End. Binário Código
9) [1,5 Val] Indique qual o conteúdo da Cache, para os 2 mapeamentos, após a execução da instrução: “END: NOP”.
MAP1 MAP2
Index Label Instrução Label Instrução Index Label Instrução
00 1010 BN GETOUT 1011 BNN END 00 101 BN GETOUT
01 1010 ADD R1, 1011 NEG R1, ADD R1, R1, R2
10 1010 JMP LOOP1 1011 END: NOP 01 101 JMP LOOP1
11 1010 GETOUT: MOV R3, 1001 LOOP1: DEC R4, R4 GETOUT: MOV R3, R3
10 101 BNN END
NEG R1, R1
11 101 END: NOP
…
Map1: Map2: Bits 1 e 0 constantes Bits 3 e 2 index Bits 7 a 4 label ou etiqueta NHits = 38, NMiss = 15, HitRate = 38/53 Tmédio (em ns) = (38*10+15*100)/53
Bits 1 e 0 constantes Bit 2 Word Bits 4 e 3 index Bits 7 a 5 label ou etiqueta NHits = 45, NMiss = 8, HitRate = 45/53 Tmédio (em ns) = (45*10+8*100)/53
10 de 12
Departamento de Engenharia Electrotécnica e de Computadores MEEC - Arquitectura de Computadores 2009/2010
Instituto Superior Técnico - Universidade Técnica de Lisboa
Nome: Nº:____________
11 de 12
V – Assembly
10) [1 Val] Analise o seguinte troço de código e determine qual a dimensão mínima do STACK para garantir uma boa
execução, tendo em conta apenas a rotina delay. Indique, para o caso da inicialização de R1 realizada na linha 00F0h o
conteúdo do STACK quando este tem o maior número de posições preenchidas (assuma que inicialmente o STACK se
encontra vazio)
End. Hex Código
…
00F0h MOV R1, 2004h00F2h CALL delay
00F4h XOR R1, R1
…0200h delay: AND R1, 00FFh
0202h DEC R1
0204h CALL.NZ delay0205h RET
…
11) [3 Val] Considere um sistema de rega, numa estufa de morangos, onde foram colocados sensores para medir a humidade
do solo e assim condicionar a activação dos aspersores de rega. Admita que os sensores de humidade assumem valores
entre 0 (solo completamente seco) e 20 (solo extremamente húmido).
Por simplicidade, considere que tem apenas 4 sensores de humidade
(SH0 a SH3), cada um associado a uma diferente zona de aspersores
(AP0 a AP3). Mais, os sensores de humidade possuem apenas um
porto de leitura (cujo valor, inteiro, pertence está entre 0 e 20), os
aspersores tem porto de leitura para indicar qual o estado actual (0 -
desligado e 1 – ligado) e porto de escrita para permitir a sua activação
ou desactivação (0 – desactivar e 1 – activar).
Sem & Asp Porto Leitura Porto Escrita
SH0 FF00h ----
SH1 FF01h ----
SH2 FF02h ----SH3 FF03h ----AP0 FF10h FF11hAP1 FF20h FF21h
AP2 FF30h FF31hAP3 FF40h FF41h
a) [1,5 Val] Admita que se pretende controlar o sistema de rega com recurso a um sistema de polling. Escreva o código
da rotina que deve verificar o estado dos 4 sensores e activar, os respectivos aspersores, se o valor cair abaixo de 5 ou
desactivar se o valor subir acima de 15.
A rotina deve consistir num loop onde é realizada a leitura dos vários sensores, comparar com o valor anterior (para detectar
entrada na zona de activação) e activação ou desactivação dos aspersores.
Dimensão mínima do STACK deve ser 255, devido à “filtragem” realizada pelo AND.
O conteúdo do STACK deverá ser (começando no topo do STACK): 00F4h , devido ao CALL delay 0205h , devido ao CALL.NZ delay 0205h , devido ao CALL.NZ delay 0205h , devido ao CALL.NZ delay
12 de 12
b) [1,5 Val] Admita que os sensores de humidade comunicam com o processador através do mecanismo de interrupções
(utilizando respectivamente as interrupções de 0 a 3). A interrupção surge sempre que o valor cair abaixo de 5 ou
subir acima de 15. Escreva a rotina de interrupção associada ao sensor SH0 e o conjunto de instruções que permite
proceder às inicializações necessárias ao seu atendimento.
A rotina de interrupção deve consistir na leitura do sensor SH0 e em função do seu valor (<5 ou >15) activar ou desactivar o
aspersor AP0.
Devem ainda incluir a programação da TVI na posição 0 e a inicialização da máscara das interrupções.