C U R S O D E A S S E M B L E R = = = = = = = = = = = = = = = = Clase Nro: 1. Lamberti Ricardo J. Tema : Hardware 4:902/13.9 INTRODUCCION (1§ Parte) ============================================================================= ------------------ Por que assembler? ------------------ Los componentes que hacen a una computadora pueden agruparse en dos grandes grupos: El hardware y el Software. No me detendre a explicar la diferencia entre estos dos conceptos. Solo recalcare que es importante conocer como funciona el Hardware de una m quina, si se quiere aprender a programar en forma eficiente. Los esfuerzos de los grandes desarrolladores estan abocados a separar la programaci¢n de lo que es la arquitectura de la m quina. Lo que se utiliza para este objetivo es poner capas que ocultan el manejo que hace en verdad la maquina con los datos. Aqui surge una pregunta, hasta que punto se pueden abstraer y alejarse de la real Arquitectura, al parecer no hay limite, excepto el tiempo y poder de expresi¢n. Cada capa agrega m s tiempo al proceso real, ademas de quitar poder de expresi¢n. En contrapartida, es mas facil programar cuanto mayor sea el nivel de abstraci¢n. La soluci¢n no es £nica y depende de lo que se desea realizar. Hay que poner en la balanza velocidad de ejecuci¢n y facilidad en la correcci¢n. Hay problemas que por su naturaleza la velocidad de ejecuci¢n y las limitaciones que ofrecen niveles superiores de abstracci¢n dan por el suelo con la utilizaci¢n de estos. Es escencial para el programador, estar a la altura de las circunstancias y resolver estos problemas con las herramientas adecuadas, es decir una herramienta que le permita manipular el hardware de su computador. Los problemas de esta indole son por ejemplo: Visualizacion de graficos, redes, virus, antivirus, manejo de diferentes tipos de plaquetas, etc. ---------- Lo basico: ---------- Arquitectura Von Newman A Von Newman por los a¤os 50' se le ocurrio dise¤ar un computador con las siguientes componentes: un CPU, una Memoria, una unidad de Entrada/ Salida y un par de Buses. Fig N§1 --------------------------------------------------------------------------- ___________ | | | | |<----->| C P U |<------>| b | | | | b u | *|<->|___________| | u s | b| ___________ | s | u| | | | d | s| | | | d e | | | Memoria | | e |<----->| |<------>| d | c| | | | d i | o| | | | a r | n| | | | t e | t|<->| | | o c | r| |___________| | s c | o| | . | l|<-> ___________ | | | | | |<----->| E/S |<------>| |___________| FIG N§1: Arquitectura Von Newmman * El bus de control no es un bus, en el sentido que sus datos no tienen una unicidad de sentido entre ellos, sino que cada linea contiene su propia informacion. Volveremos sobre esto mas detalladamente cuando expliquemos bus de control. -------------------------------------------------------------------------- Este modelo tenia algo muy novedoso en la memoria coexistian datos y codigo. La Unidad de Procesamiento Central (CPU) La CPU es el cerebro del sistema, ella controla y administra el funcionamiento de los dispositivos. Se encarga de leer la instrucci¢n a ejecutar, decodificarla, buscar sus parametros y ejecutarla. La CPU contiene una serie de registros, estos son dispositivos que pueden alamacenar una cierta cantidad de bits (en el caso de las 8086: 16 bits). Algunos de estos registros pueden ser accedidos por los usuario y modificados por estos. En la 8086 los registros accesibles por el usuario son: AX, BX, CX, DX, ES, DS, SS, CS, IP, BP, DI y SI. Tambien dispone de un conjunto de bits que indican el estado actual del computador, llamados FLAGS (banderas). Estos Flags indican si en la ultima operaci¢n hubo acarreo, si el resultado fue cero, y/o un n£mero negativo, etc. La memoria La memoria puede ser vista como una sucesion de celdas, de k bits. A esta medida de k bits se la denominara PALABRA. -------------------------------------------------------------------------- k bits=1 Palabra Dir. /----^---\ __________ / 0 |__________| ------> celda | 1 |__________| n | 2 | | 2 palabras < . ............ | 2ü-3 |__________| | 2ü-2 |__________| \ 2ü-1 |__________| n= bits del bus de direccionamiento. k= bits del bus de datos. FIG Nro 2: Memoria ___________________________________________________________________________ Cada celda puede ser accedida individualmente, indicando cual se desea atraves del bus de direcciones. Los datos que se almacenan en la memoria se movilizan atraves del bus de datos. Fig 2 Unidad de Entrada/Salida Esta unidad se encarga de la comunicaci¢n con los perifericos, teclado, discos, cintas, monitores, cd-rom, etc. Utiliza tambien el bus de datos y direcciones para enviar y recibir datos del CPU o la Memoria. Bus de Direcciones El bus de direcciones es donde el CPU carga la direcci¢n que desea recibir o enviara por el bus de datos, de la memoria o la unidad de Entrada/Salida. Bus de Datos El bus de datos es por donde lo datos son transportados en todas direcciones. Bus de Control El bus de control lleva informaci¢n importante para el funcionamiento de la maquina, como ser el Reloj, las interrupciones, el reset, si la direccion en el bus es para la memoria o la unidad de E/S, y otras. --------------------------------------- Conceptos basicos del hardware de la PC --------------------------------------- Ahora que tienen los conceptos generales, estudiemos como metieron todas estas cosas en la PC. El nacimiento de la PC -- ---------- -- -- -- En la epoca que surgio la PC, la idea de una minicomputadora en el escritorio, no era novedosa, pero habia sido llevada a cabo por empresas que no tenian ni por asomo el peso de IBM. IBM dise¤o el Data System/ 23 DataMaster. Pero el DataMaster llevaba en su interior un procesador INTEL de 8 bits, en el a¤o 1980, ya no estaba a la altura de los tiempos pues ya habia empezado la era de los CPU de 16 bits. Con lo cual se planifico un nuevo y revolucionario aparato. Seleccion del procesador --------- --- ---------- Los primeros representantes de las CPU de 16 bits fueron los procesadores 8086 y 8088 de Intel. Ambos disponian de un registro de 16 bits y tenian direcciones de memoria de 1 MB (increiblemente grande comparada con el estandart de la epoca 64 Kb). Esta no era la unica razon por la que se penso en estos procesadores. Ambos tenian ademas, toda una serie de chips de soporte, y un sistema operativo (DOS) y un interprete (BASIC) desarrollados por una prometedora y reciente empresa Microsoft. Finalmente, se decidio por el 8088, que obtuvo preferencia con respecto a su hermano gemelo, porque si bien internamente trabajaba en 16 bits, con el mundo exterior se comunicaba a 8 bits. Y se disponia de un bus de 8 bits, el de la DataMaster. El bus conecta la placa madre de la PC, en la cual se encuentra el procesador y los chips de soporte, con la memoria y los chips de ampliacion. Por lo tanto, hecharemos una mirada por el BUS. ------ El Bus ------ El bus es el capitulo mas oscuro en la historia del PC, pues IBM abierto a brindar toda la informacion sobre su nueva computadora, no hizo lo mismo con el bus de esta. No difundiendo los documentos sobre las se¤ales del bus. Suponiendo seguramente que a nadie le interesaria. Pero los fabricantes de placas de ampliaci¢n pronto, a pesar de la falta de informaci¢n, comenzaron ha hacer tarjetas de ampliacion con hardware adicional. De esta manera, el mercado no solo absorvio las plaquetas de IBM sino tambien las de otras empresas. Este fue lo que catapulto a la PC, pues el hecho de ser un sistema abierto, permitia agregar y agregar ampliaciones. El bus era el centro de esta expansion, ya que la PC conduce todos los datos y direcciones completo hacia fuera y conecta con ellos la memoria RAM, las tarjertas de ampliacion y algunos chips de soporte. Forma de funcionamiento del Bus de la PC ----- -- -------------- --- --- -- -- -- El bus representa un cable con 62 lineas, que vendria ha ser la autopista de datos dentro de la PC. Este se controla y maneja desde la CPU. El bus esta dividido principalmente en dos pistas separadas, el bus de datos y de direcciones. En el bus de direcciones se expecifica la direccion a la cual se quiera acceder en la memoria, (cada linea del bus puede tomar dos valores 0 o 1) cuantos mas lineas se dispongan para el bus de direcciones mayor sera el area direccionable. k 2 = espacio direccionable (donde k es la cantidad de bits destinados al bus de direcciones) En el bus de direcciones original habia 20 lineas con lo cual se puede direccionar hasta 1 MB. Los datos se pasan atraves del bus de datos. En un principio este tenia 8 bits, 1 Byte. Si se queria almacenar el contenido de un registro (que tenian 16 bits) se debia dividirlo en dos partes de una byte cada una y transmitirlos uno a continuacion del otro. Aparte de estos dos buses existen una veintena de lineas mas destinadas a la comunicacion entre el CPU, la memoria y otros dispositivos, estas lineas suelen llamarse bus de control (Aunque como digimos anteriormente, no es un bus en el sentido que los datos observados en conjunto no tienen ningun significado, son en si lineas independientes) Otro concepto interesante es que en la PC, todos los dispositivos conectados al bus escuchan todo. Esto quiere decir, que a todos les llego lo que por alli se trasmite, pero solo se hacen cargo de esos datos los dispositivos a los que los datos que por alli circulan les incube. Y los que no los ignoran, y esperan a la proxima rafaga que quizas les interese algun dato. Por esto es que a veces surgen conflictos entre plaquetas. El bus AT -- --- -- En el a¤o 1991 aparecio finalmente un estandart internacional, que definio el bus. Pero este estandart se refiere solo al bus AT. Ya que el bus de la PC no se lo podia considerar una "autopista de datos" ya que solo tenia 8 bits. Por lo tanto con la introduccion de la AT al mercado aparecio este nuevo bus en el mundo de la PC. Este bus tenia 16 bits pero era compatible con su antecesor. No solo se amplio el bus de datos, sino tambien el de direcciones a 24 bits. De modo que la AT podia tener una memoria de hasta 16 MB. Ademas tambien se aumento la velocidad de las se¤ales de frecuencia de 4,77 Mhz a 8 Mhz. Velocidad que aun hoy mantiene transformandose en un cuello de botella en los procesadores mas modernos. Actualmente el Bus AT ha sido mejorado por otros modelos superiores como el Micro Channel y el Bus EISA. El bus AT fue posteriormente denominado Bus ISA. Los Chips de soporte --- ----- -- ------- A modo de auxiliar se le dio al procesador un par de elementos adicionales los cuales conserva aun hoy. Algunos han sido en la actualidad incluidos dentro del mismo chips de silicio. Estos elementos se denominan con frecuencia controladores, pues su funcion es controlar alguna parte del hardware para aligerar la carga de la CPU. Y esta disponga de mas tiempo para ejecutar los programas del usuario. Por ahora solos los mencionaremos, y diremos que son mas adelante veremos como programarlos. El controlador DMA (8237) -- ----------- --- ------ DMA significa Acceso Directo a Memoria. Se utiliza para mover informacion desde los dispositivos y la memoria hacia la memoria. Lamentablemente el DMA solo puede mostrar sus ventajas en CPU lentas ya que su velocidad depende del bus, y como vimos antes este es extremadamente mas lento que los CPU y aun que las unidades de disco duro mas modernas. Por esto actualmente se usa este controlador en muy pocas areas como son por ejemplo el sonido. A pesar de esto el chip continua estando en todas las PC, incluso el AT tiene dos DMA. Pues este chip se usa para realizar el RAM-Refresh. El controlador de Interrupciones (8259) -- ----------- -- -------------- ------ Este controlador se encarga de manejar las interrupciones, sera explicado con detalle mas adelante Interface de Periferia (8255) --------- -- --------- ------ Crea una conexion entre la CPU y los dispositivos perifericos como el teclado y el parlante. Este actua como una especie de intermediario utilizado por la CPU para comunicar determinadas se¤ales al dispositivo deseado. El generador de frecuencias del Reloj (8248) -- --------- -- ----------- --- ----- ------ Si se considera al procesador como el cerebro de computador, este dispositivo deberia ser tomado como el corazon del sistema. Este dispositivo sirve para sincronizar toda la actividad en la PC. Temporizador (8253) ------------ ------ Este elemento denominado tambien Timer. Es un dispositivo programable que emite pulsos cada cierto tiempo determinado y constantemente por su lineas de salida. Puede ser usado por el usuario para que provocar una interrupcion cada cierto tiempo. Y es usado por el Hardware para el refresh de la RAM y para generar tonos en el parlante. El controlador de Video (6845) -- ----------- -- ----- ------ El controlador de video no se encuentra en la placa madre, sino que esta en una ranura de expansion. En un principio era un controlador Motorola 6845 que continua en el corazon de la CGA y MDA. Actualmente las targetas EGA, VGA y SVGA son de diversos proveedores. El hecho que entre ellas no exista compatibilidad no afecta al sistema ya que este no trata directamente con ellas, Esta tarea la lleva a cabo la ROM-BIOS que esta especialmente configurada para trabajar con el correpondinte controlador de video. El controlador de disquetes (765) -- ----------- -- --------- ----- Este elemento de nombre NECmPD765 no se encuentra en la placa madre sino en una tarjeta de ampliacion (excepto en las nueva PENTIUM o 586 que se lo ha incorporado a la placa madre) Y se encarga de controla las unidades de disquetes. Los coprocesadores matematicos (8087/80287/80387) --- -------------- ----------- ------------------ La 8086, 80286 y 80386 venian con un enchufe libre para conectar un coprocesador matematico. Las nuevas PC lo traen incluido dentro del chip de silicio. Se utiliza para tratar los numeros en coma flotante. La estructura de la Memoria -- ---------- -- -- ------- En primer lugar la PC salio al mercado con una memoria de 16 Kb que podia extenderse en la placa madre hasta 64 KB. De toda maneras los fabricantes sabian que es no era el fin del desarrollo y planificaron una memoria de 640KB. Suponiendose preparados para el futuro, pero este los sobrepaso rapidamente como los usuarios de DOS sabemos. En la 8088 o XT tenia un estacio de direcciones de 1MB, la diferencia entre los 640Kb y el MegaBytes se usaba para albergar la RAM de Video y algunas ampliaciones de la ROM. Tal como veremos la planificacion de la distribucion de memoria se hizo en base a segmentos de 64 Kb ya que el 8088 y sus sucesores administran la memoria en bloques de este tama¤o. El espacio de direcciones de 1MB recoge 16 bloques de estos. ------------------------------------------------------------------------- ------------------------------------------------------------------------- Bloque Direccion Contenido ------------------------------------------------------------------------- 15 F000:0000-F000:FFFF BIOS-ROM 14 E000:0000-E000:FFFF Libre para cartuchos ROM 13 D000:0000-D000:FFFF Libre para cartuchos ROM 12 C000:0000-C000:FFFF BIOS-ROM adicional 11 B000:0000-B000:FFFF Video RAM 10 A000:0000-A000:FFFF Video RAM adicional (EGA/VGA) 9 9000:0000-9000:FFFF RAM de 576 KB a 640 KB 8 8000:0000-8000:FFFF RAM de 512 KB a 576 KB 7 7000:0000-7000:FFFF RAM de 448 KB a 512 KB 6 6000:0000-6000:FFFF RAM de 384 KB a 448 KB 5 5000:0000-5000:FFFF RAM de 320 KB a 384 KB 4 4000:0000-4000:FFFF RAM de 256 KB a 320 KB 3 3000:0000-3000:FFFF RAM de 192 KB a 256 KB 2 2000:0000-2000:FFFF RAM de 128 KB a 192 KB 1 1000:0000-1000:FFFF RAM de 64 KB a 128 KB 0 0000:0000-0000:FFFF RAM de 0 KB a 64 KB (Datos y rutinas del SO) --------------------------------------------------------------------------- Fig.3 : Division de la memoria RAM en una PC ------------------------------------------------------------------------- Luego veremos en profundidad la forma de referirse a cada direccion de memoria. Los 10 primeros segmentos estan reservados a la memoria principal quedando su maximo limitado a 640 KB. El segmento 0 es muy importante ya que incluye rutinas y datos importantes para el Sistema Operativo. El segmento B esta asignado a las tarjetas DMA, Hercules y CGA. Compartiendo este segmento como memoria del contenido de la pantalla. Utilizando los 32 Kbytes inferiores la tarjeta monocroma y los 32 Kbytes speriores la color (CGA). Cada tarjeta instala solo aquella memoria que es necesaria para la memoria de la pantalla. Mas alla de la Video Ram, los segmentos C,D,E,F no se cargan como RAM sino como ROM y no pueden ser modificados. En los XT se guardaban las rutinas de manejo del disco duro. En la actualidad los registros C o E se usan para los administradores de memoria expandida como el EMM386. El F contiene las rutinas de la ROM y anteriormente el ROM-BASIC. ----------------------------------------------------------------------------- Proxima entrega: el PROCESADOR y sus registros; construccion de direcciones de Memoria comunicacion con el Hardware Bibliografia: PC Interno, Michel Tischer. y apuntes varios de la catedra de Arquitectura I de la UNLP.