Oh Si
Representación de las entidades y los tipos de los buses del camino de datos.
Representación de las entidades y los tipos de los buses del camino de datos. Estos tipos son de tipo numérico (rangos) o enumeraciones para poder escribir microcomandos de forma más intuitiva.
Flujo de losdatos del DataPath dentro de la CPU. Esquema general del flujo de datos y control en el DataPath dentro de la CPU. Unidad_de_Control_Interna.
El bus de control de la unidad central de proceso es más amplio que el interno, pues ha de controlar los diferentes tipos de ciclos que se dan en la máquina. A su vez el bus de datos del sistema es solo uno de los buses de datos (uno contendrádatos/datos y otro contendrá datos/direcciones). Los dispositivos en orden del DataPath son: {SelEnt2MR,Mreg :=: [VReg.A | Vreg.B] ,
SelMReg2Ula :=: [ SelMReg2Ula.R |SelMReg2Ula.S ] , ULA , RegUla , SelRegUla2Shift , Shifter , RegShift }
Los buses de datos del DataPath son db (que viene del bus general de la CPU), db_r_shift (que es la salida ya registrada de la ULA), db_r_alu (que es la salida yaregistrada del Shifter) y db_consts (que más que un bus de datos es un bus de control que viene desde la Unidad de Control) son los más generales. Son todos de 16 bits. Un bus de 16 bits de ancho decimos que es un dataword. En el vocabulario habitual un dataword es una word. En un dataword hay exactamente dos datahword. Un datahword también se llama un byte. Son 8 bits. En un datahword hayexactamente dos dataqword. Un dataqword también se llama un dígito hexa o un nibble. Son 4 bits. Control para SelEnt2MR command.cse==A A∈ { rshift , ralu ,db , const } ; Para elegir uno de los buses de entrada para que pase a la salida. Control para Mreg :=: [VReg.A | VReg.B] command.ractl==B B es de la forma B :=((a , b) ,(c , d )) dónde
a ,b , c ,d ∈{wzero , wone ,wdata ,w1hdata , w2hdata ,rdata }Dónde cada uno de los comandos de registro: Wzero => pone todos los bits a ‘0’ , funciona como “reset”. Wone => pone todos los bits a ‘1’ , funciona como “preset”. Wdata => pone la salida al dato de entrada (wdata), escribe el dato de entrada tal cual. W1hdata => pone en la salida la parte baja del bus de entrada como
dato guardado en la parte baja del registro destino, poniendo el resto de losbits a ‘0’. W2hdata => pone en la salida la parte alta del bus de entrada como dato guardado en la parte baja del registro destino, poniendo el resto de los bits a ‘0’. Rdata => no hace nada. El dato está disponible siempre para lectura. Control para SelMReg2Ula :=: [ SelMReg2Ula.R | SelMReg2Ula.S ] command.r2actl==C dónde C es de la forma C :=(((e , f ) , g ) ,((h , i) , j )) dónde e , f , g , h ,i , j son como sigue: e ∈{br _ A , br _ B } para la entrada R: Para elegir entre el bloque de registros A o el B que pasará a través del selector si se elige el operador db_br. f ∈{0 ,1} para la entrada R: Para direccionar un registro dentro del bloque de registros elegido que es el pasará por el selector si se elige el operador db_br. g ∈{db _ const , db _ br ,db _ r _ alu , db _ r _ shift } parala entrada R: Elegir el bus que pasará a través del selector hacia la entrada R de la ULA. h∈{br _ A ,br _ B } para la entrada S: Para elegir entre el bloque de registros A o el B que pasará a través del selector si se elige el operador db_br. i ∈{0 ,1} para la entrada S. Para direccionar un registro dentro del bloque de registros elegido que es el pasará por el selector si se elige el operadordb_br. j ∈{db _ const , db _ br ,db _ r _ alu ,db _ r _ shift } para la entrada S: Elegir el bus que pasará a través del selector hacia la entrada S de la ULA. Control para ULA command.db_const==D dónde D∈{0,1,2 ,… ,65535 } . Para hacer comparaciones. Solo se refleja en los flags de indicadores. command.alu_com==E dónde E es de la forma E :=( k , (l , m , n)) dónde:
k ∈{ S2O , R2O , dwandbit ,...
Regístrate para leer el documento completo.