Вы находитесь на странице: 1из 21

P2.

1 ESPECIFICACIN FUNCIONAL
Llus Ters
Instituto de Microelectrnica de Barcelona, IMB-CNM (CSIC)
Universitat Autnoma de Barcelona (UAB)
1TIPOSDEINSTRUCCIONES P2.1

Sehan definido 8tipos deinstruccin;


Paracada instruccin =>cdigo,lista deparmetros:

Cdigo ylista deparmetros Operacin


(ASSIGN_VALUE,k,A) Xk :=A;
(DATA_INPUT,k,j) Xk :=INj;
(DATA_OUTPUT,i,j) OUTi :=Xj;
(OUTPUT_VALUE,i,A) OUTi :=A,
(OPERATION,i, j, k, f) Xk :=f(Xi,Xj);
(JUMP,N) gotoN;
(JUMP_POS,i,N) ifXi>0gotoN;
(JUMP_NEG,i,N) ifXi<0gotoN;

(OPERATION,i, j, k, f):f es unidentificador deuna operacion (suma,resta,)que uno delosrecursos de


2
clculo puede ejecutar (sedefinir ms adelante)
Ejemplo:sistema decontroldetemperatura.
P2.1
0:ASSIGN_VALUE,5,10 (X5:=10)
1:DATA_INPUT,0,0 (X0:=IN0)
2:DATA_INPUT,1,1 (X1:=IN1)
3:OPERATION,4,0,1,subtract (X4:=X0 X1)
4:JUMP_NEG,4,7 (ifX4<0thengoto7)
5:JUMP_POS,4,9 (ifX4>0thengoto9)
6:JUMP,10 (goto10)
7:OUTPUT_VALUE,0,1 (OUT0:=1)
8:JUMP,10 (goto10)
9:OUTPUT_VALUE,0,0 (OUT0:=0)
10:DATA_INPUT,3,2 (X3:=IN2)
11:DATA_INPUT,2,2 (X2:=IN2)
12:OPERATION,4,2,3,subtract (X4:=X2 X3)
13:OPERATION,4,4,5,subtract (X4:=X4 X5)
14:JUMP_NEG,4,11 (ifX4<0thengoto11)
15:JUMP,1 (goto1)
3
2ESPECIFICACINFUNCIONAL P2.1
Sistemadigitalaimplementar:

Ocho entradasdedatos IN(0),IN(1),,IN(7)de8bits;


Ocho salidas dedatos OUT(0),OUT(1),,OUT(7)de8bits;
Una entradainstruccin (instruction) cuyo valorcorresponde auno delosocho tipos
(ASSIGN_VALUE,i,A),(DATA_INPUT,i,j),ysus correspondientes parmetros;
Una salida nmero (number) que selecciona lasiguiente instruccin aejecutar.

nmero instruccin

programa
4
Comentario:
P2.1

Especificacin inicial (semana 1): operaciones


instruccion siguiente definida por un
circuito/programador externo en
funcion decierta condiciones
internas
instrucciones condiciones

Especificacin modificada:
Nmero delainstructionsiguiente
calculado internamente por el
procesador;
programa almacenado en memoria.

(=arcquitectura vonNeumann)
5
Algoritmo:especificacin funcional
number:=0;
P2.1
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j);number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A;number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=> X:vectordeclarado previamente.
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif; Nmero decomponentes X:adefinir
endcase; posteriormente.
endloop; Cada componente Xes unnmero de8bits.
6
(Ejercicio) P2.1
Asumimos que:

X es unconjunto de16componentes ycada uno puede almacenar unnmero de8bits,

Hayhasta8puertos deentraday8puertos desalida cada uno de8bits,

Elnmero mximo deinstrucciones deunprograma es 256,

Solohay2operaciones distintas paraf:suma yresta.

Cuantas instrucciones distintas sepueden definir?

7
(Solucin) P2.1

(ASSIGN_VALUE,k,A) Xk :=A; 16256=4096


(DATA_INPUT,k,j) Xk :=INj; 168=128
(DATA_OUTPUT,i,j) OUTi :=Xj; 816=128
(OUTPUT_VALUE,i,A) OUTi :=A, 8256=2048
(OPERATION,i, j, k, f) Xk :=f(Xi,Xj); 1616162=8192
(JUMP,N) gotoN; 256
(JUMP_POS,i,N) ifXi>0gotoN; 16256=4096
(JUMP_NEG,i,N) ifXi<0gotoN; 16256=4096

4096+128+128+2048+8192+256+4096+4096=23,040 instrucciones diferentes.

(214 <23,040<215)
8
RESUMEN P2.1

Sehadefinido elconjunto deinstrucciones delprocesador;

Hemos introducido laarquitectura vonNeumann;

Sehadetallado laespecificacin funcional delprocesador.

9
P2.1

10
P2.2 ESPECIFICACIN ESTRUCTURAL
Llus Ters
Instituto de Microelectrnica de Barcelona, IMB-CNM (CSIC)
Universitat Autnoma de Barcelona (UAB)
1DIAGRAMADEBLOQUES P2.2
number:=0;
loop Entradasexternas:
caseprogram(number)is IN0,IN1,,IN7;
when(ASSIGN_VALUE,k,A)=>
X(k):=A;number:=number+1; instruction;
when(DATA_INPUT,k,j)=> Salidas externas:
X(k):=IN(j);number:=number+1; OUT0,OUT1,,OUT7;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j);number:=number+1; number;
when(OUTPUT_VALUE,i,A)=> Datos internos:X;
OUT(i):=A;number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=> Transferencias dedatos:
number:=N; OUT(i)<=X(j)oA;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif; number <=(number +1)oN;
when(JUMP_NEG,i,N)=> X(k)<=A oIN(j) of;
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop; operaciones:f(X(i),X(j)).
12
DATOSINTERNOS P2.2
Entradasexternas:
IN0,IN1,,IN7;
instruction;
Salidas externas:
OUT0,OUT1,,OUT7;
number;
Datos internos:X;

Transferencias dedatos:
OUT(i)<=X(j)orA;
number <=(number +1)orN;
X(k)<=A orIN(j) orf;

operaciones:f(X(i),X(j)).
13
TRANSFERENCIASDEDATOSyOPERACIONES P2.2
Entradasexternas:
IN0,IN1,,IN7;
instruction;
Salidas externas:
OUT0,OUT1,,OUT7;
number;
Datos internos:X;

Transferencias dedatos:
OUT(i)<=X(j)orA;
number <=(number +1)orN;
X(k)<=A orIN(j) orf;

operaciones:f(X(i),X(j)).
14
DIAGRAMADEBLOQUES P2.2

seleccinentrada seleccinsalida

bancode programa
registros
{X(i)}

go to

recursosde
clculo

15
INSTRUCCIONES(especificacionesadicionales) P2.2
Cdigo ylista deparmetros Operacin
(ASSIGN_VALUE,k,A) Xk :=A;
(DATA_INPUT,k,j) Xk :=INj;
(DATA_OUTPUT,i,j) OUTi :=Xj;
(OUTPUT_VALUE,i,A) OUTi :=A,
(OPERATION,i, j, k, f) Xk :=f(Xi,Xj);
(JUMP,N) gotoN;
(JUMP_POS,i,N) ifXi>0gotoN;
(JUMP_NEG,i,N) ifXi<0gotoN;

Solodosoperaciones f:+y;
Bancoderegistros:16registros (i,j, k: sonnmeros de4bits);
nmero mximo deinstrucciones:256 (N es unnmero de8bits).

Lacodificacin deinstrucciones sedefinir ms adelante.


16
2DESCRIPCINDELOSBLOQUES P2.2
2.1SELECCINDEENTRADA number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A; number:=number+1;
seleccinentrada seleccinsalida
when(DATA_INPUT,k,j)=>
X(k):=IN(j); number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j);number:=number+1;
bancode
registros
when(OUTPUT_VALUE,i,A)=>
{X(i)}
OUT(i):=A;number:=number+1;
when(OPERATION,i,j,k,f)=>
go to X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
recursosde
clculo
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
17
(seleccin deentrada) P2.2
number:=0;
loop
seleccinentrada caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A; number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j); number:=number+1;
when(DATA_OUTPUT,i,j)=>
Especificacin funcional OUT(i):=X(j);number:=number+1;
loop when(OUTPUT_VALUE,i,A)=>
caseinstructionis OUT(i):=A;number:=number+1;
when(ASSIGN_VALUE,k,A)=> when(OPERATION,i,j,k,f)=>
to_reg :=A; X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
when(DATA_INPUT,k,j)=>
number:=N;
to_reg :=IN(j); when(JUMP_POS,i,N)=>
when(OPERATION,i,j,k,f)=> ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
to_reg :=result; when(JUMP_NEG,i,N)=>
whenothers=> ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
to_reg :=don'tcare; endcase;
endloop;
endcase;
endloop; 18
P2.2
2.2SELECCINDESALIDA number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j)=>
seleccinentrada seleccinsalida
X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j); number:=number+1;
when(OUTPUT_VALUE,i,A)=>
bancode
registros
OUT(i):=A; number:=number+1;
{X(i)}
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
go to when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
recursosde
clculo
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
19
(seleccin desalida) P2.2
number:=0;
loop
seleccinsalida
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j)=>
Especificacin funcional OUT(i):=X(j); number:=number+1;
loop when(OUTPUT_VALUE,i,A)=>
caseprogram(number)is OUT(i):=A; number:=number+1;
when(DATA_OUTPUT,i,j)=> when(OPERATION,i,j,k,f)=>
OUT(i):=reg; X(k):=f(X(i),X(j));number:=number+1;
when(OUTPUT_VALUE,i,A)=> when(JUMP,N)=>
number:=N;
OUT(i):=A; when(JUMP_POS,i,N)=>
whenothers=> ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
OUT(i):=OUT(i); when(JUMP_NEG,i,N)=>
endcase; ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endloop; endcase;
Salida registrada endloop;
(como unelemento dememoria)
20
RESUMEN P2.2

Descripcin estructural =diagrama debloques basado en


Datos internos,
Transferencias dedatos,
Operaciones.

Descripcin funcional delosbloques:


Seleccin deentrada,
Seleccin desalida.

21

Вам также может понравиться