Comunicación interna en la computadora

 2.1 Buses 

Un bus es un sistema de comunicación que transfiere datos entre componentes dentro de una computadora, o entre computadoras. Este termino abarca todos los componentes de Hardware relacionados (cable, fibra óptica, etc.) y de Software, incluyendo los protocolos de comunicaciones.

Tipos de buses:ç
  •  bus local
  •  bus de datos
  •  bus de direcciones
  •  bus de control
  •  buses normalizados 

Bus local: Transporta datos entre componentes (CPU, memoria, E/S, etc.) de una manera rapida a  diferencia del bus tradicional.
Bus de datos (bidireccional): Transporta datos entre componentes (CPU, memoria, E/S, etc.).
Bus de direcciones (unidireccional): Transporta las direcciones de los componentes que la CPU desea utilizar.
Bus de control (bidireccional): Transporta las órdenes que determinan la operación de transferencia a realizar por las líneas de datos y direcciones, y marcan el ordenamiento temporal de las señales que circulan por el bus.
Bus de arbitraje (bidireccional): Establece la prioridad entre diferentes peticiones de acceso al bus. Por ejemplo:

  •  Petición del bus 
  •  Cesión del bus 
  •  Ocupación del bus

Buses normalizados: son aquellos que siguen especificaciones de un estándar previamente acordado entre diferentes compañías y respaldado por una sociedad de prestigio en el area p.ej. el IEEE. Ejemplos
Paralelos internos: PCI/104-Express y PATA (Parallel Advanced Technology Attachment). 
Seriales internos: PCI Express, Serial ATA (SATA) e I²C. 
Paralelos externos: HIPPI y IEEE-488. 
Seriales externos: Thunderbolt, USB, RS-232, IEEE 1394 interface (FireWire) y eSATA.

En las especificaciones de los buses normalizados se distinguen varios niveles: 

Nivel mecánico. Se recoge la forma y tamaño de los conectores, el número de contactos por conector y el número de dispositivos que soporta el bus. 
Nivel eléctrico. Se especifican los valores de voltaje de las diferentes señales, polarización, etc. 
Nivel lógico. Especifica la función de cada señal del bus: direcciones, datos, control, etc. 
Nivel de temporización o sincronismo. Especifica el protocolo de transferencia empleado. 
Nivel de arbitraje. Especifica el protocolo de arbitraje que utiliza el bus.

Ciclo del bus

El ciclo del bus es el ciclo de pasos requerido para ejecutar una única transacción de lectura o escritura entre la CPU y la unidad de memoria.
En el ciclo de lectura la CPU fetches (“saca”) datos de la unidad de memoria. El el ciclo de escritura la CPU envía datos a la unidad de memoria


2.2 Direccionamiento: modo real, modo protegido, modo real virtual.

Los llamados modos de direccionamiento son las diferentes maneras de especificar en informática un operando dentro de una instrucción. Cómo se especifican e interpretan las direcciones de memoria según las instrucciones. Un modo de direccionamiento especifica la forma de calcular la dirección de memoria efectiva de un operando mediante el uso de la información contenida en registros y / o constantes, contenida dentro de una instrucción de la máquina o en otra parte


ransferencia de registros

Se le conoce por las siglas RTL( Register Transfer Languaje) que como su nombre indica es una forma simbolica de describir las transferencias de la informaciòn y las operaciones entre elementos de memoria

Se pueden concebir infinitas versiones de un lenguaje RTL cuyas principales diferencias son sintacticas.

MODALIDADES DE OPERACION

El procesador soporta numerosos modos de operación para código x86, en los cuáles no todas las instrucciones están disponibles. Un sub-repertorio de instrucciones de 16-bit está disponible en “modo real” (disponible en todos los procesadores x86), “modo protegido 16-bit” (disponible desde el Intel 80286), o en el “modo v86” (disponible desde el Intel 80386). Por su parte, las instrucciones de 32-bits están disponibles para el “modo protegido 32-bit” y para el “modo heredado” (disponible con las extensiones de 64 bits). El repertorio de instrucciones parte de ideas similares en cada modo, pero da lugar a distintas formas de acceso a memoria y de este modo emplea estrategias de programación diferentes.

Los modos en los que el código x86 puede ser ejecutado son:
• Modo real (16-bit)
• Modo protegido (16-bit y 32-bit)
• Modo 8086 virtual (16-bit)
• System Management Mode (16-bit)
• Modo largo (64-bit)

MODO REAL

El modo real (también llamado modo de dirección real en los manuales de Intel) es un modo de operación del 80286 y anteriores CPUs compatibles de la arquitectura x86. El modo real está caracterizado por 20 bits de espacio de direcciones segmentado (significando que solamente se puede direccionar 1 MB de memoria), acceso directo del software a las rutinas del BIOS y el hardware periférico, y no tiene conceptos de protección de memoria o multitarea a nivel de hardware. Todos los CPUs x86 de las series del 80286 y posteriores empiezan en modo real al encenderse el computador; los CPUs 80186 y anteriores tenían solo un modo operacional, que era equivalente al modo real en chips posteriores.



La arquitectura 286 introdujo el modo protegido -Leyva. (2004), permitiendo, entre otras cosas, la protección de la memoria a nivel de hardware. Sin embargo, usar estas nuevas características requirió instrucciones de software adicionales no necesarias previamente. Puesto que una especificación de diseño primaria de los microprocesadores x86 es que sean completamente compatibles hacia atrás con el software escrito para todos los chips x86 antes de ellos, el chip 286 fue hecho para iniciarse en ‘ modo real ‘ – es decir, en un modo que tenía apagadas las nuevas características de protección de memoria, de modo que pudieran correr sistemas operativos escritos para microprocesadores más viejos. Al día de hoy, incluso los más recientes CPUs x86 se inician en modo real al encenderse, y pueden correr el software escrito para cualquier chip anterior.

Los sistemas operativos DOS (MS-DOS, DR-DOS, etc.) trabajan en modo real. Las primeras versiones de Microsoft Windows, que eran esencialmente un shell de interface gráfica de usuario corriendo sobre el DOS, no eran realmente un sistema operativo por sí mismas, corrían en modo real, hasta Windows 3.0, que podía correr tanto en modo real como en modo protegido. Windows 3.0 podía correr de hecho en dos “sabores” de modo protegido – el “modo estándar”, que corría usando modo protegido, y el “modo mejorado 386”, que además usaba direccionamiento de 32 bits y por lo tanto no corría en un 286 (que a pesar de tener modo protegido, seguía siendo un chip de 16 bits; los registros de 32 bits fueron introducidos en la serie 80386). El Windows 3.1 removió el soporte para el modo real, y fue el primer ambiente operativo de uso masivo que requirió por lo menos un procesador 80286 (no contando con el Windows 2.0 que no fue un producto masivo). Casi todos los sistemas operativos modernos x86 (Linux, Windows 95 y posteriores, OS/2, etc.) cambian el CPU a modo protegido o a modo largo en el arranque.

MODO PROTEGIDO

El modo protegido es un modo operacional de los CPUs compatibles x86 de la serie 80286 y posteriores. El modo protegido tiene un número de nuevas características diseñadas para mejorar las multitareas y la estabilidad del sistema, como protección de memoria, y soporte de hardware para memoria virtual así como de conmutación de tareas. A veces es abreviado como p-mode y también llamado Protected Virtual Address Mode (Modo de Dirección Virtual Protegido) en el manual de referencia de programador del iAPX 286 de Intel, (Nota, iAPX 286 es solo otro nombre para el Intel 80286). En el 80386 y procesadores de 32 bits posteriores se agregó un sistema de paginación que es parte del modo protegido.


La mayoría de los sistemas operativos x86 modernos corren en modo protegido, incluyendo Linux, FreeBSD, OpenBSD, NetBSD, y Microsoft Windows 3.0 y posteriores. (Windows 3.0 también corría en el modo real para la compatibilidad con las aplicaciones de Windows 2.x).

El otro modo operacional principal del 286 y CPUs posteriores es el modo real, un modo de compatibilidad hacia atrás que desactiva las características propias del modo protegido, diseñado para permitir al software viejo correr en los chips más recientes. Como una especificación de diseño, todos los CPUs x86 comienzan en modo real en el momento de carga (boot time) para asegurar compatibilidad hacia atrás con los sistemas operativos heredados, excepto el oscuro Intel 80376 diseñado para aplicaciones empotradas. Estos procesadores deben ser cambiados a modo protegido por un programa antes de que esté disponible cualquier característica de este modo. En computadores modernos, este cambio es generalmente una de las primeras tareas realizadas por el sistema operativo en el tiempo de carga.

Mientras que la multitarea en sistemas corriendo en modo real es ciertamente posible mediada por software, las características de protección de memoria del modo protegido previenen que un programa erróneo pueda dañar la memoria “propia” de otra tarea o del núcleo del sistema operativo. El modo protegido también tiene soporte de hardware para interrumpir un programa en ejecución y cambiar el contexto de ejecución a otro, permitiendo pre-emptive multitasking.


MODO 8086 VIRTUAL

En el microprocesador 80386 y posteriores, el modo 8086 virtual, también llamado modo real virtual o VM86, permite la ejecución de aplicaciones de modo real que violan las reglas bajo control de un sistema operativo de modo protegido.
El VM86 usaba la forma de segmentación del modo real, pero usaba la dirección resultante de 20 bits (realmente 21 bits), tratándola como una dirección lineal, de tal manera que era sujeta a paginación.

Era usado para ejecutar programas DOS en Microsoft Windows/386, Windows 3.x, Windows 95, Windows 98, Windows Me, y OS/2 2.x y más adelante, a través de las máquinas DOS virtuales, también en SCO UNIX a través de Merge, y en Linux por medio de dosemu.

Los programas de DOS de modo protegido, tanto de 16 como de 32 bits, no se ejecutan en el modo 8086 virtual, sino en modo usuario, siempre y cuando fueran compatibles con DPMI. Así que los emuladores arriba mencionados hacen de hecho más que solo el soporte para el modo 8086 virtual.


2.3 Temporización: reloj de sistema, reset del sistema, estados de espera.

Temporizador

El temporizador es un circuito digital , dispone de dos salidas al igual que un flip flop, una salida es la inversa de la otra, a diferencia del flip flop quién cuenta con dos estados estables, el temporizador solamente posee un estado estable, el otro estado es inestable, permanece en su estado estable, hasta que se activa con un pulso de entrada, una vez que se activa cambia a su estado inestable y ahí permanece por un periodo fijo de tiempo tw , este tiempo lo determina una constante de tiempo RC externa que se conecta al temporizador, después de que transcurre el tiempo tw , las salidas dos salidas del temporizador regresan a su estado estable, hasta que se activan otra vez. La finalidad de la temporización es retardar el paso de una señal desde un nodo del circuito hasta otro punto, el diseño de este circuito se realiza con un dispositivo que se conoce con el nombre de “monoestable” ó “temporizador”, éste elemento electrónico dispone de una entrada “E” y una salida “S”, se tienen tres temporizadores básicos que se denominan; el primero, temporización a la activación, el segundo se llama temporización a la desactivación y el tercero es una combinación de las dos anteriores, temporización a la “activación y desactivación” simultaneas. Se dispone de dos tipos de comportamiento en que se manifiestan las salidas de los temporizadores, "redisparables" y "no redisparables" y su entrada responde a dos tipos de disparo, "activación" y "desactivación"


Reloj del sistema
El reloj de una computadora se utiliza para dos funciones principales:
1. Para sincronizar las diversas operaciones que realizan los diferentes subcomponentes del sistema informático.
2. Para saber la hora.
El reloj físicamente es un circuito integrado que emite una cantidad de pulsos por segundo, de manera constante. Al número de pulsos que emite el reloj cada segundo se llama Frecuencia del Reloj.
La frecuencia del reloj se mide en Ciclos por Segundo, también llamados Hertzios, siendo cada ciclo un pulso del reloj. Como la frecuencia del reloj es de varios millones de pulsos por segundo se expresa habitualmente en Megaherzios.
El reloj marca la velocidad de proceso de la computadora generando una señal periódica que es utilizada por todos los componentes del sistema informático para sincronizar y coordinar las actividades operativas, evitando el que un componente maneje unos datos incorrectamente o que la velocidad de transmisión de datos entre dos componentes sea distinta.
Cuanto mayor sea la frecuencia del reloj mayor será la velocidad de proceso de la computadora y podrá realizar mayor cantidad de instrucciones elementales en un segundo.
El rango de frecuencia de los microprocesadores oscila entre los 4,77 megaherzios del primer PC diseñado por IBM y los 200 megaherzios de las actuales computadoras basadas en los chips Intel Pentium.
En máquinas de arquitectura Von Neumann la mayoría de las operaciones son serializadas, esto significa que la computadora ejecuta los comandos en un orden preestablecido. Para asegurarnos de que todas las operaciones ocurren justo en el tiempo adecuado, las máquinas 80×86 utilizan una señal alternante llamada el reloj del sistema.
En su forma básica, el reloj del sistema maneja toda la sincronización de un sistema de cómputo. El reloj del sistema es una señal eléctrica en el bus de control que alterna entre los valores de cero y uno a una tasa dada. La frecuencia en la cual el reloj del sistema alterna entre cero y uno es llamada frecuencia del reloj de sistema. El tiempo que toma para cambiar de cero a uno y luego volver a cero se le llama periodo de reloj, también llamado ciclo de reloj. La frecuencia del reloj es simplemente el número de ciclos de reloj que ocurren en un segundo, en sistemas actuales, éste valor excede los 200 ciclos por segundo, siendo ya común frecuencias del orden de los 366 Mhz. (Mega Hertz?, que equivale a un millón de ciclos por segundo). Observe que el periodo de reloj es el valor inverso de la frecuencia, por lo tanto, para un sistema de 200 Mhz el periodo es igual a 5 nanosegundos. Para asegurar la sincronización, el CPU inicia una operación ya sea en el flanco ascendente (cuando la señal cambia de cero a uno) ó en el descendente (cuando la señal cambia de uno a cero). Como todas las operaciones de un CPU están sincronizadas en torno a su reloj, un CPU no puede ejecutar operaciones más rápido que la velocidad del reloj.

RESET DEL SISTEMA
 Se conoce como reset a la puesta en condiciones iniciales de un sistema. Este puede ser mecánico, electrónico o de otro tipo. Normalmente se realiza al conectar el mismo, aunque, habitualmente, existe un mecanismo, normalmente un pulsador, que sirve para realzar la puesta en condiciones iniciales manualmente.
En el ámbito de códigos binarios, trata de poner a 0, así como set, poner a 1.


ESTADOS DE ESPERA
Cuando se conectan tarjetas al bus de la PC, un problema común es igualar la velocidad de los ciclos del bus con la de las tarjetas. Es común que una tarjeta sea más lenta que el bus. Así, el bus de la PC esta diseñado para resolver este problema. La señal READY del bus se puede usar para extender la longitud del ciclo del bus para igualar una tarjeta lenta o parar el bus del sistema hasta que se sincronice con el ciclo de la tarjeta.
Como se mencionó anteriormente, los ciclos del bus del 8088 normalmente son de cuatro pulsos y se describen por T1 hasta T4. En algunos ciclos el hardware de la PC, automáticamente inserta un pulso ocioso extra llamado TW. La señal READY se usa para insertar estados nuevos o adicionales de espera. Debido a que los diferentes ciclos del bus requieren distintos tiempos, la señal READY se debe controlar de manera diferente.
Generación de estados de espera en ciclos de bus de memoria
El hardware de la PC no inserta estados de espera en los ciclos de lectura o escritura a memoria, sino que esto lo hace la tarjeta usando la señal READY. La figura 22 ilustra las señales de tiempo necesarias para generar un estado de espera para un ciclo de lectura o escritura a memoria.


Interrupciones de hardware


Interrupciones
Una interrupción es el rompimiento en la secuencia de un programa para ejecutar un programa especial llamando una rutina de servicio cuya característica principal es que al finalizar regresa al punto donde se interrumpió el programa.


Las interrupciones son un metodo del que disponen los dispositivos e incluso los procesos para hacer notar a la CPU la aparición de alguna circunstancia que requiera su intervención. De este modo, los dispositivos pueden provocar que la CPU deje por el momento la tarea que estaba realizando y atienda la interrupción -Mano, M. (1994)


Una vez atendida, seguira con su labor anterior. Cuando no existían interrupciones, era el procesador el que tenía que estar continuamente comprobando el estado del dispositivo cuando lo necesitaba.

Existen dos tipos de interrupciones
Interrupciones por software:

Este tipo de interrupciones se programan por el usuario, éste decide el tiempo en el que se van a ejecutar.


Las interrupciones de software son eventos síncronos que son provocadas por el programa en ejecución usando una función especial del lenguaje, esto puede ocurrir al llamar a la instrucción INT, al realizar una división por 0 o realizar una petición de una interrupción externa.

Tienen como objetivo el que la CPU ejecute algún tipo de función. Al terminar de ejecutarse esta función, se seguirá ejecutando el programa que provocó la interrupción.

Este tipo de interrupciones es la forma más importante que tendrán los programas de ejecutar funciones especiales del DOS (Disk Operating System) o del BIOS (Basic Input Output System). Estas funciones tienen un número de interrupción software asociada.

Cuando un programa lanza una interrupción de este tipo, la CPU ejecuta su función de tratamiento asociada. Se guarda la máscara de interrupciones, se modifica la máscara a fin de habilitar selectivamente las interrupciones que permitiremos durante la ejecución de la rutina, se habilitan globalmente las interrupciones seteando el flag IF en 1 y se ejecuta la rutina de atención de la interrupción solicitada. 

Interrupciones por hardware:
Son las que se provocan por medio de los dispositivos externos al procesador. No son programadas. Entre las interrupciones de hardware existen dos tipos de interrupciones:

Interrupciones por hardware enmascarables: Son las que el usuario decide si quiere o no ser interrumpido.

Interrupciones por hardware no enmascarables (NMI): Son las que siempre interrumpen al programa. Estas interrupciones llegan a través de una línea directamente al procesador y cuando ésta se activa, el CPU provoca una interrupción por software.

Las interrupciones tienen distintas prioridades predefinidas que indican que interrupción tiene mayor prioridad y no puede se interrupida por una de menor prioridad, así el Registro de Interrupciones Activas (ISR) indica el número de la interrupción en concreto que se está realizando.

Si llega otra interrupción de hardware con menor o igual prioridad no se ejecutará, pues se asume que aún está en ejecución la anterior, mientras el ISR esté con su número. 
Los IRQ se encuentran numerados, y cada dispositivo hardware se encuentra asociado a un número IRQ. Por ejemplo, el reloj (en IRQ 0) tiene una prioridad más alta que el teclado (IRQ 1).


ENMASCARABLE
Todos los microprocesadores prevén algún mecanismo para sincronizar sucesos externos, tales como los fallos de alimentación, peticiones de servicio de señales exteriores, etc. Un método sencillo es el llamado “pollin” que consiste en asociar cada posible suceso asíncrono a un indicador que permite reconocer si el suceso correspondiente necesita ser atendido o no. El microprocesador comprueba todas los indicadores siguiendo una secuencia determinada, y da servicio a aquel que lo precisa. Este método es poco eficiente ya que el microprocesador ha de dedicarse exclusivamente a verificar el estado de los indicadores y, si el número de posibles sucesos externos es grande, el tiempo que pasa hasta que los atiende puede ser excesivamente largo.
El método de interrupciones es mucho más eficaz a la hora de atender peticiones aleatorias. El principio de funcionamiento es el siguiente: un suceso asíncrono que necesita servicio genera una petición de interrupción; cuando el microprocesador la recibe suspende momentáneamente el trabajo que está ejecutando y pasa a realizar la rutina de atención a la interrupción. Una vez finalizada continúa realizando el programa por donde lo dejó. Con este método el microprocesador sólo se ocupa de los sucesos externos cuando se recibe una petición de interrupción, pudiéndose dedicar el resto del tiempo a realizar otras tareas.



NO ENMASCARABLE
Una interrupción no enmascarable (o NMI) es un tipo especial de interrupción usada en la mayoría de los microordenadores como el IBM PC y el Apple II.
Una interrupción no enmascarable causa que la CPU deje lo que está haciendo, cambie el puntero de instrucción para que apunte a una dirección particular y continúe ejecutando el código de esa dirección. Se diferencia de los otros tipos de interrupción en que los programadores no pueden hacer que la CPU las ignore, aunque algunos ordenadores pueden por medios externos bloquear esa señal, dando un efecto similar al resto de las interrupciones.



Acceso Directo a memoria.

Direct Memory Access o DMA. El acceso directo a memoria es una características de las computadoras y microprocesadores modernos que permite que ciertos subsistemas de hardware dentro de la computadora puedan acceder a la memoria del sistema para la lectura y/o escritura, independientemente de la unidad central de procesamiento (CPU). De lo contrario, la CPU tendría que copiar cada porción de dato desde el origen hacia el destino, haciendo que ésta no esté disponible para otras tareas.
Los subsistemas de hardware que utilizan DMA pueden ser: controladores de disco duro, tarjetas gráficas, tarjetas de red, tarjetas de sonido y tarjetas aceleradoras. También es utilizado para la transferencia de datos dentro del chip en procesadores con múltiples núcleos. DMA es esencial en los sistemas integrados.
Características generales del DMA
Aquellas computadoras que tienen canales DMA pueden transferir datos desde y hacia los dispositivos con menos utilización de CPU que aquellas computadoras sin canales DMA. Básicamente una transferencia DMA consiste en copiar un bloque de memoria de un dispositivo a otro. Esa transferencia se lleva a cabo por el controlador DMA, en lugar del CPU. El controlador DMA es generalmente un chipset de la placa madre.
En computadoras sin DMA, el CPU generalmente se ocupa completo durante toda la operación de lectura o escritura de la memoria y, por lo tanto, no está disponible para realizar otras tareas. Con DMA, el CPU puede iniciar la transferencia, luego realizar otras operaciones mientras la transferencia está en progreso y luego recibir una interrupción del controlador de DMA una vez que la transferencia termina.
Sin DMA se utiliza el modo PIO para la comunicación de periféricos con la memoria y de instrucciones de load/store en el caso de chips con multinúcleos.
DMA es útil en aplicaciones en tiempo real y en el procesamiento de flujos de datos.
Tipos de transferencia DMA o Acceso directo a memoria
  • DMA por robo de ciclo: es uno de los métodos más usados, ya que requiere poca utilización del CPU. Esta estrategia utiliza uno o más ciclos de CPU para cada instrucción que se ejecuta. Esto permite alta disponibilidad del bus del sistema para la CPU, aunque la transferencia de datos se hará más lentamente.
  • DMA por ráfagas: esta estrategia consiste en enviar el bloque de datos solicitado mediante una ráfaga empleando el bus del sistema hasta finalizar la transferencia. Permite una altísima velocidad, pero la CPU no podrá utilizar el bus de sistema durante el tiempo de transferencia, por lo que permanece inactiva.
  • DMA transparente: esta estrategia consiste en emplear el bus del sistema cuando la CPU no lo necesita. Esto permite que la transferencia no impida que la CPU utilice el bus del sistema; pero la velocidad de transferencia es la más baja posible.
  • DMA Scatter-gather: esta estrategia permite transmitir datos a varias áreas de memoria en una transacción 
  • DMA simple. Equivale al encadenamiento de múltiples peticiones DMA simples. Su objetivo es librar a la CPU la tarea de la copia de datos e interrupciones de entrada/salida múltiples. 

Para saber mas......

https://youtu.be/bu3ToO5mJU8

http://itpn.mx/recursositics/5semestre/arquitecturadecomputadoras/Unidad%20II.pdf



Referencias:

Sergio Guadalupe Gonzales Leyva. (2004). Comunicación interna en la computadora . 20/03/2018, de universidad iberoamericana Sitio web: http://www.bib.uia.mx/tesis/pdf/01449/014499.pdf

Mano, M. (1994). Arquitectura de computadoras. 3ª ed. México: Prentice-Hall.* 

Levano Leocadio Jesus 
Sanchez S. Lizeth Gpe      4ºA TICS



Comentarios

Entradas populares

Imagen