Motorola 88000
El 88000 es el primer Microprocesador RISC de Motorola. Originalmente se llamó 78000 como un homenaje a la serie de microprocesadores 68000. En parte podría indicar alguna relación con la familia MC68000 de CISCs, las diferencias son profundas. MC68000 es representativo de los CISCs recientes, mientras el 88000 es un ejemplo de un sistema RISC puro.
Instrucciones
[editar]La mayoría de las instrucciones hacen referencia sólo a operandos de registro. Sólo unas cuantas instrucciones de carga-almacenamiento simples hacen referencia a la memoria. Los bits en el subcódigo de operación indican carga y almacenamiento de palabra (32 bits) media palabra y byte. Para los últimos dos casos, una carga en un registro se puede tratar como con signo o sin signo. Un aspecto único del conjunto de instrucciones es la inclusión de 8 instrucciones de campo de bits.
Los campos sobre los que estas instrucciones operan pueden ser de cualquier anchura y están localizados en cualquier lugar de la palabra. Este hardware del campo de bits puede borrar, poner, extraer e insertar campos en los registros. Este hardware, en esencia, puede efectuar un corrimiento de un solo ciclo de cualquier número de bits a un campo de cualquier anchura.
Formato de instrucciones
[editar]Como casi todos los sistemas RISC, el 88000 emplea una longitud fija de instrucciones de 32 bits. Los primeros 6 bits constituyen el código de la operación de la instrucción. En la mayoría de las instrucciones, el código de operación es seguido por dos campos de registros de 5 bits (el resultado y el primer operando). Los restantes 16 bits pueden contener un operador inmediato o un desplazamiento para una instrucción de bifurcaron condicional. Para las instrucciones que involucran tres registros (2 fuentes y un resultado, o destino), 11 bits permanecen para una expansión del código de operación a fin de especificar operaciones particulares.
Obsérvese que en todos los formatos, las posiciones de los campos claves se alinean. Por consiguiente, la lógica del decodificador de instrucciones del procesador siempre accesa los registros fuentes y destinos desde la misma localidad relativa dentro de la instrucción y simplifica el diseño del procesamiento en cascada.
Arquitectura
[editar]El chip del procesador principal consiste de múltiples unidades de función independientes conectadas a un catálogo de registro con múltiples puertos. Las unidades de función pueden operar en forma independiente y concurrente, proporcionando un medio muy eficiente de procesamiento de instrucciones.
Unidad de enteros: Ejecuta todos los accesos de aritmética de enteros, campo de bits, booleanos y registro de control.
Unidad de punto flotante: Proporciona 754 funciones IEEE. Consiste de un sumador con procesamiento en cascada de cinco etapas y un multiplicador con procesamiento en cascada de seis etapas. Estos sistemas de procesamiento en cascada permiten que operaciones múltiples de punto flotante sean realizadas concurrentes.
Unidad de instrucciones: Responsable de buscar instrucciones y remitir el código de operación decodificado vía señales de control a las unidades de ejecución apropiadas contenidas en el procesador.
Unidad de Memoria de Datos: Responsable de cargar y almacenar operandos en el procesador y en la memoria externa.
El bus de memoria (bus M) interfaz de dos unidades de administración de memoria caché (o CMMU, cache memory manager unit) al sistema de memoria, uno para los datos y otro para las instrucciones. Esta arquitectura permite que las instrucciones sean buscadas mientras se están transfiriendo operandos entre el procesador y la memoria; de esta manera, suministra un aumento considerable de velocidad.
Administración de registros
[editar]El catálogo de registros consta de 32 registros de propósito general de 32 bits; el registro 0 está alambrado con el valor de 0. Esto es conveniente para almacenar ceros en otros registros de memoria. El registro R1 se utiliza para almacenar en forma automática la dirección de retorno para una instrucción de bifurcación o salto a subrutina.
Con la arquitectura 88000, se necesita algún medio para permitir que todas las unidades de función compartan el catálogo de registros sin destruirse unos a otros basados en registros. El mecanismo empleado en el 88000 se conoce como pizarra de registros, en este punto la unidad de función debe permanecer haciendo nada hasta que el registro deseado está liberado.
Pizarra de registro
[editar]El procesador incluye una pizarra de registros, con un bit correspondiente a cada uno de los 31 registros (R0 se excluye ya que no es posible actualizarlo). En cualquier momento que la unidad despacha una instrucción que toma más de un ciclo de reloj para ejecutarse, se pone el bit en el registro pizarra que corresponde al registro destino para esta instrucción. El bit se borra cuando el resultado se almacena en el registro destino.
Procesamiento en cascada de la unidad de instrucciones
[editar]Con la arquitectura 88000, cada una de las unidades de función tiene una arquitectura de procesamiento en cascada para proveer un grado de paralelismo tan alto como sea posible. Tiene tres etapas:
- La unidad busca instrucciones desde la caché de instrucciones vía un bus referido como el bus PBUS.
- La etapa de búsqueda consiste de un registro apuntador de búsqueda de instrucción (FIP) que contiene la dirección de la instrucción a ser buscada. Al comienzo de cada ciclo de reloj, si no existen paradas de procesamiento en cascada o estados de espera de memoria, el FIP emite una dirección a la caché de instrucciones.
- Durante la siguiente etapa, la dirección en el FIP se transfiere al apuntado de la siguiente instrucción (NIP) y la instrucción se busca desde la memoria y se coloca en el registro de la siguiente instrucción. Durante esta etapa, la instrucción es codificada en forma parcial y cualquiera de los operandos necesarios del catálogo de registros se prebuscan y preparan para transferirlos a la unidad apropiada.
Durante la etapa de ejecución, la dirección en el NIP se transfiere al registro apuntador de ejecución de instrucción (XIP) y la instrucción al registro de ejecución de instrucción. Durante esta etapa, la instrucción es transferida a la unidad de función apropiada.
Por cada uno de los apuntadores de instrucción, se mantiene un registro sombra. Si una excepción ocurre durante un ciclo, los registros sombra se congelan para guardar los valores al tiempo de la excepción. Estos son restituidos después del procesamiento de excepción.