• No results found

Group IV: Normal study

BIBLIOGRAPHY

El codise˜no presenta un m´etodo unificado que considera tanto las opciones en hardware como en software. Esta metodolog´ıa de dise˜no es concurrente y cooperativa, e incluye como un componente fundamental la capacidad de explorar los cambios en hardware y software. Esta capacidad gu´ıa a implementaci´on m´as eficientes y mejoras en el desempe˜no global, confiabilidad y efectividad en costos [6].

La metodolog´ıa del codise˜no es cubierta por diversos autores [2], [4], [6], [3] y [7]. Entre ellos var´ıan ciertos pasos de la metodolog´ıa, pero tienen en com´un muchos otros. A continuaci´on se lista una extracci´on de pasos que se han considerado apropiados para presentar la metodolog´ıa del codise˜no.

Especificaci´on y representaci´on del sistema

La especificaci´on consiste en convertir los requerimientos y limitantes del sistema en una delimitaci´on formal [4], [7]. La especificaci´on inicial define la interfaz entre el sis- tema y su ambiente, as´ı tambi´en la funcionalidad del sistema. Opcionalmente, pueden considerarse requerimientos no funcionales tales como: tama˜no, peso y restricciones de arquitectura. La representaci´on del sistema consiste en transformar la especificaci´on como una colecci´on de funciones del sistema que ser´an desarrollas independientemente en hardware o software [6].

Descripci´on y modelado del algoritmo

Ladescripci´ondel algoritmo consiste en escribir cada una de sus funciones en alg´un lenguaje de programaci´on, que preferentemente permita modularizar las funciones [2]. Unmodelo es un conjunto de instrucciones para generar datos estructurales y de com- portamiento [4]. La especificaci´on del sistema y su ambiente forman las bases para construir los modelos. El modelo estructural explica la descomposici´on del dise˜no en elementos b´asicos, mientras que el modelo funcional describe la funcionalidad completa del sistema y c´omo se integrar´a en su ambiente. El modelo din´amico asigna limitantes de tiempo a las funciones internas y muestra los detalles de los cambios de estado en el modelo del sistema. Estas tres descripciones son generalmente suficientes para generar un modelo simulable del sistema. El tipo de lenguaje de especificaci´on usado para el modelo es muy importante, debiendo ser capaz de ubicar diferentes niveles de granu- laridad para que el desarrollador pueda mapear componentes en diferentes niveles de abstracci´on correspondientes a m´odulos de hardware y software.

Particionamiento del sistema

Dado el modelo de cada funci´on, se decidir´a un posible destino para cada una las funciones del sistema: hardware o software. Esta ser´a la base del codise˜no del sistema, ya que esta partici´on simplemente representar´a el inicio de un proceso iterativo de refi- namiento basado en resultados de simulaci´on o implementaci´on. La Figura 2.3 muestra la ubicaci´on del primer particionamiento hardware/software del sistema, as´ı como los subsecuentes cambios en el particionamiento como resultado del refinamiento.

MS MI MH MS MI MH MS MI MH MS MI MH Subsistema de software Subsistema de hardware

Diseno y evaluacion del hardware Diseno y evaluacion del software

MS = Modelo del software MI = Modelo de la interfaz HM = Modelo del hardware

Refinamiento Particion inicial

Figura 2.3: Particionamiento inicial y refinamiento de la partici´on.

Simulaci´on

La simulaci´on es un proceso computacional que genera datos en respuesta a ins- trucciones del modelo codificadas apropiadamente. La simulaci´on es una forma de veri- ficar las especificaciones del dise˜no en el modelo. Este proceso se lleva a cabo observando escenarios de prueba del modelo codificados en esquemas experimentales. Los expe- rimentos reflejar´an las perspectivas y ayudar´an a orientar la construcci´on del dise˜no determinando los l´ımites y la relevancia de los componentes del modelo. En cada simu- laci´on se recolectan datos de los experimentos y se eval´uan las alternativas. Al asociar varios esquemas experimentales con alternativas del dise˜no en forma de modelos, se pueden hacer cambios en las alternativas para llegar a una soluci´on m´as apropiada [4].

Modificaciones y refinamiento de la partici´on

Como resultado de la simulaci´on y/o implementaci´on parcial del sistema se ob- tienen tiempos estimados del procesamiento de cierta funci´on en software o en hardware. Esta informaci´on lleva a tomar decisiones sobre cambios en el destino de las funciones que se traducen en cambios en la partici´on hardware/software [4]. Tales cambios hace que el modelo validado vaya evolucionando iterativamente, es decir, que se vaya refi- nando. El refinamiento involucra aspectos como el acoplamiento de los componentes del dise˜no que ayudar´a a generar interfaces id´oneas para sus interrelaciones.

Un criterio claro para decidir si el destino de una funci´on del sistema es adecuada consiste en evaluar la ecuaci´on (2.1) [2].

MinstRinst

Nsegm

>Tescr+ Tproc+ Tlect (2.1)

donde Minst es el n´umero de instrucciones del procesador requeridas para realizar la

operaci´on de una funci´on, Rinst es la unidad de tiempo de la instrucci´on, Nsegm es el

n´umero de etapas en la segmentaci´on (pipeline), Tescr es el tiempo requerido para trans-

ferir datos de la memoria al m´odulo en hardware, Tproc es el tiempo de procesamiento

de la funci´on en hardware y Tlect es el tiempo requerido para transferir datos desde el

m´odulo en hardware a la memoria. Si se satisface la desigualdad, entonces la funci´on deber´ıa ser procesada en hardware para que se obtenga una aceleraci´on del tiempo de ejecuci´on del sistema [2].

Mapeo del modelo

Consiste en la creaci´on del ambiente para el prototipo, mediante el alojamiento de los modelos de simulaci´on en componentes espec´ıficos (hardware, software e interfaces), guiado por la estimaci´on del desempe˜no de las etapas anteriores [4], [6].

Implementaci´on y prototipo

La plataforma de hardware elegida o disponible servir´a como una base de re- ferencia de la arquitectura computacional para definir los par´ametros de los m´odulos de software. Debe tenerse un cuidado especial en la elecci´on y dise˜no de tres tipos de interfaces: hardware-hardware, hardware-software y software-software [4]. Escoger apropiadamente estas interfaces garantizar´a la ejecuci´on apropiada del programa, mane- jo de la sincron´ıa y protecci´on de variables compartidas cuando los componentes sean

Related documents