10
2012
Interrupciones en la Arquitectura CISC | Ejemplo RSI

Interrupciones en la Arquitectura CISC
En este artículo explico con un ejemplo el tiempo total que tarda la CPU en realizar una tarea de Entrada Salida de datos.
El procesador tarda un tiempo en realizar una tarea de Entrada o Salida de datos, para esto el dispositivo que quiere realizar una transferencia envía una señal al procesador.
Después de que el procesador reciba la petición para realizar una interrupción y transferir esos datos, comienza el ciclo de reconocimiento de la interrupción. Este ciclo sirve para que el procesador deje de hacer lo que está haciendo y pase el control al RSI (Rutina de Servicio de la Interrupción).
Para hacer los cálculos de este ejemplo vamos a utilizar una máquina con las siguientes características:
Suponemos que un disco duro quiere transferir datos a la memoria del procesador, sabemos que el tiempo de latencia del disco es de 3 microsegundos. La velocidad de transferencia del disco será 20Mb/s. El procesador tiene una frecuencia de 2 Giga Hercios. El servicio de interrupción de rutinas (RSI) ejecuta 10 instrucciones de 3 ciclos de reloj cada una. La CPU necesita 8 ciclos de reloj adicional entre que detecta la interrupción y le pasa el control al RSI. Los tiempos de programación y finalización de la transferencia son de 20ns. . Por último sabemos que la transferencia será de 1000 datos de 4Bytes cada uno.
Para conocer el tiempo total que tarda la CPU en realizar toda la transferencia de datos tenemos que realizar las siguientes operaciones:
Primero conoceremos cuanto tiempo tarda el procesador en realizar un ciclo de reloj, para esto dividiremos 1 entre la frecuencia que tiene el procesador, que es 2 GHz. Por lo tanto, podemos saber que la CPU tarda 1/2 =0.5 en realizar un ciclo de reloj.
Sabemos que tarda 8 ciclos de reloj desde que detecta la interrupción hasta que le pasa el control al RSI, si tardamos 8 y cada ciclo es de 0.5 nano segundos, tendremos 8*0.5=4ns.
Ahora queremos conocer el tiempo que tarda en ejecutar una instrucción, que será 3 ciclos de reloj multiplicado por 0.5ns., el resultado es 1.5ns.
Después calcularemos el tiempo de ejecución RSI, que será 10 instrucciones multiplicado por el tiempo que tarda cada instrucción que es 1.5, por lo tanto será 10*1.5=15ns.
Por último, tenemos que realizar 1000 interrupciones, que multiplicado por el tiempo que tarda en ejecutar cada una (RSI) será igual a 1000*15=15000ns
15000ns que añadidos al tiempo que tarda en programar y finalizar la ejecución será igual a 15000+20ns= 15020ns.
Por lo tanto podemos saber que la CPU tardará 15020 nano segundos en transferir 1000 bloques de 4 Bytes cada uno, es decir, 4000 Bytes.
Artículos relacionados
Related Posts
Leave a comment
Entradas recientes
- Colores en el diseño de las redes sociales
- Mejora la velocidad de tu web
- Problemas de conexión con SMF
- Diversidad funcional | Interacción de las personas con los ordenadores
- Tecnicas de Black hat SEO
- Tutorial posicionamiento Web SEO II – Diseño y SEO
- Programar en lenguaje ensamblador | Ejemplo Práctico
- Interrupciones en la Arquitectura CISC | Ejemplo RSI
- Oracle RAC | Resolver Problemas de Permisos
- Traducir lenguaje Ensamblador a lenguaje Máquina | CISC
- Codificar en lenguaje ensamblador CISC | Ejemplos Matrices
- Memorias caché y algoritmos de reemplazo
- Clasificación de Sistemas de memoria
- Indexar contenido en Google
- Programación en Lenguaje ensamblador | Registro de estado
- Cómo eliminar el contenido duplicado de tu web
- Resolver error ora-01008 not all variables bound | frm-41380
- CURSOR DINÁMICO FORMS 10G
- PRAGMA
- Factores humanos y diseño en informática | Resumen
- Conceptos básicos de Interación Persona Ordenador | Apuntes
- Suma de polinomios con código ensamblador x86-64
- Desarrollar contenido SEO
- Eliminar campos del perfil administrador
- ORA-02291: integrity constraint | Oracle
- Función JavaScript sin conocer el número de parámetros
- Error 500 | Internal Server Error
- Recopilación de Redes Sociales
- Realidad aumentada Google Project Glass
- Bloquear IPs por .htaccess
- Ensamblador | Cambiar el orden de un Array
- Ensamblador | Algoritmo de la burbuja
- Programación en ensamblador | Arquitectura CISC
- Alternar colores en tablas con PHP y CSS
- Permisos en WordPress
- Programación en ensamblador (Resumen III) – Instrucciones
- Programación en ensamblador (Resumen II)
- Programación en ensamblador (Resumen I)
- Dibujar rutas en Google Maps | v3
- Paginar sin plugin en WordPress
- Tutorial Google Maps II ** Insertar marcas
- Tutorial Google Maps I
- Instalar Java en Ubuntu
- Enviar un email con PHP
- Recuperar Pc Packard Bell
- Claúsula RETURNING
- Paquete DBMS_UTILITY
- Sentencia CONTINUE | SQL
- GPS con Android | Mostrar tu posición
- Tutorial | Primeros pasos con IBM DB2
- Instrucción SAVEPOINT
- Diferencias entre the_excerpt y the_content | Resumir entradas
- Redireccionar Web | Métodos de redirección
- Clase Robot
- Formulario transparente en java | Robot
- Google Zeitgeist | Lo más buscado 2011
- Compartir contenidos Facebook – Tweetter | Blogger
- Plugin imprescindibles en wordpress (10 mejores)
- Resolver problemas de mantenimiento con WordPress
- Widget Hazte Fan para tu blog
- Introducción a la Minería de Datos
- Integrar tu Web en Facebook
- Debugar con ORACLE Forms Builder
- Test para Facebook | Desarrollo de aplicaciones
- Cursor dinámico en ORACLE FORMS
- Publicar en el muro con JavaScript SDK
- Sueldos en Informática
- Tutorial – Cómo crear aplicaciones para Facebook
- Mensajero de Windows con Java
- Tutorial posicionamiento Web SEO I
- AJAX en tres pasos
- Publicar con tu aplicación Facebook
- Aplicacion Facebook en Español
- Facebook vs Google (Adsense)
- Conectar con Facebook (Graph API)
- Conectar con Facebook | Utilizando el Php SDK
- Desarrollar aplicaciones para Facebook
- Como hacer que tu página no se almacene en la caché del navegador
- PAQUETE DBMS_LOB (IV). EJEMPLOS
- Aplicación para gestionar un Videoclub III
Recientes
- Navit: Buen artículo, tengo que probar dos o tres cosas que has puesto. Gracias
- admin: Hola Arturo, No se muy bien como es la situación de tus equipos, pero en principio si un equipo se conecta al...
- Arturo: Sabrias como publicar forms 10 a web? Es decir yo tengo el puerto 8889 (NAT) a máquina con OC4J pero no...
- admin: Hola Andres, Mira, en esta otra “aplicación” tienes la función publishwall que publica en el muro...
- andres: gran aporte lo de publicar en tu muro con dialogo lo sabia pero el sin dialogo no queria saber si me podrian...