

El 8X300 es un microprocesador producido y comercializado por Signetics a partir de 1976 como una fuente secundaria para el SMS 300 de Scientific Micro Systems, Inc. [ 1 ] [ 2 ] [ 3 ] [ 4 ] Aunque SMS lo desarrolló, Signetics fue el único fabricante. En 1978, Signetics compró los derechos de la serie SMS 300 y la renombró 8X300.
Fue diseñado para ser un microcontrolador y procesador de señales rápido , y por ello se diferencia considerablemente de los microprocesadores lógicos NMOS convencionales de la época. Quizás la principal diferencia radicaba en que se implementó con tecnología de transistores Schottky bipolares y podía obtener, decodificar y ejecutar una instrucción en tan solo 250 ns . Los datos podían introducirse desde un dispositivo, modificarse y enviarse a otro durante un ciclo de instrucción .
Se fabricó un clon del 8X300 en la Unión Soviética bajo la designación KM1818VM01 ( en ruso : КМ1818ВМ01 ). [ 4 ]
En 1982, Signetics lanzó una versión mejorada y más rápida, la 8X305 .
Arquitectura
El dispositivo se suministra en un encapsulado cerámico DIL de 50 pines y funciona con una única línea de alimentación de 5 V. Se requiere un transistor de paso externo para completar el regulador de voltaje integrado , que suministra 3 V a áreas específicas del chip. Esto ayuda a mantener el consumo total de corriente por debajo de 450 mA .
Los requisitos de reloj se cumplen conectando un cristal de 8 MHz directamente a dos pines. Como alternativa, se pueden utilizar señales desfasadas procedentes de un generador de reloj externo.
Una segunda característica única es un bus dedicado de direcciones de 13 bits y un bus de datos de 16 bits para acceder a la memoria de programa, lo que permite direccionar directamente 8192 palabras de programa de 16 bits. Esto permite conectar directamente las memorias de programa ROM / PROM sin hardware adicional. Un segundo bus combinado de direcciones/datos de 8 bits, el bus de vector de interfaz (IV), se utiliza para datos y E/S. Dos señales de control, WC (comando de escritura) y SC (comando de selección), determinan el estado del bus IV de la siguiente manera:
- SC=1, WC=0: La dirección de E/S se está emitiendo en el bus IV.
- SC=0, WC=1: Los datos de E/S se están enviando por el bus IV.
- SC=0, WC=0: Se esperan datos de entrada de E/S en el bus IV.
Otras dos señales, LB (selección del banco izquierdo) y RB (selección del banco derecho), duplican efectivamente el espacio de direcciones del bus IV y se utilizaban con mayor frecuencia para conmutar entre la memoria RAM de un banco y los puertos de E/S del otro.
Otra característica inusual es que, en lugar de ejecutar las instrucciones de enmascaramiento, rotación, desplazamiento y fusión en la unidad aritmético-lógica (ALU), como ocurre con la mayoría de los microprocesadores, el 8X300 dispone de unidades independientes para cada una de ellas. Por lo tanto, los datos pueden rotarse, enmascararse, modificarse, desplazarse y fusionarse (en ese orden) en un único ciclo de instrucciones.
Conjunto de instrucciones
El procesador normalmente manipula bytes de datos de 8 bits, pero la unidad de máscara permite manipular bits individuales o múltiples, convirtiéndolo en un procesador de longitud de datos variable. Los datos internos se almacenan en registros de lectura/escritura de 8 bits : R1 a R6, R9 y un registro auxiliar (R0 o AUX). El registro auxiliar contiene uno de los operandos utilizados en instrucciones de dos operandos, como ADDo , y un registro de desbordamientoAND de un bit (solo lectura) (R8 o OVF) almacena el bit de acarreo de las operaciones. Dos registros virtuales de solo escritura, IVL (R7) e IVR (R15), se utilizan para colocar una dirección en el bus IV, y dos conjuntos de ocho registros virtuales (R16-R23 y R24-R31) se utilizan para transferir datos hacia o desde el bus IV. En este último caso, los dos bits superiores del número de registro seleccionan el banco izquierdo o derecho, y los tres bits inferiores definen el número de posiciones en las que se rotarán o desplazarán los datos. Un búfer de bus IV de 8 bits conserva una copia de los últimos datos transferidos hacia o desde el bus IV. Estos datos se utilizan en operaciones de fusión. Cabe destacar que este artículo utiliza numeración decimal para los registros; la documentación de Signetics utiliza numeración octal.ADD
Los tres bits más significativos de la instrucción definen el código de operación y dividen las instrucciones en ocho clases:
- Esta
MOVEinstrucción permite copiar el contenido de los registros seleccionados, colocarlo en el bus IV, leerlo desde el bus IV o transferirlo de un bus IV a otro. - Las clases
ADD,ANDyXORson similares, excepto que con estas instrucciones el contenido del registro auxiliar se combina con el registro fuente antes de queMOVEse ejecute la parte de la instrucción. - Esta
XECinstrucción permite ejecutar una instrucción seleccionada en una dirección local y un desplazamiento diferentes sin incrementar el contador de programa. - Esta
NZTinstrucción permite implementar una bifurcación condicional. - Esta
XMITinstrucción permite colocar un patrón binario de 8 bits, especificado en la misma, en un registro determinado o en el bus IV. Es similar a una instrucción de carga inmediata. - La
JMPinstrucción realiza un salto incondicional a cualquier lugar dentro de la memoria de programa de 8192 palabras.
El uso de los 13 bits restantes de la instrucción depende del código de operación:
MOVEANDInstrucciones : 5 bits se utilizan para definir el registro de origen, 3 bits se utilizan para definir cualquier operaciónADDdeXORrotación o máscara (el campo R/L) y los 5 bits restantes definen el registro de destino.XECyNZT: 5 bits se utilizan para definir el registro de origen, los 8 bits restantes definen el campo de dirección.XEC: el contenido del registro fuente se agrega primero al campo de dirección, que luego se utiliza como los 8 bits inferiores de la dirección del programa.NZTEl salto se realiza si el registro de origen no es cero. Si se realiza el salto, el campo de dirección se utiliza como los 8 bits inferiores de la dirección del programa.
XMITSe utilizan 5 bits para definir el registro de destino, y los 8 bits restantes definen los datos.JMP: los 13 bits se utilizan como una dirección absoluta en la memoria del programa.
Desplazar, rotar, enmascarar y fusionar
Las unidades de rotación y enmascaramiento se ubican entre el banco de registros y la ALU. Por lo tanto, en principio, todos los datos pueden rotarse y enmascararse antes de que ingresen a la ALU.
- Unidad de rotación: Esta unidad rotará los datos hacia la DERECHA el número de posiciones especificado en el código de operación.
- Unidad de enmascaramiento: Esta unidad enmascarará (pondrá a cero) los bits superiores de los datos para conservar el número de bits inferiores especificado en el código de operación.
Las unidades de desplazamiento y fusión están ubicadas entre la ALU y el bus IV, por lo que cualquier dato enviado al bus IV puede desplazarse y fusionarse antes de ser emitido.
- Unidad de desplazamiento: Esta unidad desplazará los datos hacia la IZQUIERDA el número de posiciones especificado en el código de operación.
- Unidad de fusión: Esta unidad fusionará (reemplazará) el número de bits especificado por el código de operación en el búfer del bus IV con los datos antes de colocar el contenido del búfer en el bus IV.
Nota: si el número de bits a fusionar es cero, se reemplazarán los 8 bits.
Dependiendo del origen y el destino, son posibles las siguientes combinaciones:
MOVE,ADD,ANDeXORinstrucciones:- Registro para registrarse (incluidos los registros IVL e IVR): Rotar
- registro al bus IV (salida de datos): desplazamiento y fusión
- Entrada del bus IV al registro: rotación y máscara
- Entrada del bus IV a salida del bus IV: rotación, enmascaramiento, desplazamiento y fusión.
- Entrada del bus IV al registro IVL o IVR (salida de dirección del bus IV): rotación y enmascaramiento
XECyNZT:- Entrada del bus IV: rotación y enmascaramiento
XMIT- Salida de datos del bus IV: desplazamiento y fusión
E/S
La transferencia de datos hacia y desde el 8X300 es un proceso de dos pasos:
- Paso 1: Utilizando una de las instrucciones
MOVE,ADD,AND,XORoXMTy especificando uno de los registros virtuales IVL (banco izquierdo) o IVR (banco derecho) como destino, se emite una dirección en el bus IV, junto con las señales Select Command y Bank Select. Esto puede tener que repetirse si se utilizan ambos bancos.
Dado que la dirección de E/S se emite por separado, los puertos de E/S deben mantener (enclavar) la selección. Esto se puede lograr con decodificadores y enclavamientos de direcciones independientes, o con un puerto de E/S con decodificación y enclavamiento de direcciones integrados, como el 8X32. Gracias al enclavamiento, una vez direccionados, los puertos de E/S permanecen activos hasta que se emite una dirección diferente, y se puede acceder a ellos varias veces sin necesidad de volver a direccionarlos. Dos puertos de E/S (o direcciones de RAM) pueden estar activos simultáneamente, utilizando las señales de selección de banco para alternar rápidamente entre ellos sin necesidad de direccionamiento adicional.
- Paso 2: Los datos se transfieren hacia o desde el 8X300 utilizando cualquiera de las instrucciones, excepto
JMPla de especificar uno de los registros R16–R31 como origen y/o destino. El registro seleccionado define la señal de selección de banco que acompaña a la transferencia.
La selección de E/S más rápida se puede implementar agregando bits a la palabra de instrucción para seleccionar uno o dos dispositivos IV con cada instrucción. [ 1 ] : 2-40 En lugar de enviar una dirección explícita a un dispositivo en el bus, la palabra de instrucción más amplia se almacena centralmente y se utiliza como selección de dispositivo instrucción por instrucción.
Interrumpe
El 8X300 no tiene capacidad de interrupción integrada. Signetics ha publicado extensas notas de aplicación que describen cómo se pueden adaptar las interrupciones al 8X300. [ 1 ] : 2-47 La latencia de interrupción es inferior a 750 nanosegundos. Las interrupciones constan de varios pasos, cada uno de los cuales requiere asistencia de hardware:
- Guarda el contenido actual del contador de programa. El contador de programa se puede bloquear desde el bus de direcciones de 13 bits en cualquier instrucción, excepto XEC. Por este motivo, las interrupciones deben ignorarse durante XEC.
- Conserve las últimas direcciones IVL e IVR utilizadas. Signetics sugiere capturar estas escrituras de direcciones con una memoria RAM de sombra. Nota: el 8X305 no necesita memoria RAM de sombra, ya que cuenta con memoria de direcciones IVL e IVR integrada.
- El programa debe saltar a una dirección de servicio de interrupción fija. El hardware externo debe tomar el control del bus de instrucciones de 16 bits e insertar una instrucción JMP.
- Al final de la rutina de servicio de interrupción, restaure las direcciones IVL e IVR desde la RAM (8X300) o desde la memoria del registro de direcciones (8X305).
- Detecta una instrucción de retorno ad hoc. Signetics sugiere un JMP 17777, todo unos. Signetics indica que solo es necesario decodificar los 13 bits de dirección (pero no el código de operación).
- Restaure el contenido original del Contador de Programa. Nuevamente, el hardware externo debe tomar el control del bus de instrucciones de 16 bits e insertar un código de operación JMP con la dirección almacenada previamente en el bus de direcciones del programa.
8X305
En 1982, Signetics lanzó una versión mejorada y más rápida, el 8X305. Este procesador se popularizó en aplicaciones militares y Advanced Micro Devices lo fabricó como AM29X305. Finalmente, los derechos de producción se vendieron a Lansdale Semiconductor Inc., que aún ofrecía el 8X305 en 2025.. [ 5 ]
El 8X305 ofrece dos mejoras principales con respecto al 8X300:
- El tiempo mínimo del ciclo de instrucción se redujo de 250 ns a 200 ns, lo que permitió al 8X305 ejecutar 5 millones de instrucciones por segundo. [ 6 ] : 1
- Se añadieron siete nuevos registros. Tres de ellos, R13, R14 y R15, funcionan exactamente igual que R1-R6. Otros dos nuevos registros generales, R10 y R11, funcionan como registros normales en todas las instrucciones excepto XMIT. Si se emite XMIT, los datos se envían al bus IV, pero R10 y R11 permanecen sin cambios. R7 y R15 son los registros de selección de dirección IV. A diferencia del 8X300, ahora recuerdan la dirección que se les escribió. Esto puede ser particularmente útil si el 8X305 se interrumpe, ya que la dirección IV seleccionada forma parte del estado arquitectónico y debe restaurarse después de una interrupción. [ 6 ] : 11, 76
Aplicaciones

En una extensa nota de aplicación, Signetics mostró cómo usar el 8X300 como controlador de disquete . Una nota de aplicación revisada mostró el uso del 8X300 junto con el 8X330. Otras notas de aplicación describieron:
- Un multiplexor de teletipo
- Un concentrador de datos
- Un controlador de terminal remoto
- Un emulador de bus de E/S de computadora
- Interfaz de memoria RAM
Un sistema de demostración (contenido en un maletín) y una nota de aplicación mostraban el uso del 8X300 en un controlador de semáforos.
Olivetti utilizó el 8X300 y posteriormente el 8X305 como controlador para el disco duro ST506 en la serie de ordenadores personales M20 .
Convergent Technologies utilizó los modelos 8X300, 8X320 y 8X330 en su controlador de disco duro AWS en 1981. [ 7 ]
Western Digital utilizó el 8X300 en su controlador de disco duro WD1000 ST506 y el 8X305 en su controlador de disco duro ECC WD1001 . [ 8 ] Los WD1000/WD1001 se utilizaron como diseños de referencia para los Olivetti M20, TRS-80 y Kaypro 10 .
Dispositivos de soporte
- 8X01: Comprobador de redundancia cíclica
- 8X31 / 8T31: Puerto de E/S bidireccional con retención de 8 bits
- 8X32 / 8X36 / 8X42: puerto de E/S bidireccional direccionable con retención de 8 bits
- 8T39: Expansor de bus direccionable
- 8X41: Extensor y repetidor de bus bidireccional asíncrono (SABER)
- 8T58: Expansor de bus transparente
- 8X320: Matriz de registros de interfaz de bus
- 8X330: Formateador/controlador de disquetes
- 8X350: RAM bipolar de 2048 bits (256*8) Tiempo de acceso de 35 ns
- SMS360 / 8X360: Byte vectorial de interfaz
Referencias
- 1 2 3 Guía de diseño 8X300 (PDF) . Signetics Corporation. Diciembre de 1980. Documento DSPG 80-102.
- ↑ David Edwards (marzo de 1978). "Signetics 8X300" . ELECTRONICS Australia . Vol. 39, n.º 12, págs. 80-81 .
- ↑ "Pacto Signetics/SMS 300" (PDF) . Microcomputer Digest . Vol. 2, n.º 11. Mayo de 1976. págs. 1–2 .
- 1 2 "La historia de los procesadores SMS300 y Signetics 8X300" . CPUShack. 16 de noviembre de 2010. Consultado el 5 de enero de 2017 .
- ↑ "Microcontrolador SL8X305" (PDF) . Lansdale Semiconductor Inc. Consultado el 20 de junio de 2017 .
- 1 2 8X305 Manual del usuario (PDF) . Signetics. Junio de 1982. Consultado el 4 de septiembre de 2025 .
- ↑ Manual de hardware AWS-220, -230, -240, Volumen 1 (PDF) . Convergent Technologies, Inc. Abril de 1982. pág. 3 - 147.
- ↑ "Catálogo de componentes de Western Digital de 1983" (PDF) . Consultado el 9 de abril de 2021 .
Enlaces externos
- ensamblador de código abierto
- Desensamblador de código abierto
- documentos de la serie 8x300 de bitsavers.org
- Primeros microordenadores
- Semiconductores NXP
- microprocesadores de 8 bits
- Introducciones relacionadas con la informática en 1976