131 Pasos

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 8

UNIVERSIDAD MAYOR DE SAN ANDRÉS

FACULTAD DE INGENIERÍA
INGENIERÍA ELECTRÓNICA

NOMBRES Y APELLIDOS: UNIV. JOSE LUIS VARGAS SUMI


MATERIA: ORGANIZACIÓN Y DISEÑO DE COMPUTADORAS ETN-825
DOCENTE: ING. JORGE LEÓN GÓMEZ

MODULE: SIC
MEMORY: AC[18]; MD[18]; PC[13]; IR[18]; IA[13]; IB[13]; lf; M[8192,18]; intf; enif; INTR[8];
MR[8]; CSR[12]; BCR[4]; BIOR[4]; CC[2]; BWC[13]; DMADR[13]; DMLWR[13]; dmio; dmareq;
cpureq; MA[13];
INPUTS: start; ready; datavalid; accept; INTLINE[8]; BCRDY[4]; busy; DATAOUT[18]; dmar
OUTPUTS: BUSRDY[4]; csrdy; ready; datavalid; accept; bufend; read; write; MEMADDR[13];
DATAIN[18]; dmaval; dmacon; dmaend
BUSES: ABUS[18]; BBUS[18];OBUS[19]; MEMADBUS[13]
COMBUSES: IOBUS[18]; CSBUS[12]; DMBUS[18]; dmacpt
LABEL: mengnt = CSL121

1. →(start )/(1)//Es el estado de reinicio o bien espera una señal de inicio


1. NO DELAY //Proporciona la rama paralela a la secuencia principal y la secuencia DMA
→(2,120)
2. →(∨/BCR)/( 90)
2−1. →(intf )/(60)
2−2. NO DELAY //es el punto de convergencia después de la finalización de todas las secuencias de
instrucciones y proporciona un conjunto SIN DEMORA de “cpureq”, que solicita memoria para el ciclo de
búsqueda.
cpureq ← 1
2−3. → memgnt /(2−3) //la señal de concesión de memoria, “memgnt”, que indica que la memoria está
disponible.
2−4. MEMABUS =PC ; read=1
→ SYN ( busy ) /( 2−5)
3. null
→ SYN ( busy ) /(3)
4. NO DELAY
OBUS=0 , DATAOUT ;
IR ← OBUS1 :18
cpureq ← 0
// El paso 4 borra “epreg” para notificar a la secuencia DMA que la memoria está disponible
5. →(IR 0 ⋀ IR 1 ⋀ IR2 )/(25)
6. NO DELAY
→( ( IR 3 ⋀ IR 4 ) , ( IR 3 ⋀ IR 4 ) , IR3 )/(13,7,10)
7. NO DELAY
cpureq ← 1
7−1.→ memgnt /(7−1)

1
7−2. MEMABUS =IR 5 : 17 ; read=1
→ SYN ( busy ) /(7−2)
8. null
→ SYN ( busy ) /(8)
9. NO DELAY
OBUS=0 , DATAOUT ;
IR 5: 17 ← OBUS6 : 18
cpureq ← 0
→(13)
10. NO DELAY
→(IR 4 )/(12)
11. IR 5 : 17 ← ADD( IR 5 : 17 ; IA)
→(13)
12. IR 5 : 17 ← ADD( IR 5 : 17 ; IB)
13. NO DELAY
→(IR 0 ⋀ IR1 )/(15)
14. PC ← IR5 : 17
→(2)

15. NO DELAY
cpureq ← 1
15−1.→ memgnt /(15−1)
→(IR 0)/( 21)
15−2. MEMABUS=IR 5 :17 ; read=1
→ SYN ( busy ) /(15−2)
15−3.null
→ SYN ( busy ) /(15−3)
16. NO DELAY
OBUS=0 , DATAOUT ;
MD ← OBUS1 :18
cpureq ← 0
→(IR 1 ⋀ IR 2 )/(18)
17. AC ← ( MD ! ( MD ∧ AC ) ! ( ADD1 : 18 ( MD ; AC ) ) )∗( ( IR 1 ⋀ IR 2) , ( IR 1 ⋀ IR2 ) ,(IR 1 ⋀ IR2 ) )
lf ∗(IR 1 ⋀ IR 2)← ADD0 ( MD ; AC )
→(24)
18. MD ← INC( MD)
19. NO DELAY
cpureq ← 1
19−1.→ memgnt /(19−1)
19−2. MEMABUS=IR 5 :17 ; DATAIN =MD
write=1
→ SYN ( busy ) /(19−2)
19−3.cpureq ← 0
→(∨/ MD)/(24)
20. PC ← INC( PC)

2
→(24)
21. MD ← ( ( AC ) ! ( 5 ⊺ 0 , INC ( PC ) ) )∗(IR2 , IR2 )
22. MEMABUS=IR5 : 17 ; DATAIN =MD
write=1
→ SYN ( busy ) /( 22)
22−1. cpureq ← 0
→(IR 2)/(24 )

23. PC ← IR5 : 17
24. PC ← INC( PC)
→(2)

25. NO DELAY
→(IR 3)/(50)
26. NO DELAY
→(IR 5)/(30)
27. NO DELAY
→( ( IR 6 ⋀ IR7 ) ,( IR6 ⋀ IR 7 ))/(1 , 29)
(No Step 28)
29. AC∗( IR 8 ∨ IR9 ) ←( ( 18 ⊺ 0 ) !(18 ⊺0) ! AC )
¿(( IR 8 ⋀ IR9 ) ,( IR8 ⋀ IR 9 ),(IR 8 ⋀ IR 9));
If ∗IR6 ← 0; If ∗IR 7 ← 1
→ ( 33 )
30. →(IR4 )/( 32) NO DELAY
31. If , AC ← AC , If
→(33)
32. If , AC ← AC 17 , If , AC 0: 16
33. NO DELAY
→( IR 10 ¿/(40)
34. NO DELAY
→¿
( IR ¿ ¿11 ⋀ IR 12) ¿/( 35 ,37 , 38 , 39)
35. NO DELAY
→(IR 13 ⋀ If )/(43)
36. PC ← INC (PC)
→(24)
37. AC ← ( 5⊺ 0 , IA ! 5 ⊺ 0 , IB )∗( IR13 , IR 13)
→( 43)
38. IA ←( ( AC 5 : 17 ) ! ( INC ( IA )))∗(IR13 , IR 13)
→( 43)
39. IB ←( ( AC 5 :17 ) !( INC ( IB )))∗(IR13 , IR 13)
→( 43)

3
40. NO DELAY
→( IR 4 ¿/(42)
41. If , AC ← AC , If
→( 43)
42. If , AC ← AC 17 , If , AC 0 : 16
43. NO DELAY
→(IR 14 )/( 45)
44. f =( AC 0 ⋀ IR 17 ) ∨((∨/ AC )⋀ IR 15) ∨( AC 0 ⋀(∨/ AC )⋀ IR 16)
→(f , f )/(36 , 24)
45. NO DELAY
→( IR 4 ¿/(47)
46. If , AC ← AC , If
→(24)
47. If , AC ← AC 17 , If , AC 0 : 16
→(24)
50. →(IR 4 )/(∫ seq)
51.→(IR 5 , IR5 )/(70 , TST seq)
60. intf , enif ← 0 ,0
61. IR 5: 17 ← ADDR(PRI ( INTR MR ))
62. NO DELAY
cpureq ← 1
62−1. → memgnt /(62−1)
62−2. MEMABUS=IR 5 :17 ; DATAIN =5⊺ 0 , PC
write=1
→ SYN ( busy ) /( 62−2)
63. cpureq ←0

64. PC ← IR 5 :17
→(24)
70. CSR ← IR 6 :17
71. CSBUS=CSR ; csrdy=1
→(accept )/(71)
72. NO DELAY
→(IR 9)/(74)
73. NO DELAY
→(IR 10 , IR10 )/(24 , 85)
74. NO DELAY
→(IR 11)/(78)
75. MD ← AC
76. Null
→(ready) /(76)
77. IOBUS=MD ; datavalid =1
→(accept , accept) /(24,77)
78.ready=1

4
→(datavalid )/(78)
79. CSR∗IR 10 ← CSBUS ; MD∗IR 10 ← IOBUS
80. accept=1
→(datavalid )/( 80)
81. NO DELAY
→(IR 10 )/(83)
82. AC ← MD
→(24)
83. NO DELAY
→¿
84. PC ← INC (PC )
→(24)
85. BIOR∗DCD(IR 7 : 8)←¿
→(24)
90. → ¿
91. CC ← INC (CC ) ;
→(90)
92. IR 5: 17 ← BADDR ( CC ) ;
BCR∗DCD ( CC ) ← 4 ⊺0
93. NO DELAY
cpureq ← 1
93−1.→ memgnt /(93−1)
93−2. MEMABUS=IR5 : 17 ; read=1
→ SYN ( busy ) /(93−2)
93−3. null
→ SYN ( busy ) /( 93−3)
94. NO DELAY
OBUS=0 , DATAOUT ;
MD ← OBUS1 :18
cpureq ← 0
IR 5: 17 ← INC( IR 5 :17 )

95. NO DELAY
BWC ← MD
cpureq ← 1
95−1.→ memgnt /(95−1)
95−2. MEMABUS=IR5 : 17 ; read=1
→ SYN ( busy ) /(95−2)
95−3. null
→ SYN ( busy ) /( 95−3)
96. NO DELAY
OBUS=0 , DATAOUT ;
MD ← OBUS1 :18
cpureq ← 0

5
97. MA ← ADD( MD ; BWC)
98. BWC ← INC ( BWC ) ; BUFRDY =DCD(CC )
99. NO DELAY
→(∨/(DCD ( CC ) ⋀ BIOR))/(103)
100. NO DELAY
cpureq ← 1
100−1.→ memgnt /(100−1)
100−2. MEMABUS=MA ;read=1
→ SYN ( busy ) /(100−2)
100−3.null
→ SYN ( busy ) /(100−3)
100−4. NO DELAY
OBUS=0 , DATAOUT ;
MD ← OBUS1 :18
cpureq ← 0
101. Null
→(ready) /(101)
102. IOBUS=MD ; datavalid =1
→(accept , accept)/(107 ,102)
103. ready=1
→(datavalid )/( 103)
104. NO DELAY
MD ← IOBUS
cpureq ← 1
104−1.→ memgnt /(104−1)
104−2. MEMABUS=MA ; DATAIN =MD
write=1
→ SYN ( busy ) /(104−2)
105. cpureq ←0

106. accept=1
→(datavalid )/(106)
107. NO DELAY
→(∨/BWC )/(109)
108. bufend =1
→(2)
109. BUFRDY =DCD ¿ )
110. NO DELAY
MA ← BADDR ( CC )
cpureq ← 1
110−1.→ memgnt /(110−1)
110−2. MEMABUS=MA ; DATAIN =BWC
write=1
→ SYN ( busy ) /(110−2)
111. cpureq ←0
→(2)

6
120. →¿ // mientras la memoria esté ocupada o no haya solicitudes de memoria, la secuencia
permanecerá en este paso.
//La señal dmar viene desde el periférico y va al FFJK
//En este paso se da prioridad a las solicitudes de DMA si las solicitudes de CPU y DMA llegan al mismo
tiempo
( dmareq ∧cpureq ∧busy ) ,
(dmareq ∧cpureq ∨busy ) ¿/(123,121,120)
// Si la memoria no está ocupada y se recibe una solicitud de DMA, el control se bifurca al paso 123 para
ejecutar la transferencia.
//Si se recibe una solicitud de CPU y la memoria no está ocupada y no hay solicitud de DMA presente, el
control se bifurca al paso 121 y devuelve la señal de concesión de memoria, que permite que la secuencia
principal de la CPU continúe con el ciclo de memoria
//Mientras esto está en progreso, la secuencia DMA espera en el paso 122 hasta que la CPU señala el final
de la operación de memoria borrando “cpureq”, en cuyo momento el control vuelve al paso 120 para
esperar más solicitudes de memoria.
121. NO DELAY
memgnt=1
122. →( cpureq , cpureq)/(122,120)
123. ( Start of DMA transfer )
123. NO DELAY //Se inicia con la secuencia de transferencia de DMA
DMADR ← INC ( DMADR ) // Se incrementa DMADR para obtener la dirección de la siguiente palabra a
transferir y verifica “dmio” para ver si la transferencia es de entrada o de salida.
→ dmio/127
124. MEMADBUS=DMADR ; read=1// En los pasos 124 y 125 se ejecutan la lectura de memoria
→(SYN ( busy ))/( 124) // Cuando está ocupado disminuye, lo que indica que la palabra está disponible
125. →( SYN (busy))/(125)
126. DMBUS=DATAOUT ;dmaval=1 ; dmareq ← 0
→(dmacpt , dmacpt , dmacpt )/(126 , 120 ,129)
//Borra “dmareq” para que esta solicitud no se responda nuevamente, envía la salida de memoria a DMBUS,
activa “dmacel” para indicar que la palabra de datos está en el bus y espera el periférico para reconocer con
“dmacpt”
//Cuando se recibe “dmacpt”, el control se bifurca en paralelo a 120 para verificar solicitudes de memoria
adicionales y a paso 129 para verificar la finalización de la operación DMA.
127. MEMADBUS=DMADR ; DATAIN =DMBUS
write=1
// inicia una operación de escritura en la memoria
// no hay que esperar a que el periférico envíe una señal que indique que los datos están en el bus ya que el
bus no se comparte con otros dispositivos

7
// El periférico puede poner la palabra a transferir en el bus al mismo tiempo que realiza la solicitud de DMA.
// Cuando está ocupado sube, lo que indica que la memoria ha aceptado la palabra

→(SYN ( busy ))/(127)


128. dmacpt=1 ;dmareq ← 0 // genera “dmacpt” para notificar al periférico que despeje el bus, borra
“dmareq” y se bifurca en paralelo a 120 y 129
→ ( 120 ,129 )
129. NO DELAY
→(( ∨/ DMADR ⨁ DMLWR) ,(∨/ DMADR ⨁ DMLWR))/(130,131)
// compara la dirección de la palabra recién transferida con la dirección de la última palabra:
// Si son iguales, el paso 131 envía la señal de fin de DMA; si no, el paso 130 envía la señal de continuación
de DMA.
// El periférico recibe una señal definida, para continuar o terminar.
130. dmacon=1 ; DEAD END
131. dmaend=1; DEAD END //Se finaliza con la transferencia DMA, el final lo detecta el paso 129
END SEQUENCE

MEMADDR = MENADBUS
MEMADDR = MA
dmareq∗dmar ←1

También podría gustarte