Microprocesadores: procesador 4004

Anuncio
MICROPROCESADORES
Introduccion
A travez de los años el mundo de la tecnologia ha evolucionado rapidamente. Este se debe a varios fenomenos
ocurridos gracias al esfuerzo de varios hombres. Uno de estos fenomenos ha sido la aparicion del
microprocesador que con su evolucion a travez de los años ha llevado a la tecnologia, sobre todo a la
computacion, a niveles inimaginables y cada dia que pasa alcanza logros inesperados.
Un microprocesador es un motor completo de computacion que es fabricado en un chip sencillo. El primer
microprocesador fue el 4004 introducido en el 1971 al mercado por Intel Corporation. Este procesador no era
muy poderoso, todo lo que podia era sumar y restar y solo podia hacerlo a 4 bits, pero era una revolucion
tecnologica ya que todo estaba integrado en un solo chip. Hoy en dia tenemos velocidades que en
comparacion al origen son extremas. Modelos como los Pentium IV y los procesadores de AMD han
multiplicado los niveles de procesamientos electronicos.
Para poder entender la tecnologia de hoy es necesario los origenes y las evoluciones de las mismas. El
siguiente habla de los procesadores 4004 y 8080 de Intel.
El Origen del procesador 4004
En el año 1969 Busicom, una compañia japonesa dedicada a la manufacturacion de calculadoras, pregunta a
Intel por el diseño de una linea de chips para una linea de calculadoras programables de alto rendimiento. El
diseño original de Busicom requeria de varios ships para su funcionamiento, idea que el Ingeniero de Intel
Marcian E. Hoff consideró muy compleja para ser economicamente efectiva. Tambien el equipo de Intel
estaba totalmente ocupado con el chip 1101, por lo que no existian muchos recursos de diseño y esta no estaba
preparada para realizar circuitos a medida. En vez de una solucion de varios chips, Hoff tuvo la idea de un
procesador de uso general que podria ser programado para varios usos. Al inicio, Busicom no estuvo de
acuerdo con la idea de este chip pero para el inicio de 1970 estuvo de acuerdo con el diseño del mismo y
firmaron un contrato donde Intel desarrollaria Chips para las calculadoras. Una vez creadas, Intel entrego los
chips a Busicom. Estos vendieron alrededor de 100,000 calculadoras.
Intel, al darse cuenta del potencial de nuevo chip, ofrecio a Busicom un precio mas bajo a cambio de que estos
les retornen los derechos del diseño del microprocesador y el derecho para comercializarlos para aplicaciones
diferentes a la de calculadoras. En ese momento Busicom se encontraba en problemas financieros, por lo que
estuvieron de acuerdo con el trato.
En 1974 Intel introdujo el primer microprocesador con propositos computacionales, el 8080, que contaba con
8 bits en un chip. El mismo se creo tomando en cuenta las criticas que se hacian sobre el procesador 4004.
Este utilizaba un nuevo proceso llamado NMOS, que utilizaba transistores MOS de canal N, que se utilizaba
en las ultimas memorias RAM dinamicas de 4 kilobytes, ademas le agrego una mejor estructura de
interrupciones, mayor direccionamiento de memoria (64MB) e instrucciones adicionales. Este procesador creo
el verdadero mercado de los microprocesadores. Existian aplicaciones que no podian ejecutarse con los
modelos previos pero con este se hizo podian ejecutar. En el 8080 corria el famoso sistema operativo CP/M de
la decada de los 70 que fue desarrollado por la compañía Digital Research
El Chip 4004
Este era un microprocesador de 4 bits de bus de datos, tenia una velocidad de procesamiento de 108 KHz,
direcciona 32768 bits de ROM y 5120 bits de RAM. Ademas se podia direccionar 16 puertos de entrada y 16
1
puertos de salida de 4 bits. Contiene alrededor de 2300 transistores MOS de canal P de 10 micrones. El ciclo
de instrucción es de 10.8 microsegundos.
Este microprocesador estaba encapsulado en el formato DIP (Dual Inline Package) de 16 patas (ocho de cada
lado). La distancia entre las patas es de 0,1 pulgadas (2,54 milímetros), mientras que la distancia entre patas
enfrentadas es de 0,3 pulgadas (7,68 milímetros).
Las funciones de las 16 patas con las que se conecta el 4004 con el exterior son las siguientes:
Pata
1
2
3
4
5
6
7
Nombre
D0
D1
D2
D3
Vss
Clock Phase 1
Clock Phase 2
8
Sync Output
9
Reset
10
Test
CR−ROM (Control
Memory Outputs)
11
12
Vdd
13
CM−RAM3
14
CM−RAM2
15
CM−RAM1
16
CM−RAM0
Descripcion
Direcciones y datos de RAM y ROM
Direcciones y datos de RAM y ROM
Direcciones y datos de RAM y ROM
Direcciones y datos de RAM y ROM
Referencia de tierra. Tension positiva.
Señal de sincronismo generada por el procesador. Indica el comienzo de
un ciclo de instruccion.
Si en esta pata se aplica un 1 logico este borra todos los flags y registros
de estado y forza el contador de programa a cero. Para que actue
correctamente, esta linea deberá activarse por 86 cliclos de reloj (8
ciclos de maquina).
Instruccion JCN verifica el estasdo de esta linea
Esta señal está activa cuando el procesador necesita datos de la
memoria ROM
Alimentacion del microprocesador. La tension debe ser de −15V +/−
5%
Señal de seleccion de banco para indicar a cual RAM 4002 desea
acceder el microprocesador.
Señal de seleccion de banco para indicar a cual RAM 4002 desea
acceder el microprocesador.
Señal de seleccion de banco para indicar a cual RAM 4002 desea
acceder el microprocesador.
Señal de seleccion de banco para indicar a cual RAM 4002 desea
acceder el microprocesador.
Instrucciones del 4004
2
Hay instrucciones de uno o dos bytes. Los primeros tardan 8 períodos de reloj (un ciclo de instrucción). Los
segundos tardan 16 períodos de reloj (dos ciclos de instrucción).
NOP. No hace nada.
JCN. Salta a la direccion especificada por A2 A2 A2 A2 A1 A1 A1 A1 dentro de la misma ROM que
contiene esta instrucción JCN, si se cumple la condicion C1 C2 C3 C4 en caso contrario continua ejecutando
la proxima instrucción.
FIM. Cargar el dato D2, D1 (ocho bits) en el par de registro RRR.
SRC. Envia la direccion (contenido del par de registros RRR) a la Rom y a la RAM en los tiempos X2 y X3
del ciclo de instrucción.
FIN. Cargar en el par de registros RRR el dato de ROM apuntado por el par de registros cero.
JIN. Salto indirecto según el par de registros RRR.
JUN. Salto incondicional a la direccion de ROM A3, A2 A1.
JMS. Salvar el viejo valor del contador de programa y saltar a la direccion de ROM A3, A2, A1.
INC. Incrementar el contenido del registro RRRR.
ISZ. Incrementar Incrementar el registro RRRR. Si el resultado no es cero, saltar a la dirección A2 A2 A2 A2
A1 A1 A1 A1 dentro de la misma ROM que contiene esta instrucción ISZ
ADD. Sumar el registro RRRR al acumulador con acarreo.
SUB. Restar el registro RRRR del acumulador con préstamo.
LD. Cargar el acumulador con el contenido del registro RRRR.
XCH. Intercambiar los contenidos del acumulador y el registro RRRR.
BBL. Retornar de subrutina y cargar el dato D D D D en el acumulador.
LDM. Cargar el dato D D D D en el acumulador.
Las siguientes instrucciones operan sobre las direcciones de RAM y ROM especificadas en la última
instrucción SRC. Cada chip de RAM tiene cuatro registros, cada uno con veinte caracteres de 4 bits
subdivididos en 16 caracteres de memoria principal y 4 de estado. El número de chip, registro de RAM y
carácter de memoria principal se selecciona mediante la instrucción SRC, mientras que los caracteres de
estado (dentro de un registro) se seleccionan mediante el código de instrucción (OPA) .
WRM. Escribir el acumulador en RAM.
WMP. Escribir el acumulador en port de salida de RAM.
WRR. Escribir el acumulador en port de salida de ROM.
WPM. Escribir el acumulador en el medio byte especificado de RAM (se usa en los microprocesadores 4008
3
y 4009 solamente).
WR0. Escribir el acumulador en el carácter de estado de RAM 0, 1, 2, 3.
WR1. Escribir el acumulador en el carácter de estado de RAM 0, 1, 2, 3.
WR2. Escribir el acumulador en el carácter de estado de RAM 0, 1, 2, 3.
WR3. Escribir el acumulador en el carácter de estado de RAM 0, 1, 2, 3.
SBM. Restar el contenido de la posición previamente especificada de RAM del acumulador con préstamo.
RDM. Cargar en el acumulador el contenido de la posición de RAM.
RDR. Cargar en el acumulador el contenido del port de entrada de ROM.
ADM. Sumar el contenido de la posición previamente especificada de RAM al acumulador con acarreo.
RD0. Almacenar en el acumulador el carácter de estado de RAM 0, 1, 2, 3.
RD1. Almacenar en el acumulador el carácter de estado de RAM 0, 1, 2, 3.
RD2. Almacenar en el acumulador el carácter de estado de RAM 0, 1, 2, 3.
RD3. Almacenar en el acumulador el carácter de estado de RAM 0, 1, 2, 3.
Instrucciones del acumulador.
CLB. Limpiar el acumulador y el acarreo.
CLC. Limpiar el indicador de acarreo.
IAC. Incrementar el acumulador.
CLC. Complementar el acarreo.
CMA. Complementar el acumulador
RAL. Rotar acumulador y acarreo hacia la izquierda.
RAR. Rotar acumulador y acarreo hacia la derecha.
TCC. Sumar acarreo al acumulador y limpiar el acarreo.
DAC. Decrementar el acumulador.
TCS. Restar acarreo del acumulador y limpiar el acarreo.
STC. Poner el acarreo a uno.
DAA. Ajuste decimal del acumulador.
4
KBP. Convierte un código 1 de 4 a binario en el acumulador.
DCL. Designar línea de comando.
Dato poco conocido.
El procesador 4004 fue el procesador que equipo de poder computacional a la nave espacial Pioneer 10. Esta
despego el 2 de Marzo de 1972 y luego obtuvo las primeras imágenes de Jupiter. Los cientificos de la NASA
se comunicaban con el Pionner 10 hasta su mision a Jupiter. El ultimo grupo de instrucciones fue enviado el
30 de noviembre de 1997 y tomo alrededor de 9 horas para llegar a la nave. Despues de eso la intensidad de la
señal era demasiado debil para recibir desde los instrumentos, pero todavia esta trabajando sin dificultad.
El Chip 8080
Como detalle constructivo el 8080 tenía alrededor de 6000 transistores MOS de canal N (NMOS) de 6
micrones, se conectaba al exterior mediante 40 patas (en formato DIP) y necesitaba tres tensiones para su
funcionamiento (típico de los circuitos integrados de esa época): +12V, +5V y −5V. La frecuencia máxima
era de 2 MHz.
Instrucciones del 8080
Suma 16 Bits
DAD B, HL <− HL+BC.
DAD D, HL <− HL+DE.
DAD H, HL <− HL+HL.
DAD SP, HL <− HL+SP.
Carga 16 Bits
LXI B,D16 BC <− D16
LXI D,D16 DE <− D16
LXI H,D16 HL <− D16
LXI SP,D16 SP <− D16
LHLD Addr HL <− (Addr)
SHLD Addr (Addr) <− HL
Incrementar
INR M, (HL) <− (HL)+1
INR A, A <− A+1
INX B, BC <− BC+1
5
INX B, BC <− BC+1
INX B, BC <− BC+1
INX B, BC <− BC+1
Decrementar
DCR M, (HL) <− (HL)−1
DCR A, A <− A−1
DCX B, BC <− BC−1
DCX D, DE <− DE−1
DCX H, HL <− HL−1
DCX SP, SP <− SP−1
Carga 8 Bits
LDAX B, A <− (BC)
LDAX D, A <− (DE)
STAX B, (BC) <− A
STAX D, (DE) <− A
LDA Addr, A <− (Addr)
STA Addr (Addr) <− A
Especiales
XCHG, DE <−> HL
DAA, Ajuste decimal acumulacion.
CMA, A <− 0FFh − A
STC, Cy <− 1
CMC, Cy <− 1 − Cy
Operaciones con la pila
PUSH B, Push BC
PUSH D, Push DE
6
PUSH H, Push HL
PUSH PSW, Push AF
POP B, Pop BC
POP D, Pop DE
POP H, Pop HL
POP PSW Pop AF
XTHL, HL <−> (SP)
SPHL, SP <− HL
Control
DI, Deshabilitar interrupciones.
EI, Habilitar interrupciones.
Entrada/Salida
IN D8, A <− Port D8
OUT D8, Port D8 <− A
7
Descargar