Diferencia entre revisiones de «Unidad Básica de Aritmética»

De Wiki~eWa
Ir a la navegaciónIr a la búsqueda
 
(No se muestran 24 ediciones intermedias del mismo usuario)
Línea 19: Línea 19:
 
== Operaciones de la ABU ==
 
== Operaciones de la ABU ==
  
La '''ABU''' permite la ejecución de cuatro instrucciones dobles, aunque solo son '''siete''', ya que una de ellas (la not ''10'') es doble. La operación se indica con los valores '''OP''', se toman como valores de entrada los de '''MN''' y se escribe la salida en los '''XY'''.
+
La '''ABU''' permite la ejecución de cuatro instrucciones dobles, aunque solo son '''siete''', ya que una de ellas, '''OP=10 (10)''' (la '''not'''), es doble. La operación se indica con los valores '''OP''', se toman como valores de entrada los de '''MN''' y se escribe la salida en los '''XY'''.
  
 
=== Operación O=0 y P=0 (00) ===
 
=== Operación O=0 y P=0 (00) ===
  
  '''X = M or N;'''  >> 0 = 0,0 || 1 = 0,1 || 1 = 1,0 || 1 = 1,1
+
  '''X = M or N;'''  >> 0 = OP(0,0) || 1 = OP(0,1) || 1 = OP(1,0) || 1 = OP(1,1)
  '''Y = M nor N;'''  >> 1 = 0,0 || 0 = 0,1 || 0 = 1,0 || 0 = 1,1
+
  '''Y = M nor N;'''  >> 1 = OP(0,0) || 0 = OP(0,1) || 0 = OP(1,0) || 0 = OP(1,1)
  
 
=== Operación O=0 y P=1 (01) ===
 
=== Operación O=0 y P=1 (01) ===
  
  '''X = M nxor N;'''  >> 1 = 0,0 || 0 = 0,1 || 0 = 1,0 || 1 = 1,1
+
  '''X = M nxor N;'''  >> 1 = OP(0,0) || 0 = OP(0,1) || 0 = OP(1,0) || 1 = OP(1,1)
  '''Y = M nand N;'''  >> 1 = 0,0 || 1 = 0,1 || 1 = 1,0 || 0 = 1,1
+
  '''Y = M nand N;'''  >> 1 = OP(0,0) || 1 = OP(0,1) || 1 = OP(1,0) || 0 = OP(1,1)
  
 
=== Operación O=1 y P=0 (10) ===
 
=== Operación O=1 y P=0 (10) ===
  
Esta operación es la única unaria que tiene la ABU. Es la not.
+
Esta operación es la única unaria que tiene la '''ABU'''. Es la '''not'''.
  
  '''X = not M;'''    >> 1 = 0 || 0 = 1
+
  '''X = not M;'''    >> 1 = OP(0) || 0 = OP(1)
  '''Y = not N;'''    >> 1 = 0 || 0 = 1
+
  '''Y = not N;'''    >> 1 = OP(0) || 0 = OP(1)
  
 
=== Operación O=1 y P=1 (11) ===
 
=== Operación O=1 y P=1 (11) ===
  
  '''X = M xor N;'''  >> 0 = 0,0 || 1 = 0,1 || 1 = 1,0 || 0 = 1,1
+
  '''X = M xor N;'''  >> 0 = OP(0,0) || 1 = OP(0,1) || 1 = OP(1,0) || 0 = OP(1,1)
  '''Y = M and N;'''  >> 0 = 0,0 || 0 = 0,1 || 0 = 1,0 || 1 = 1,1
+
  '''Y = M and N;'''  >> 0 = OP(0,0) || 0 = OP(0,1) || 0 = OP(1,0) || 1 = OP(1,1)
  
 
== Acceso a los registros ==
 
== Acceso a los registros ==
  
La asignación de registros de '''solo escritura''' ('''MN''' y '''OP''') y de '''solo lectura''' ('''XY''') permite que, con una sola instrucción (la '''A''': ''1010'') se pueda escribir '''o''' leer los registros de la '''ABU''' a el valor del registro '''K''' de la [[CPU]].
+
La naturaleza de registros de '''solo escritura''' ('''MN''' y '''OP''') y de '''solo lectura''' ('''XY''') permite que, con una sola instrucción ([[Código máquina#B_.281011.29|'''B''': ''1011'']]) se pueda escribir '''o''' leer los registros de la '''ABU''' al/del valor del registro '''K''' de la [[CPU]].
  
Para el acceso a estos registros se envían los valores de los ''registros azules'', '''UVW''', de la [[CPU]] así como el valor de K. Los valores de los registros '''UVW''' indicarán cual de los seis registros (y dos valores constantes) se usarán, y el valor del registro de la [[CPU]] '''K''' sólo se usará para los registros de '''solo escritura'''; los otros registros, los de '''solo lectura''', copiarán su valor al restro '''K''' de la [[CPU]] para finalizar la ejecución de esta instrucción.
+
Para determinar cuál de estos registros se apuntará, se envían los valores de los ''registros azules'', '''UVW''', de la [[CPU]]. También se pasará el valor del registro '''Z''' de la [[CPU]] para indiciar (si ''K == 1'') que se debe ejecutar la [[ABU#Operaciones_de_la_ABU|función de operación]] en la '''ABU''' antes de realizar el acceso si se trata de una '''lectura''' (o después de recibirlos si se trata de una '''escritura'''). Por último, también se pasa el valor de '''K''' para indicar el valor que se escribirá si se trata de una '''escritura''' en los registros de la '''ABU'''.
 +
 
 +
Los valores de los registros '''UVW''' indicarán cual de los seis registros (y dos valores constantes) se usarán, y el valor del registro de la [[CPU]] '''K''' sólo se usará para los registros de '''solo escritura'''; los otros registros, los de '''solo lectura''', copiarán su valor al restro '''K''' de la [[CPU]] para finalizar la ejecución de esta instrucción.
  
 
La siguiente tabla especifica los registros de la '''ABU''' para los valores de los registros '''UVW''' de la [[CPU]] pasados.
 
La siguiente tabla especifica los registros de la '''ABU''' para los valores de los registros '''UVW''' de la [[CPU]] pasados.
  
{| border="1"
+
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" align="center"
|-  
+
|- bgcolor="#aaffcc"
! U || V || W || align="center" | Registro
+
! Z || U || V || W || align="center" | Registro
 
|-
 
|-
| 0 || 0 || 0 || align="center" | Siempre es '''0''' (solo lectura)
+
| ''x'' || 0 || 0 || 0 || align="center" | Siempre es '''0''' (solo lectura)
 
|-
 
|-
| 0 || 0 || 1 || align="center" | '''O'''
+
| ''x'' || 0 || 0 || 1 || align="center" | '''O''' (solo escritura)
 
|-
 
|-
| 0 || 1 || 0 || align="center" | '''P'''
+
| ''x'' || 0 || 1 || 0 || align="center" | '''P''' (solo escritura)
 
|-
 
|-
| 0 || 1 || 1 || align="center" | '''X'''
+
| ''x'' || 0 || 1 || 1 || align="center" | '''X''' (solo lectura)
 
|-
 
|-
| 1 || 0 || 0 || align="center" | '''Y'''
+
| ''x'' || 1 || 0 || 0 || align="center" | '''Y''' (solo lectura)
 
|-
 
|-
| 1 || 0 || 1 || align="center" | '''N'''
+
| ''x'' || 1 || 0 || 1 || align="center" | '''N''' (solo escritura)
 
|-
 
|-
| 1 || 1 || 0 || align="center" | '''M'''
+
| ''x'' || 1 || 1 || 0 || align="center" | '''M''' (solo escritura)
 
|-
 
|-
| 1 || 1 || 1 || align="center" | Siempre es '''1''' (solo lectura)
+
| ''x'' || 1 || 1 || 1 || align="center" | Siempre es '''1''' (solo lectura)
 
|}
 
|}
 +
 +
[[Categoría: Unidad]]
 +
[[Categoría: Componente]]
 +
[[Categoría: Arquitectura eWa]]
 +
[[Categoría: Solución Electrónica]]
 +
[[Categoría: Solución]]

Revisión actual del 23:20 5 mar 2013

La ABU o Unidad Básica de Aritmética es una de las Unidades Básicas de la Arquitectura eWa. Es la encargada de realizar las operaciones booleanas más básicas unarias y binarias: or, nor; nxor, nand; not; y xor, and.

Registros de la ABU

La ABU tiene seis registros, dos a dos, nombrados MN, OP, y XY.

Registros MN

Los registros MN son dos registros de la ABU que funcionan como valores de entrada de la función que se va a ejecutar. Se consideran de solo escritura.

Registros OP

Los registros OP son dos registros de la ABU que funcionan como indicadores de la operación a ejecutar. Se consideran de solo escritura.

Registros XY

Los registros XY son dos registros de la ABU que funcionan como valores de salida de la función ejecutada. Se consideran de solo lectura.

Operaciones de la ABU

La ABU permite la ejecución de cuatro instrucciones dobles, aunque solo son siete, ya que una de ellas, OP=10 (10) (la not), es doble. La operación se indica con los valores OP, se toman como valores de entrada los de MN y se escribe la salida en los XY.

Operación O=0 y P=0 (00)

X = M or N;   >> 0 = OP(0,0) || 1 = OP(0,1) || 1 = OP(1,0) || 1 = OP(1,1)
Y = M nor N;  >> 1 = OP(0,0) || 0 = OP(0,1) || 0 = OP(1,0) || 0 = OP(1,1)

Operación O=0 y P=1 (01)

X = M nxor N;  >> 1 = OP(0,0) || 0 = OP(0,1) || 0 = OP(1,0) || 1 = OP(1,1)
Y = M nand N;  >> 1 = OP(0,0) || 1 = OP(0,1) || 1 = OP(1,0) || 0 = OP(1,1)

Operación O=1 y P=0 (10)

Esta operación es la única unaria que tiene la ABU. Es la not.

X = not M;     >> 1 = OP(0) || 0 = OP(1)
Y = not N;     >> 1 = OP(0) || 0 = OP(1)

Operación O=1 y P=1 (11)

X = M xor N;  >> 0 = OP(0,0) || 1 = OP(0,1) || 1 = OP(1,0) || 0 = OP(1,1)
Y = M and N;  >> 0 = OP(0,0) || 0 = OP(0,1) || 0 = OP(1,0) || 1 = OP(1,1)

Acceso a los registros

La naturaleza de registros de solo escritura (MN y OP) y de solo lectura (XY) permite que, con una sola instrucción (B: 1011) se pueda escribir o leer los registros de la ABU al/del valor del registro K de la CPU.

Para determinar cuál de estos registros se apuntará, se envían los valores de los registros azules, UVW, de la CPU. También se pasará el valor del registro Z de la CPU para indiciar (si K == 1) que se debe ejecutar la función de operación en la ABU antes de realizar el acceso si se trata de una lectura (o después de recibirlos si se trata de una escritura). Por último, también se pasa el valor de K para indicar el valor que se escribirá si se trata de una escritura en los registros de la ABU.

Los valores de los registros UVW indicarán cual de los seis registros (y dos valores constantes) se usarán, y el valor del registro de la CPU K sólo se usará para los registros de solo escritura; los otros registros, los de solo lectura, copiarán su valor al restro K de la CPU para finalizar la ejecución de esta instrucción.

La siguiente tabla especifica los registros de la ABU para los valores de los registros UVW de la CPU pasados.

Z U V W Registro
x 0 0 0 Siempre es 0 (solo lectura)
x 0 0 1 O (solo escritura)
x 0 1 0 P (solo escritura)
x 0 1 1 X (solo lectura)
x 1 0 0 Y (solo lectura)
x 1 0 1 N (solo escritura)
x 1 1 0 M (solo escritura)
x 1 1 1 Siempre es 1 (solo lectura)