viernes, 8 de abril de 2011

Microprocesador - REQuisitos

Lo primero que voy a hacer es ocuparme del microprocesador. Tendremos que diseñarlo, construirlo, comprobar que funciona correctamente y por último, utilizarlo.

En este punto surge una cuestión natural: ¿de qué quiero que sea capaz este microprocesador? Dependiendo de ello, efectuaremos una serie de comprobaciones u otras, lo utilizaremos de un modo u otro, lo diseñaremos de un modo u otro. Esta cuestión natural de la que hablo son los requisitos. En este caso, son los requisitos del microprocesador. Es lo primero que tendriamos que aclarar, sobre todo porque va a gobernar todo el proceso hasta llegar al resultado final.

Normalmente, un encargo de este tipo nos lo suele dar un cliente, que puede ser externo a nuestra organización, pero también puede ser interno a la misma, como por ejemplo un jefe directo, un jefe de producto o responsable de producto,... En cualquier caso, lo importante es establecer las fuentes de requisitos, es decir, quienes son capaces de ayudarnos a determinar los requisitos de nuestro microprocesador.

Como se trata de una simple demostración de cómo llevar a cabo un diseño propio, en este caso seré yo mismo la fuente de requisitos y me ocuparé de formularlos y discutirlos conmigo mismo (o sea, meditarlos debidamente). Así que he aquí la lista de requisitos del microprocesador.

REQ (Documento de requisitos)
======================

1.- Objetivo e introducción
-----------------------------
El objetivo del presente documento es listar e identificar todos los requisitos que se pretende que posea un microprocesador de demostración. El ámbito de la demostración es el de ofrecer una panorámica básica sobre las técnicas de elaboración de herramientas de desarrollo digital modernas, tales como compiladores, lenguajes de programación de alto nivel, sistemas operativos, técnicas de multiproceso, técnicas de interfaz digital e interconexión de periféricos y aplicaciones de comunicaciones.

El microprocesador en cuestión recibirá el nombre abreviado MIYAGI. 

Dada la naturaleza del ámbito en el que se va a enmarcar, los requisitos comerciales y de despliegue y de mantenimiento quedan descartados de su formulación. Únicamente se reflejarán aquí los requisitos técnicos.

2.- Requisitos Técnicos
-------------------------
Se requiere que MIYAGI tenga las siguientes características
REQ [ 2. 1] -- Capacidad de cálculo de al menos 100KFlops
REQ [ 2. 2] -- Capacidad de conectarse a un bus estandard para transferencia de de datos y direcciones y controles de bus.
REQ [ 2. 3] -- Capacidad de poseer y gestionar memoria cache interna
REQ [  2.4] -- Capacidad de recibir interrupciones en diversos formatos, por una única linea
REQ [ 2. 5] -- Capacidad de direccionar periféricos mapeados en el espacio de memoria físico
REQ [ 2. 6] -- Capacidad de integrar un gestor de memoria virtual, opcionalmente
REQ [ 2. 7] -- Capacidad de permitir la depuración de programas bajo control de un elemento externo.
REQ [ 2. 8] -- Capacidad de interconectarse con hasta 6 microprocesadores iguales, para multiproceso. En la interconexión se intercambian datos y controles.
REQ [ 2. 9] -- Capacidad de acceder a la memoria de instrucciones con pipeline opcional
REQ [ 2.10] -- Capacidad de disponer de ejecucion de instrucciones aritmético-lógicas estandard.
REQ [ 2.11] -- Capacidad de disponer de ejecucion de instrucciones de control de flujo condicional e incondicional
REQ [ 2.12] -- Capacidad de disponer de algún método que permita conocer y programar el estado del microprocesador.
REQ [ 2.13] -- Capacidad de materializarlo en dispositivos programables como FPGAs.
REQ [ 2.14] -- El juego de instrucciones deberá ser el propio de un microprocesador RISC.
REQ [ 2.15] -- Capacidad de disponer de modos de ALU en punto flotante, opcional.

3.- Historial
----------------

Fecha               Modificacion                      Autor
..........         ................                 ..............


====================================================================


Bueno, como documento de requisitos es escueto (bastante) pero ilustrativo de lo que ha de contener y cómo. Observa que en nigún momento se indica cómo debe hacerse el microprocesador, su arquitectura, ni las herramientas para elaborarlo. A menudo estos conceptos se imponen como requisitos cuando realmente no pertenecen a esa atmóssfera, sino a la del utillaje y herramientas necesario para su elaboración. Por cierto, en todo documento técnico que se precie de ser "mantenible" no puede faltar un apartado para indicar los cambios y modificaciones introducidos en el mismo, a efectos de entender el histórico de cambios y extraer de él enseñanzas, aprendizajes,... información muy valiosa que de otro modo quedaría en el olvido.

Creo que por hoy podemos concluir la tarea. Pronto más. Y espero que nos pongamos a detallar las funciones e interfaces.

Por cierto, quien necesite que le aclare algún detalle sobre esta entrada del cuaderno de bitácora, que simplemente me deje un comentario y le responderé gustosamente. Cualquier aspecto, correccion, crítica o sugerencia o aclaración estaré encantado de resolverla.

sábado, 2 de abril de 2011

¿Qué encontrarás en este blog?

Hola!

Por razones muy personales que no vienen al caso, he decidido crear este blog, al que confieso que le tenia unas ganas tremendas, con un objetivo principal muy claro: transmitir la práctica del desarrollo de las tecnologías modernas.

Eso, que suena un poco rimbombante consiste concretamente en mostrar cómo diseñar tu propio microprocesador y sus periféricos, cómo programarlo, cómo diseñar tu propio lenguaje de programación de alto nivel y elaborar tu propio compilador y herramientas de test y desarrollo, cómo costruir tu propio sistema operativo, cómo elaborar programas que se ejecuten sobre dicho sistema operativo, como protocolos de comunicaciones, bases de datos, videojuegos,... Para ello, yo mismo elaboraré todo lo que digo e iré contando con qué y cómo lo hago, y dejaré los resultados aquí mismo, disponibles, para que nadie crea que hablo de ciencia-ficción o buenas intenciones. Es real. Lo contaré todo como si fuera un cuaderno de bitácora de una aventura que es este blog.

Voy a suponer que conoces poco, pero algo, lo más básico de los principios de la electrónica y la programación. Pero no mucho más. Los principios de la ciencia y la ingeniería los trato en otro blog aparte. Por aquello de tener todo bien organizado.

Si te imprimes este blog y ocurriera un holocausto nuclear, podrías, siguiendo las pautas que encontrarás aqui, recuperar buena parte del legado tecnológico de la humanidad.

Y ahora, comienza a leer este cuaderno de bitácora y sigue la senda de esta misma aventura.