Arquitectura y organizacion de computadoras 1

Organización y Arquitectura de computadoras

Esta sección esta hecha solamente para hacer un repaso de la materia a rendir, y de paso le puede parecer interesante para leer a alguien, el libro que mas uso es el de Stalling, por lo cual se va a notar la similitud en el contenido. El nivel de los temas tratados es superficial, para mas detalles aconsejo empezar por leer el libro.

Todo esto esta colgado también acá

Introducción: Es a veces difícil identificar donde esta la diferencia entre la arquitectura y la organización de computadores.
La arquitectura se refiere a las características del sistema que son visibles al programador, o sea que el programador va a tener que tener en cuenta al momento de programar (ejemplo de esto serian modos de direccionamiento, conjunto de instrucciones, cantidad de bits usados para representas los distintos tipos de datos.
La organización en cambio es transparente a el programador, este no se preocupa por estos temas, señales del bus de control, interfaces entre periféricos y computador, tecnología usada en memoria, cantidad de caches, etc.
En general lo fabricantes de máquinas producen familias de pc con una misma arquitectura y a medida que pasa el tiempo salen nuevos modelos con la misma arquitectura, pero con una organización diferente, con lo cual logran una compatibilidad de software.
Ejemplo de esto serian las PC comunes y una Macintoch, por poseer distinta arquitectura no son compatibles sus software.

Estructura y funcionamiento:

La descripción del sistema se va a ser la la siguiente forma: Se comenzara con una visión muy superficial, para de a poco introducirnos en las capas mas bajas en cuestión de estructura y funcionamiento.

Funciones básicas de un computador:

1. Procesamiento de datos.
2. Almacenamiento de datos.
3. Trasferencia de datos.
4. Control.

Gráficamente seria así:

Arquitectura y organizacion de computadoras 1

Gráficamente las funciones serian algo así:

arquitectura

* A) Transferencia de datos.
* B) Almacenamiento.
* C) Procesamiento de datos almacenados.
* D) Entrada o salida de datos con un procesamiento previo.

Estructura del Computador

La representación mas sencilla y superficial de un computador podría ser la siguiente:

memoria

El computador es el que vamos a analizar mas en detalle. Las formas que esta se comunica con el entorno exterior se pueden clasificar en 2 grandes grupos: Periféricos y lineas de comunicación.

Computador:

Entrando un poco mas en el detalle del computador, podemos distinguir 4 componentes principales:

Computadoras

* CPU (Central Prosesing Unit): Controla el funcionamiento de la computadora y se encarga del procesamiento de datos, comúnmente se lo llama procesador.
* Input/Output (I/O o entrada y salida): se encarga de la transferencia de datos entre en computador y el entorno externo.
* Main Memory(Memoria principal): Almacena datos.
* System Interconnection (sistema de interconexión): Proporciona comunicación entre las tres partes.

El componente que vamos a analizar ahora mas en detalle es la CPU:

cache

Los principales componentes son los siguientes:

* Registros: Proporcionan un almacenamiento interno a la CPU.
* ALU (Unidad Aritmético-Lógica): En ella se realizan las operaciones de procesamiento, aritméticas (suma resta, etc) y logicas (AND,OR, XOR, etc)
* Unidad de Control: Controla el funcionamiento de la CPU, con lo cual controla el funcionamiento del computador.
* Interconexiones: Proporcionan comunicación entre los 3 componentes anteriores.


Principios de la programación
En los primeros computadoras se puede observar aproximadamente el siguiente funcionamiento:
Al computador entraban datos, a esos datos se les daba un procesamiento, dicho procesamiento se configuraba antes de empezar por medio de cableado, y del computador salían los resultados.
Como se puede apreciar el procesador era para un uso especifico.
Un ejemplo de esto es la famosa ENIAC, para distraerme un poco vamos a poner algo de ella:

Unos datos interesantes:
Trabajaba con numeración decimal.
Pesaba 30 toneladas
Poseía 18000 válvulas.
Consumía 140 Kilowatios.
Realizaba 5000 sumas por segundo.



Vídeo de YouTube


link: http://www.videos-star.com/watch.php?video=sJnMBnZElqw

ENIAC
De Wikipedia, la enciclopedia libre

organizacion

ENIAC

ENIAC es un acrónimo inglés de Electronic Numerical Integrator And Computer (Computador e Integrador Numérico Electrónico), utilizada por el Laboratorio de Investigación Balística del Ejército de los Estados Unidos.
Contenido

* 1 Modalidad
* 2 Prestaciones
* 3 Las programadoras de ENIAC
* 4 Enlaces externos

Modalidad

No fue la primera computadora electrónica de propósito general. Ese honor se le debe al Z3 construido en el 1941. Además está relacionada con el Colossus, que fue usado para descifrar código alemán durante la Segunda Guerra Mundial y destruido tras su uso para evitar dejar pruebas, siendo recientemente restaurada para un museo británico. Era totalmente digital, es decir, que ejecutaba sus procesos y operaciones mediante instrucciones en lenguaje máquina, a diferencia de otras máquinas computadoras contemporáneas de procesos analógicos. Presentada en público el 15 de febrero de 1946.

La ENIAC fue construida en la Universidad de Pennsylvania por John Presper Eckert y John William Mauchly, ocupaba una superficie de 167 m² y operaba con un total de 17.468 válvulas electrónicas o tubos de vacío. Físicamente, la ENIAC tenía 17.468 tubos de vacío, 7.200 diodos de cristal, 1.500 relés, 70.000 resistencias, 10.000 condensadores y 5 millones de soldaduras. Pesaba 27 Tm, medía 2,4 m x 0,9 m x 30 m; utilizaba 1.500 conmutadores electromagnéticos y relés; requería la operación manual de unos 6.000 interruptores, y su programa o software, cuando requería modificaciones, tardaba semanas de instalación manual.

La ENIAC elevaba la temperatura del local a 50ºC. Para efectuar las diferentes operaciones era preciso cambiar, conectar y reconectar los cables como se hacía, en esa época, en las centrales telefónicas, de allí el concepto. Este trabajo podía demorar varios días dependiendo del cálculo a realizar.

Uno de los mitos que rodea a este aparato es que la ciudad de Filadelfia, donde se encontraba instalada, sufría de apagones cuando la ENIAC entraba en funcionamiento, pues su consumo era de 160 kW.

A las 23.45 del 2 de octubre de 1955, la ENIAC fue desactivada para siempre.

Prestaciones

La computadora podía calcular trayectorias de proyectiles, lo cual fue el objetivo primario al construirla. En 1,5 segundos era posible calcular la potencia 5000 de un número de hasta 5 cifras.

La ENIAC podía resolver 5.000 sumas y 360 multiplicaciones en 1 segundo. Pero entre las anécdotas estaba la poco promisoria cifra de un tiempo de rotura de 1 hora.

Las programadoras de ENIAC

Si bien fueron los ingenieros de ENIAC, Mauchly y Eckert, los que pasaron a la historia de la computación, hubo seis mujeres que se ocuparon de programar la ENIAC, cuya historia ha sido silenciada a lo largo de los años y recuperada en las últimas décadas. Clasificadas entonces como "sub-profesionales", posiblemente por una cuestión de género o para reducir los costos laborales, este equipo de programadoras destacaba por ser hábiles matemáticas y lógicas y trabajaron inventando la programación a medida que la realizaban. Betty Snyder Holberton, Jean Jennings Bartik, Kathleen McNulty Mauchly Antonelli, Marlyn Wescoff Meltzer, Ruth Lichterman Teitelbaum y Frances Bilas Spence prácticamente no aparecen en los libros de historia de la computación, mas dedicaron largas jornadas a trabajar con la máquina utilizada principalmente para cálculos de trayectoria balística y ecuaciones diferenciales y contribuyeron al desarrollo de la programación de computadoras. Cuando la ENIAC se convirtió luego en una máquina legendaria, sus ingenieros se hicieron famosos, mientras que nunca se le otorgó crédito alguno a estas seis mujeres que se ocuparon de la programación.

Muchos registros fotográficos de la época muestran la ENIAC con mujeres de pie frente a ella. Hasta la década del 80, se dijo incluso que ellas eran sólo modelos que posaban junto a la máquina ("Refrigerator ladies". Sin embargo, estas mujeres sentaron las bases para que la programación fuera sencilla y accesible para todos, crearon el primer set de rutinas, las primeras aplicaciones de software y las primeras clases en programación. Su trabajo modificó drásticamente la evolución de la programación entre las décadas del 40 y el 50.

-------------------------------------------------------------------------------------------------------------------------

Bueno, programar este computador para que realice una tarea determinada, consistía en cambiar las conexiones de todos esos cables que se aprecian en las imágenes.

En esta época surgió la idea de programa almacenado, que se le atribuye principalmente al matemático asesor del proyecto Eniac John Von Neumann.

cpu

Las ideas del programa almacenado fue desarrollada al mismo tiempo por Turing (Recomiendo leer la historia de este genio).

procesador

Pero la primera publicación fue hecha por Neumann en 1945, proponiendo la EDVAC (Electronic Discrete Variable Computer). Esta se empezó a diseñar en la universidad de Princeton en 1946 y fue completado en 1952.

La idea era la siguiente, en ves de tener un procesador que realiza una sola tarea, y la programación sea cableada, encontrar la forma de cambiar esas conexiones por medio de ordenes almacenadas en memoria junto a los datos. A la idea de la llamo "La máquina de Von Neumann", y es la base general de los computadores de hoy en día.

Con esto para cambiar la tarea que realizara la computadora, bastara solo con leer otro conjunto de ordenes almacenadas en memoria, de esta manera nace el SOFTWARE.

Registros

En este diagrama se ejemplifica el computador realizaba una tarea fija con los datos

buses

En este diagrama vemos ejemplificado que por medio de instrucciones al procesador, se podía hacer que el computador sea de uso general y realizar distintas tareas

Arquitectura y organizacion de computadoras 1

Como se puede apreciar en la ultima figura, la memoria y los datos provienen de la misma memoria. La idea es la siguiente, se leía una instrucción, esta pasaba a la unidad de control, dicha unidad realizaba las conexiones correspondientes para que la ALU realizara una tarea determinada, entraban los datos a la ALU, esta realizaba las operaciones, y el resultado salia por algún dispositivo de E/S.
Hoy en día, a grandes rasgos es similar, se lee una instrucción, se decodifica, la unidad de control manda las señales necesarias por los buses, los datos se mandan a la ALU, y se realiza la operación.
Con este avance se logro tener el primer computador de propósito general, era mas fácil usarlo para diversas tareas.

Buses

Los buses son el mecanismo mas común para la comunicación entre los dispositivos del computador.
Físicamente son conductores por donde viajan señales eléctricas.

arquitectura

memoria

Bueno, los buses son casi todos esos caminos que se ven en las motherboard de las imágenes anteriores.

El bus es un dispositivo en común entre dos o mas dispositivos, si dos dispositivos transmiten al mismo tiempo señales las señales pueden distorcionarce y consecuentemente perder información.
Por dicho motivo existe un arbitraje para decidir quien hace uso del bus.
Por cada linea se pueden trasmitir señales que representan unos y ceros, en secuencia, de a una señal por unidad de tiempo. Si se desea por ejemplo transmitir 1 byte, se deberán mandar 8 señales, una detrás de otra, en consecuencia se tardaría 8 unidades de tiempo. Para poder transmitir 1 byte en 1 sola unidad de tiempo tendríamos que usar 8 lineas al mismo tiempo.
Existen varios tipos de buses que realizan la tarea de interconexión entre las distintas partes del computador, al bus que comunica al procesador, memoria y E/S se lo denomina BUS DEL SISTEMA y es que que vamos a detallar ahora.

La cantidad de lineas del bus a medida que pasa el tiempo se va incrementando como uno de los métodos para incrementar la velocidad de transferencia de señales en el computador, y así incrementar el desempeño.
Cada linea tiene un uso especifico, y hay una gran diversidad de implementaciones, pero en general podemos distinguir 3 grandes grupos de buses.

Bus de datos: Por estas lineas se transfieren los datos, pueden ser de 8, 16, 32 o mas lineas( no se realmente en cuanto andan hoy en día), lo cual nos indica cuantos datos podemos transferir al mismo tiempo, y es muy influyente en el rendimiento del sistema. Por ejemplo si el bus es de 8 lineas y las instrucciones son de 16 bits, el sistema va a tener que acceder 2 veces a memoria para poder leer la instrucción, el doble de tiempo en leer instrucciones comparado con un bus de datos de 16 lineas.

Bus de direcciones:Por estas lineas se envía la dirección a la cual se requiere hacer referencia para una lectura o escritura, si el bus es de 8 lineas por ejemplo, las combinaciones posibles para identificar una dirección irían del 00000000 al 11111111, son 256 combinaciones posibles, en consecuencia el ancho del bus de datos nos indica la cantidad de direcciones de memoria a la que podemos hacer referencia.
Dentro de la direcciones posibles, en general el sistema no usa todas para hacer referencia a la memoria principal, una parte las usa para hacer referencia a los puertos de E/S.

Bus de control:Estas líneas son utilizadas para controlar el uso del bus de control y del bus de datos. Se transmiten ordenes y señales de temporización. las ordenes son muy diversas las mas comunes son:

* Escritura en memoria.
* Lectura de memoria.
* Escritura de E/S.
* Lectura de E/S.
* Transferencia reconocida.
* Petición del bus.
* Cesión del bus.
* Petición de interrupción.
* Interrupción reconocida.
* Señal de reloj.
* Inicio..


Las señales de temporización indican la validez de los datos que están en el bus en un momento dado.

Computadoras

Todo elemento que este conectado al bus tiene que saber reconocer si la dirección que esta en el bus de datos le corresponde, tiene que reconocer algunas ordenes transmitidas por el bus de control, y puede emitir algún tipo de señal por el bus de control (señal de interrupción, señal de reconocimiento de alguna petición, etc).
En general, cuanto mas dispositivos conectamos al bus, disminuye el rendimiento del sistema; las causantes de esto son varias, pero las mas importantes son el tiempo de sincronización que se necesita para coordinar el uso del bus entre todos los dispositivos, y que el bus tiene una capacidad máxima, la cual puede llegar a convertirse en un cuello de botella del sistema.
Una de las formas de tratar este problema es implementando jerarquía de buses.

Jerarquía de buses:

Para mejorar el rendimiento del bus, las jerarquías de buses fueron implementadas cada vez mas, una primera aproximación a una jerarquía de bus básica seria la siguiente:

cache

Primero tenemos un bus local, de alta velocidad que conecta el procesador a la cache, el controlador de la cache también puede acceder al bus del sistema, con esta implementación, la mayor parte de los datos a los que va a acceder el procesador, que están en la cache, serán entregados a una alta velocidad, otro punto a destacar de esta parte es que los accesos a memoria por parte de la cache no van a interrumpir el flujo de datos entre procesador y cache.
También se ve la posibilidad de conectar un dispositivo de entrada salida al bus local.
Luego tenemos el bus del sistema, al cual esta conectada la memoria y por debajo el bus de expansión, al cual se pueden conectar una amplia diversidad de dispositivos, entre el bus del sistema y el bus de expansion se encuentra una interfase, que entre las principales tareas esta la de adaptar las velocidades de transmision, por ejemplo para un dispositivo muy lento conectado al bus de expansión la interfase podría acumular una cierta cantidad de datos y luego transmitirla a través del bus del sistema.
El hecho de que cada vez mas salgan al mercado dispositivos que requieren mas velocidad de transmision en los buses, hizo que los fabricantes implementaran los buses de alta velocidad, el cual esta muy estrechamente ligado al bus local, solo hay un adaptador que los une. debajo de este bus tenemos el bus de expansión, mas lento conectado mediante otro adaptador.

organizacion

Existen varios parámetros y elementos en los buses con los cuales podemos clasificarlos.


Tipos de buses:

Una clarificación que podemos hacer es según la funcionalidad de este, los podríamos dividir en dedicados o multiplexados..
Un ejemplo común de dedicados serian el bus de datos y el bus de direcciones, cada uno se utiliza solo para una función especifica. Esta situación de bus de datos y de direcciones dedicados es lo mas común, pero podría llegar a implementarse con un solo bus multiplexado el el tiempo. Esto funcionaria a grandes rasgos de la siguiente forma:
Al comienzo de la transferencia se sitúa en el bus la dirección de donde se quiere leer o a donde se desea escribir, luego se emite por el bus de datos una señal indicando que en el bus se encuentra una dirección valida.
A partir de ese momento se dispone de una unidad de tiempo para que los dispositivos identifiquen si es su dirección, luego de esto se pone en el mismo bus los datos y se realiza la transferencia en el sentido que lo indique una orden emitida por el bus de control.
Ventaja de este método es la reducción de la cantidad de lineas, lo cual ahorra espacio y costos, la desventaja son que para poder implementar es forma de operar la circuitería en cada modulo tiene que ser mas compleja, y que el rendimiento del sistema sera menor por no poder transmitir los datos simultáneamente, en paralelo (datos y dirección).

Otro tipo de clarificación podría ser según su dedicación física: Podríamos poner como ejemplo el bus de E/S, el cual se encarga de conectar solo los dispositivos de E/S, este bus se conecta al bus principal mediante algún adaptador, la ventaja esta en que al ser dedicado solo a E/S, el rendimiento de este va a ser mejor, ya que solo van a operar con el los módulos de E/S, y no va a haber tanta competencia por el bus, este ejemplo lo voy a explicar mas detalladamente cuando llegue al la parte de E/S.

Método de arbitraje:
Por la razón de que en un momento dado solo puede usar el bus un solo dispositivo, debe existir un método para decidir quien hace uso de el.
Todos los métodos que existen en general pueden ser clasificados en 2 grandes grupos:

Arbitraje centralizado: Una parte del hardware del sistema denominada controlador del bus se encarga de decidir el uso del bus en cada momento, este dispositivo puede ser un modulo separado o puede estar incorporado al procesador.

Arbitraje distribuido: En este esquema no existe un controlador centralizado, en su lugar, cada dispositivo que hace uso del bus tiene que tener incorporada la logica necesaria para poder interactuar con los demás dispositivos y decidir quien hace uso del bus.

En cualquiera de los dos casos lo que se busca es que se decida quien va a tener la posesión del bus en un momento dado, procesador, modulo de E/S o memoria, al cual se lo denomina maestro del bus, el maestro del bus establecerá una comunicación con otro dispositivo (lectura o escritura) al cual se lo denominara esclavo.

Temporización:

La temporización clasifica al método utilizado para coordinar los eventos dentro del bus. Según la temporización usada podemos clasificar los buses en 2 grupos.

Temporización síncrona: Todos los eventos del bus se rigen a travez del reloj del computador. Una de las lineas del bus transmite continuamente una señal de reloj, simplemente una secuencia de unos y ceros, la cual puede ser leída por todos los dispositivos conectados al bus.
Al intervalo transcurrido en la emisión de un uno y un cero se lo llama ciclo de reloj, todo los eventos ocurridos dentro del bus comienzan el principio del ciclo y pueden durar uno mas .
En este método de temporización todos van al ritmo del reloj.

cpu

Bien, en el diagrama anterior podemos apreciar como seria en forma simplificada una lectura de datos a travez del bus.
Tener en cuenta que hay muchísimas mas lineas que no se figuran en el gráfico, por ejemplo la linea del reloj, que seria algo mas constante como el siguiente gráfico.

procesador

Las lineas solo pueden tener uno de dos estados, uno o cero.
La velocidad en el ritmo que se alterna de un uno a un cero en la linea del reloj nos da la velocidad del bus, y como todas las operaciones se van a realizar al ritmo del reloj, al aumentar la velocidad del ciclo vamos a aumentar la velocidad del sistema.

Con referencia al gráfico de un ciclo de lectura de datos, el maestro (el que tiene permiso para el uso del bus) pone en el bus de direcciones la dirección de la cual desea leer su contenido, luego de haber puesto la dirección en las lineas correspondientes, envía por una linea del bus de control una señal indicando que desea hacer una lectura, el dispositivo correspondiente a esa dirección reconoce la dirección, y pone en el bus de datos la información solicitada, tras lo cual, manda otra señal por una linea del bus de control indicando que se le a reconocido su petición (que los datos situados en el bus de datos son validos, son los datos solicitados)

Todo con este método de temporización empieza o finaliza rigiendose de las señales del reloj, en general la mayoría de los eventos tiene un duración de un ciclo.

Temporización asíncronica:
Acá los eventos no se rigen por la linea del reloj, en general todo evento es disparado por otro evento anterior.

Registros

El procesador pone en el bus de direcciones la dirección a ser leída y en el bus de control por la linea correspondiente señal de lectura, luego de un breve tiempo para que las señales eléctricas se estabilicen, se manda señal por la linea MSYN (sincronización del maestro) indicando que hay señales validas en el bus de dirección y de control, el modulo correspondiente reconocerá su dirección, pone el dato solicitado en el bus de datos y emite una señal (SSYN sincronización del esclavo) por la en bus de control indicando el las señales del bus de datos son validas(son los datos solicitados)

La temporización síncrona es mas fácil de implementar y comprobar, pero es menos flexible que la síncrona. Por ejemplo, en el caso de que hubiesen varios dispositivos conectados al bus, de distintas velocidades, todos tienen que funcionar a la velocidad del reloj, si hay uno mas rápido, este tiene que bajar su velocidad: En cambio con el asíncrono, cada uno funcionaria a su velocidad, en el mismo bus se trabajaría a distintas velocidades, cada transferencia se haría con la velocidad óptima de sus dos partes (maestro-esclavo).

Anchura del bus:
La anchura del bus ya lo he explicado, es simplemente la cantidad de lineas que posee, y esta directamente relacionado con el rendimiento del sistema, cuanto mas ancho el bus de direcciones, mayor va a ser la cantidad de direcciones posibles utilizadas para direccionar memoria y dispositivos de E/S, y cuanto mas ancho el bus de datos, mayor ya a ser la cantidad de bis que se va a poder transmitir en paralelo.

Tipo de transferencia de datos:
Todos los buses permiten la transferencia de datos, ya sea para escritura como para lectura.

buses

En el gráfico tenemos ejemplificado una escritura y una lectura, en este caso el bus esta multiplexado en el tiempo, primero se utiliza para transmitir la dirección y luego los datos.
En el segundo diagrama se puede apreciar un periodo nombrado con "Access time", ese tiempo es el necesario para acceder al medio en donde se encuentra el dato (disco rígido, memoria principal, etc) y ponerlo en el bus.

Para optimizar el rendimiento existen algunas operaciones combinadas en las cuales se pasa la dirección una sola vez, por ejemplo "lectura-modificación-escritura", seria la lectura del dato, se le aplica alguna modificación y luego se escribe nuevamente. Todo esto es una sola operación, nadie puede acceder al bus en el medio de la operación, se utiliza para proteger los recursos de memoria compartida en sistemas con multiprogramación para mantener la integridad de los datos. Otra instrucción es "lectura después de escritura" que serviría para comprobar el resultado.
Otra operación muy común es la transferencia por bloque, se pasa al principio de la operación la dirección inicial y luego se realiza lectura o escritura a las siguientes direcciones, la cantidad de direcciones siguientes también es un parámetro que hay que pasar.

Arquitectura y organizacion de computadoras 1

Bien, ahora tendría que enumerar algunos buses en especial, pero como tienen muchos datos técnico que pueden ser medios pesados, voy a poner algunas imágenes donde se pueden ver distintas implementaciones y velocidades.
Nobleza obliga, estas diapositivas las tome de las teorías de la catedra de Arquitectura de computadoras de la carrera de Licenciatura en Informática de la Universidad Nacional de La Plata.

arquitectura

memoria

Computadoras

cache

organizacion

cpu

procesador

Registros

buses

Arquitectura y organizacion de computadoras 1

arquitectura

Memoria Interna
La memoria interna de un computador tiene tan amplia diversidad que provoca un poco extenso estudiarla.
No existe un tipo de memoria óptima para un computador, por lo cual hay que utilizar varias clases en una misma máquina en busca de la combinación lo mas aceptable posible teniendo en cuenta principalmente 3 parámetros:

* Velocidad de acceso.
* Capacidad.
* Costo.

memoria

En esta pirámide podemos observar lo siguiente: cuanto mas arriba de la pirámide, mas cerca (físicamente) del procesador nos encontramos. Cuanto mas arriba, mayor el costo, cuanto mas arriba menor la capacidad y cuanto mas arriba menor el tiempo de acceso.
Entonces, tenemos que armar una jerarquía dentro de la máquina con varios de estos tipos de memoria, tratando de lograr que el costo se asemeje a los costos de las memorias de los niveles inferiores, el tiempo de acceso se asemeje a los tiempos de las memorias de los niveles superiores y las capacidades se asemejen a las de los niveles inferiores.
Esto se logra utilizando una jerarquía de memorias.
Antes de abordar las técnicas de comunicación entre los distintos tipos de memorias, debemos saber un poco mas de sus características y clasificarlas según ellas.
Memorias internas y externas.
Cuando hablamos de memoria interna nos referimos generalmente a la memoria principal, pero no debemos olvidar que existen otras, el procesador necesita su memoria propia (registros del procesador) y la unidad de control puede llegar a necesitar memoria propia.
Cundo decimos memoria externa, nos vamos a estar refiriendo a dispositivos periféricos a los cuales se accede a través de algún controlador de E/S (discos rígidos, lectoras de CD/DVD, pen-drivers, cintas, etc).
Capacidad:
Las memorias internas son las mas pequeñas y se miden en bytes o palabras, siendo las longitudes mas comunes para las palabras las de 8, 16 y 32 bits, las memorias externas son mayores y se suelen medir en términos de bytes(Kbyte, Mbytes, Tbytes, etc).
Unidad de transferencia:
En general la unidad de transferencia es igual al numero de lineas de entrada/salida de datos que posee el modulo de memoria, en general coincide a la longitud de palabra del modulo de memoria, por lo general.
Vamos a aclarar 2 términos usados comúnmente para que se aclare un poco el tema.
Palabra: Es la unidad natural en que esta organizada la memoria, suele coincidir con con el numero de bits utilizados para representar los números y con la longitud de las instrucciones, pero como siempre hay excepciones.
Unidades direccionables: En muchos sistemas la unidad direccionable es la palabra, pero en algunos casos se puede direccionar de a nivel de byte, y no nos olvidemos que las unidades direccionables están directamente relacionadas con la anchura del bus de direcciones.
Entonces finalizando este punto, la unidad de transferencia es la cantidad de bits que se pueden lee o escribirá la vez y comúnmente coincide con la unidad de palabra o con la unidad direccionable.
Para l memoria externa la unidades son mas grandes y se las llaman bloques.
Métodos de acceso:
Esta otra clarificación que podemos hacer varía según al la forma de acceder al dato.
Acceso secuencial: Los datos se organizan en unidades llamadas registros, el acceso se logra mediante un acceso lineal especifico. Además de los datos se agrega información que permite distinguir donde comienza un registro y comienza otro y permite la escritura/lectura de los datos. La forma de acceder como su nombre lo indica es secuencial, teniendo que pasar por todos los registros intermedios, anteriores al que deseamos acceder, hasta llegar al registro deseado. El tiempo de acceso es variable dependiendo de la ubicación del registro deseado.
Un ejemplo de este tipo de acceso son las cintas magnéticas.

Computadoras

Acceso directo: Cada unidad de información en que esta dividida la unidad tiene una dirección única basada en su ubicación física. El acceso es directo, pero no al dato especifico, sino a toda la vecindad, luego dentro de la vecindad se hace un acceso secuencial contando o esperando alcanzar la posición final. El tiempo de acceso es variable.
Un ejemplo de esto son los discos magnéticos.

cache

Acceso aleatorio: Cada posición de memoria direccionable tiene una acceso directo para acceder, cableado físicamente. El tiempo de acceso a cada posición es constante y no depende de accesos anteriores.Un ejemplo de este tipo de acceso es la memoria principal y algunos sistemas de cache.

organizacion

Acceso asociativo: Se compara una parte de la dirección a buscar contra una parte de las palabras almacenadas en este tipo de memoria, dichas palabras además de los datos contienen información para identificar a que posición corresponden. La comparación se hace en paralelo con todas las palabras almacenadas en la memoria. Cada palabra de memoria tiene una acceso directo para acceder, cableado físicamente. El tiempo de acceso es constante y no depende de accesos anteriores.Un ejemplo de este tipo de acceso son algunos sistemas de cache.

cpu

Este es un Pentium Pro a 200 Mhz. El Pentium Pro fué el primer procesador de intel diseñado específicamente para entornos de servidor. Para este cometido implementaron junto al Pentium MMX otro chip que era la memoria caché (256Kb), de ahí que tenga dos chips en un solo procesador.

procesador

El chip de la izquierda es el procesador mientras que el de la derecha es una memoria caché (se denota por lo regular de la superficie).
Muy buena imagen tomada de http://karman.homelinux.net, muchas gracias.

Tiempo de acceso: es el tiempo en que se tarda en la operación de lectura o escritura. En memorias de acceso de acceso aleatorio es el tiempo entre que se pone la dirección en el bus y el momento en que el dato ha sido guardado (escritura) o el dato se encuentra disponible (lectura). Para memorias de otro tipo de acceso, el tiempo de acceso es el tiempo que se tarda en ubicar el mecanismo de lectura/escritura en la posición deseada.
Tiempo de ciclo de memoria: Es el tiempo necesario que se requiere para realizar la segunda lectura luego de haber realizado la primera. Generalmente este termino se usa con las memorias de tipo aleatorio, y es requerido para que finalizen las transacciones en las lineas de controlo para regenerar los datos si se trata de lecturas destructivas.

Velocidad de transferencia: Es la velocidad a la cual se pueden transmitir datos desde o hacia memoria, para memorias de tiempo aleatorio esto equivale a la inversa del tiempo de ciclo, para los otros tipos de memoria se utiliza la siguiente relación:

Registros

Estas 3 ultimas características de la memoria son las mas importantes desde el punto de vista del usuario junto a la capacidad.

Jerarquía de memoria:


El tema clave de toda la organización de los distintos tipos de memoria esta en obtener una disminución de los accesos a las clases mas lentas de memoria.
La motivación principal a este tema es la siguiente: La prioridad de todo el sistema es que la CPU ejecute la mayor cantidad de instrucciones, se debe tratar de que no se detenga para esperar que lleguen las instrucciones y datos desde la memoria.
El procesador es mucho mas rápido que la memoria principal, en este punto para solucionar el tema entra la memoria cache, mas cara, mas pequeña pero mas rápida.
Esta memoria puede estar ubicada en distintas partes del computador, cuanto mas cerca del CPU, mas rápido es el acceso. Las que están ubicadas en el mismo procesador se las llama de nivel uno (on chip), también están las de nivel 2 y nivel 3, una mas lejos que la otra.
Antes de proseguir debemos conocer a lo que se le llama "Principio de localidad"

Principio de localidad de programas y datos
• Localidad temporal: los elementos (datos o instrucciones) accedidos recientemente, también lo serán en un futuro próximo.
• Localidad espacial: los elementos cuyas direcciones están cercanas tienden a ser referenciados.

Teniendo el claro este principio, podemos podemos dar una aproximación de como se utilizan las cache:
Cuando la CPU solicita un el contenido de una dirección, primero se busca en la primera cache (rápidamente), si no se encuentra ahí, se va a buscar el dato a memoria, cuando se accede a memoria, no se extrae solo el contenido solicitado, sino que todo el conjunto de direcciones lo rodea, a conjunto extraído se lo llama bloque.
El bloque extraído se guarda en la cache, y de ese bloque el dato solicitado se manda a la CPU.
Debido al principio de localidad, hay muy altas posibilidades que se requieran otros datos que contiene el bloque guardado en cache, por lo cual cuando estos datos se requieran, el acceso va a ser muy rápido.
Debido a los muy buenos algoritmos que manejan las cache, la tasa de acierto es aproximadamente del 95%.
Para que quede mas claro el gran beneficio de la cache
Supongamos que tenemos 2 niveles de cache L1 (nivel 1) y L2(nivel 2)

Estos cálculos son solo para tener una aproximación, ya que no se tienen en cuenta muchos factores.

L1 tiene un tiempo de acceso de 0.1µs y L2 de 1µs

( 0.95 + 0.1µs) + (0.05*(0.1µs + 1µs)= 0.15µs
Estamos teniendo un tiempo de acceso aproximadamente de 0.15µs a cada dirección de memoria.
A L2 accedemos solo el 0.05% de las veces, agregando un nivel mas L3, a L3 solo tendríamos acceder el 0.0025 % de las veces y a la memoria principal solo el 0.000125.
La mayor parte del tiempo el procesador recibe datos e instrucciones rápidamente de la cache, por lo cual va a estar menos tiempo esperando.
Mas adelante voy a detallar mas su funcionamiento e implementaciones.


Memoria semiconductora:

Antes de empezar con este tema aconsejo leer la muy interesante pagina que habla de la forma mas común de almacenar información en los computadores antiguos, los núcleos de ferrita.

buses
Arquitectura y organizacion de computadoras 1

Diálogo sobre las memorias de anillos de ferrita.



Hoy en las memorias principales utilizan memoria principas, vamos a enumerarlas y dar una breve descripción.
Todas los tipos de memoria que veremos aca son de acceso aleatorio, a cada palabra que las componen se la puede acceder directamente.

RAM:

La mas común, (Random Access Memory) , obviamente todas las memorias que vamos a ver en esta parte son pero a esta se la llama asi.
Se puede escribir como leer rapidamente en ella, es volatil, o sea que se pierden los datos cuando se apaga el computador.
Se las puede dividir en 2 grupos, estaticas y dinamicas. Las dinamicas estan compuestas por celdas que conservan la carga, como un condensador, el hecho de que tenga carga o no diferencia un uno de un cero. Estas cargas disminuyen gradualmente por lo cual tienen implementadas un sistema de refresco, el cual cargara periodicamente las celdas con carga.
Las RAM estaticas estas conformadas por puertas bioestables, como los Flip-Flops, que pueden mantener uno de dos estados mientras esten alimentadas, con lo cual se identifica un uno o un cero.
Las RAM dinamicas son mas simples y compactas, lo acual hace que sean mas pequeñas y economicas.

arquitectura
memoria

ROM:
Read Only Memory, solo se pueden leer, los datos bienen grabados ficicamente, como un circuito y no es volatil

Computadoras

PROM:
Son iguales que las ROM pero estas se pueden grabar eléctricamente una vez. Podría grabarla el fabricante o el posterior comprador con un equipo especial. No es volátil.

cache

EPROM: Memoria de solo lectura programable y borrable ópticamente, estas memorias se pueden leer y grabar eléctricamente, el tema importante es que antes de grabarla hay que borrarla completamente, lo cual se realiza exponiendo la ventanita del chip a rayos ultravioleta, suele tardar unos cuantos minutos en borrarse.Son mas costosas que las ROM y PROM, pero nos da mas ventajas. No es volátil.
En la imagen se puede apreciar la ventana, que viene tapada con una etiqueta para evitar borrados no intencionados.

organizacion
cpu

EEPROM: Memoria de sobre todo lectura programable y borrable eléctricamente, Se puede leer tanto como escribir de forma eléctricamente y solo el o los byte direccionados. La escritura demora mucho mas tiempo que la lectura, Son mas costosas y menos densas, pero nos dan gran flexibilidad al poder actualizables mediante las lineas de datos, direcciones y control.

procesador

Flash: Iguales que las EEPROM pero mas mas rapidas, otra diferencia es que no permiten borrar a nivel de byte, solo se puede borrar a nivel de bloque.
Estas 3 imagenes son de memorias flash, las podemos ver comunmente en los pen drivers.
La ultima es de 64GB de Samnsung.

Registros
buses
Arquitectura y organizacion de computadoras 1

Organización de la memoria semiconductora:

El elemento básico de la memoria semiconductora es la celda de memoria, aunque existen muchas tecnologías utilizadas para su implementación, todas compartes algunas propiedades.

* Presentan 2 estados, los cuales se utilizan para representar un uno o un cero.
* Puede escribirse en ellas al menos una vez.
* Pueden leerse para saber su estado.

Lo mas común es que posean tres terminales, uno para seleccionar la celda para lectura o escritura, otra para indicar el tipo de operación (lectura/escritura), y otro para los datos, como salida (lectura) o entrada (escritura).

arquitectura


Lógica del chip de memoria:

Las memorias semiconductoras vienen encapsuladas, y cada chip contiene una matriz de celdas de memoria.
Una de las características mas importantes de los chips de memoria, es la cantidad de bits que se pueden leer/escribir simultáneamente.
Tenemos muchas formas de organizar la memoria, en un extremo tenemos una memoria en la cual la organización física es igual a la lógica (igual a como la percibe el procesador), esto seria que el chip de memoria esta organizado en W palabras de B bits cada una. Por ejemplo una memoria de 16 Mbits podría estar organizado en 1Mpalabras de 16 bits cada una.
En el otro extremo tenemos la estructura llamada "un bit por chip" en la cual los datos se lee/escriben por bits, y desarrollare a continuación.

Organización típica de una DRAM de 16Mbits en la que se leen/escriben de a 4 bits simultáneamente:

memoria


Lógicamente la matriz esta compuesta por 4 matrices cuadradas de 2048 X 2048 elementos.
Para poder seleccionar un elemento particular de cada chip de 2048 X 2048 se necesitan, para poder expresar 2048 combinaciones, necesitamos 11 lineas, por lo cual a cada chip entran 11 lineas para especificar la fila de la matriz y 11 lineas para especificar la columna de la matriz.
Como se puede ver en este gráfico, a la DRAM solo entran 11 lineas de datos ( de A0 a A10), esto se debe a que estas lineas dedicadas a especificar la dirección están multiplexadas en el tiempo, primero se pasa la dirección que especifica la fila y luego se pasa la dirección que especifica la columna.
De cada chip obtengo un elemento, los 4 de la misma posición relativa dentro de cada uno de los chips. Si el bus de datos del sistema fuera de 16 bits, tendría que tener 4 DRAM conectadas al controlador de memoria para poder leer/escribir una palabra en el bus de datos.
Como comentario, el uso de matrices cuadradas y de lineas de direcciones multiplexadas provoca que con cada linea que se agrega a las lineas de direcciones la capacidad se podria cuadriplicar, por ejemplo con el caso anterior con 11 lineas se obtienen 2048 posibles combinaciones, con 12 lineas 4096, el doble, el doble de filas y el doble de columnas, o sea, el cuadruple de capacidad de direccionamiento con el solo hecho de agregar una linea mas.

Computadoras

En el diagrama anterior se muestra el encapsulado típico de una DRAM de 16Mbits.

Ahora, en el ejemplo anterior el chip tenia una entrada/salida de 4 bits, en cambio si cada chip tiene 1 bit de entrada/salida, claramente necesito N chips, donde N es igual a la cantidad de bits por palabra.
Para ejemplificar veamos una forma de organizar un modulo de memoria de 256K palabras de 8 bits.

cache

Aclaración: El diagrama anterior tiene un error, en el chip inferior del gráfico debería decir "Chip #8"

En el diagrama podemos apreciar que las lineas de datos no se multiplexan. Cada chip posee 512 X 512 (256K) elementos de 1 bit, al momento de leer una de las 256k palabras de 8 bits, se envía la dirección y se selecciona un bit de cada chip (la misma ubicación en cada chip), cada bit seleccionado de cada chip conformara la palabra.


Memoria Cache:

El objetivo de la memoria cache es obtener un tamaño grande de memoria, con una velocidad tendiendo a la de las memorias mas rápidas y un costo tendiendo a las mas baratas.
Como ya hemos visto cuando el procesador necesita acceder a una dirección de memoria, primero se fija si esta en la cache, si esta, se llama acierto o "HIT", entonces la dirección es accedido directamente de la cache, si no esta en la cache, se llama fallo o "MISS", entonces se accede a la memoria principal y se extrae el conjunto próximo a la dirección buscada y se pone en la cache, para aprovechar el principio de proximidad. En esta parte tenemos dos organizaciones mas comunes, una es que se pasa el bloque de memoria a cache y se pasa la dirección solicitada al procesador en paralelo, al mismo tiempo, la otra primero se pasa el bloque de palabras a la cache y luego esta, pasa la dirección solicitada a el procesador.

organizacion

Este seria el diagrama del del segundo caso, primero se pasa el bloque a la cache y luego se pasa la palabra a el procesador.

cpu


Es este diagrama podemos ver la operación de lectura, realmente no se bien a que se refiere con RA, me imagino que es Registry address, un registro donde el procesador pone la dirección a la que quiere hacer referencia. El flujo seria algo así: el procesador pone la dirección requerida en RA, se chequea si la dirección esta en cache, si esta se capta la palabra para luego pasarla al procesador, si no esta se accede a memoria, se decide en que lugar de la cache se va a alojar el bloque y EN PARALELO se pasa el bloque a la cache y se pasa la palabra al procesador, este seria el primer caso que hacia referencia el párrafo anterior y es la organización que se usa en general en las cache actuales.

procesador

En este diagrama se ve como estaría dispuesta la cache con sus lineas de conexión, en el caso de entregar los datos primero a la cache y luego al procesador, si hay un acierto, se inhabilitan los dos buffer y el trafico es solo de cache a procesador, si hay un fallo, se coloca la dirección en el buffer de direcciones, y por medio del bus del sistema se accede a la memoria principal, luego se transfiere el bloque de datos a la cache para después esta entregar la palabra al procesador. La cache se interpone físicamente entre la memoria y el procesador.
Antes de seguir con las características de la cache vamos a ver un poco mas sobre el principio de localidad.
Este principio establece que las referencias a memoria tienden a formar agrupaciones, quiere decir que las referencias en un lapso de tiempo hacen referencia a un conjunto de palabras que están próxima físicamente, estas agrupaciones cambian, pero durante periodos cortos de tiempo el procesador hace referencia a algun conjunto en particular. el tema es que ese grupo o bloque este en ese periodo de tiempo en cache, para tener un tiempo de acceso rapido.
Algunas afirmaciones para ver que la localidad tiene sentido:

* Exepto cuando hay instrucciones de salto, en general la ejecucion de un programa es secuencial, o sea que la proxima instruccion a captar es la inmediatamente siguiente a la ultima captada.
* Es raro tener una seguencia larga initerrumpida de llamadas a procedimientos con sus retornos correspondientes, en general el programa queda confinado a una ventana bastante estrecha de profundidad o nivel de anidamiento de procedimientos, por lo cual, en un periodo corto de tiempo las referencias tienden a localizarce en unos pocos procedimientos.
* La mayoria de las instruccioes iterativas contienen pocas instrucciones, por lo cual, durante el periodo que dure la iteracion, se va a hacer referencia a instrucciones contiguas, y la ventana de profundidad durante la iteracion va a ser pequeña.
* En muchos programas se hecen referencias a estruccturas de datos como secuencia de registros o matrices, en muchos casos estas unidades de datos se encuentran en posiciones contiguas de memoria, por lo cual se va a estar haciendo referencia a un mismo bloque de datos.

Este tema es muy estudiado por su gran importancia en el rendimiento del computador.

Registros

Este gráfico se basa en las llamadas a procedimiento de un programa con su retorno correspondiente, en el se puede observar ventanas de profundidad igual a 5, se aprecia como durante un periodo apreciable de tiempo se hace referencia a llamadas que contiene una misma ventana.
Mas adelante vos a ampliar esta parte, ya que hay muchos datos interesantes.
Como se vera que no hay duda de los beneficios de tener en cuenta este principio, ahora para aprovecharlo tendríamos que saber el tamaño óptimo del bloque para pasar de memoria a cache y la cantidad de bloques que tendría que alojar la cache, para eso seguiré con las características de las cache.

Estructura de la cache:
Vamos a ver algunos criterios básicos de diseño que nos van a servir para clasificarlas y poder diferenciar las distintas arquitecturas de cache.
Tamaño de la cache:
Lo ideal seria tener una cache lo suficientemente pequeña para que el costo promedio por bit se aproxime al costo de la memoria principal, y que sea lo suficientemente grande para que la velocidad de acceso promedio se aproxime a la velocidad de la memoria cache. Igualmente hay otros motivos que nos restringen a tamaños de cache grandes, uno es que cuanto mas grandes las caches, mayor puertas implicadas en el direccionamiento de estas, lo cual implica que un mayor el tamaño tiende a cache mas lentas. Diversos estudios han llegado a que el tamaño óptimo estaría entre 1K y 512K palabras. Como las tareas a realizar por el procesador son muy variables, y la cache depende de eso, es imposible predecir un tamaño óptimo.
Función de correspondencia:

buses

La memoria principal consta de hasta 2 elevado a la N palabras direccionables de n bits cada una, estas palabras están agrupadas en M bloques de k palabras cada uno. La cache consta de C líneas de K palabras cada una. En todo momento hay un subconjunto de bloques alojado en la cache, y como hay menos líneas en la cache que bloques en la memoria principal, debe haber una función de correspondencia que nos indique a que bloque de memoria principal corresponde cada línea de la cache, además que necesitamos elegir que bloque se van a almacenar en la cache.

Pueden utilizarse 3 técnicas de correspondencia:

* Directa.
* Asociativa.
* Asociativa por conjuntos.

Para explicar las tres técnicas vamos a usar los siguientes elementos:

* Cache de 64 Kbyte.
* Los datos se transfieren entre memoria y cache en bloques de 4 bytes, por lo cual la cache esta organizada en 16K líneas de 4 bytes cada una.
* Una memoria principal de 16Mbytes, direccionable de a byte, para lo cual se necesita una dirección de 24 bits para poder hacer referencia a los 16M de direcciones. Para poder realizar la correspondencia vamos a considerar que la memoria consta de 4M bloques de 4 bytes cada uno.

Correspondencia directa:

Es la más simple, cada bloque de la memoria principal se puede alojar solo en una línea específica de la cache.

Arquitectura y organizacion de computadoras 1

La función de correspondencia se implementa tomando la dirección de memoria y dividiéndola en tres, la parte menos significativa identifica la palabra dentro del bloque, lo que resta se divide en dos, la parte mas significativa identifica la etiqueta, cada etiqueta identifica un conjunto de bloques, y el resto identifica la línea dentro de este conjunto de bloques, este numero de línea se corresponde con la línea de cache.
Debido a este tratamiento cuando se necesita buscar una dirección en cache, el sistema toma de la dirección la parte que identifica la línea, y va a la cache y busca en ese mismo numero de línea la etiqueta, si en esa línea encuentra la etiqueta igual a la etiqueta de la dirección de memoria se ha producido un acierto, entonces recién ahí se usan los bits menos significativos de la dirección para identificar la palabra dentro de la línea de la cache.

Como se puede ver, cada posición de la memoria principal se puede alojar solo en una posición de la cache. Es la función más fácil de implementar, por lo cual menos costosa pero tiene un problema importante.

Imaginemos que el procesador hace referencia repetidas veces a dos palabras de bloques de memoria principal diferentes, a los que les corresponde la misma línea dentro de la cache, en ese caso el sistema estaría cambiando continuamente el bloque dentro de la cache, asiendo que baje la tasa de asierto. Este problema se resuelve con la siguiente función de correspondencia.

Correspondencia asociativa:

Esta correspondencia supera la desventaja de la anterior, los bloques de la memoria principal se pueden ubicar en cualquier linea de la cache, para lo cual la lógica de la cache interpreta la dirección de memoria de la siguiente forma: los bits menos significativos sirven para identificar la palabra dentro de la linea, y al resto de los bits se lo llama etiqueta y sirve para identificar si la linea le corresponde al bloque requerido.

En la correspondencia directa la lógica de la cache se dirigía directamente a una linea en particular de la cache, porque cada bloque se podía ubicar solo en una linea determinada de la cache, una sola comparación. En el caso de la asociativa, como un bloque de memoria puede alojarse en cualquier linea de la cache, tendría que comparar cada etiqueta de cada linea de la cache hasta encontrar coincidencia o el final de la cache, para que la búsqueda tarde lo mismo que en la correspondencia directa, mediante circuitería extra se hace la comparación de todas las etiquetas de las lineas de la cache en paralelo, simultáneamente. Obviamente al ser mas compleja la circuitería, el costo es mayor. La principal desventaja de esta correspondencia es la complejidad de la circuitería requerida.

arquitectura

Correspondencia asociativa por conjuntos:

Esta correspondencia toma lo bueno de las dos anteriores, la cache se divide en conjuntos y un bloque de memoria principal puede ubicarse solo en una posición, pero de cualquier conjunto, la lógica de la cache solo tiene que chequear una posición de cada conjunto.

Lo mas común son las cache organizadas en 2 conjuntos, y se la llama correspondencias asociativa por conjuntos de 2 vías, mejora considerablemente el rendimiento de la asociativa. Las de 4 vías producen una leve mejora y mas vías producen muy poca mejora.

Como un bloque de memoria principal solo se puede ubicar en un solo conjunto, la etiqueta a comparar posee menos bits, y además hay que compararla contra menos posiciones de la cache, una comparación por vía.

memoria

Este gráfico ejemplifica una correspondencia asociativa por conjuntos de 2 vías, un bloque de memoria principal puede ubicarse en una sola ubicación de cualquiera de los dos conjuntos de la cache.

Post siguiente >>>

Fuentes de Información - Arquitectura y organizacion de computadoras 1

Dar puntos
179 Puntos
Votos: 28 - T!score: 6.5/10
  • 8 Seguidores
  • 76.011 Visitas
  • 100 Favoritos

45 comentarios - Arquitectura y organizacion de computadoras 1

@abejorrovolando Hace más de 5 años
que buena que esta la arquitectura de placas nunca dejo de alunizar con esos diseños, me entere de que un fotografo saco macros de las placas y estaban micro firmadas como obras de arte , lo cual mantienen como un secreto
@thrashermosh Hace más de 5 años
faaaa genial este post che
justo lo que tengo que estudiar asi que viene genial

saludos
@estebane_007 Hace más de 5 años
sigues en la nomina pareja.
@takedown Hace más de 5 años
unlp?
@manuvarel Hace más de 5 años
uhhhh, io tambien tengo ke estudiarlo y toda la bibliografia ke me dan esta en ingles :-s

Que güen aporte loco!!!
@marcoscba1 Hace más de 5 años
Muy buen aporte! che el libro ese de Stalling (organizacion y arquitectura de computadares, creo q es) no esta en internet, no?
@cachapublicidad Hace más de 5 años +2
de donde saco el stallinggg?????????
@juampa240182 Hace más de 5 años
Woow,... muchas gracias!
@taca03 Hace más de 5 años
Justo lo que estoy estudiando...
Terrible capo, gracias!
@knysoft Hace más de 5 años
buen aporte ....
@maxi128 Hace más de 5 años
como ago para bajar el libro
@bladdy Hace más de 5 años
necesito el libro... gracias por el aporte
@eam899 Hace más de 5 años

gracias master
@xmren Hace más de 5 años
Muy buen trabajo
@Sci0n Hace más de 5 años
Excelente felicidades!!!!
@zayqan Hace más de 5 años
Yo tengo que estudiar esto y me viene mejor que el libro porque esto esta resumido
@jimbo8710 Hace más de 5 años
nesecito el libro, lo puedes subir porfavor!!!!!
@AlejandroSejas Hace más de 4 años
FELICIDADES MUY BUENO +10!!!
@robben115 Hace más de 4 años
exelente brother tengo que entregar tarea de esto
@skree9_9 Hace más de 4 años
Exelente! te felisito te quedo mucho mejor que todos los lugares a donde abia ido a buscar esta info. Si alguien es de mexico pasese por esta tienda online primero computadoras http://www.primerocomputadoras.com/computadoras-c-21.html
@xistencia Hace más de 4 años
de donde puedo conseguir el libro organizacion de computadoras de stalling !!!!!!!! socorroooooooo
@rodrizala Hace más de 3 años
+10
@djeagle Hace más de 3 años
Que bueno Loco!!!! Una locura que gracias por la info
@Mari0312 Hace más de 3 años
Hola queria saber en si que es organizacion de computadores urgente!!!
@jcvo9 Hace más de 3 años
alguien tendra Arquitectura Y Organización De Computadoras de gerard paez, gracias
@Genitus Hace más de 3 años
q buen aporte compañero!!
Muchisimas gracias =DD!!
@lord_helvete Hace más de 3 años
buenisimo, ahora sé de donde saca el material mi profesor de organizacion y arquitectura de computadores jajajaja
@LorenaRamos2010 Hace más de 3 años
Muy Bueno!!!!
@xxxxpercy Hace más de 3 años
holas justo de aca habia sacado mi profe lo q nos ta enseñando... bueno nose si tienes todo el documento en pdf o en word te lo agradeceria.. esta super el POSt..... GRACIAS...
@turbofer17 Hace más de 3 años
gracias por tu aporte.. estoy seguro que me sera util ya que estoy cursando la materia de ARQUITECTURA DE COMPUTADORAS AVANZADA
Marte y Jueves 1300-1455
23-AUG-11-15-DEC-11
En Pto. Vallarta Jal Mex. CUC
jeje solo queria informar.

GRACIAS!!!!
@gnc1990 Hace más de 3 años
Me salvaste es lo que me falta de mis apuntes, Muchas Gracias.
@Marcos071 Hace más de 2 años
Que buen apunte man! si tuviera puntos te daria!
Hay alguno que quiera vender su libro de arq. de computadoras de stallings??? aqui en Argentina??
@J_a_F_i Hace más de 2 años +1
estoy por rendir esta materia en febrero y me viene d 10!
Gracias! +10
@nahu_capo Hace más de 2 años
J_a_F_i dijo:estoy por rendir esta materia en febrero y me viene d 10!
Gracias! +10

ueeeeeeeeee
@emanuel_malfatti Hace más de 2 años
GRacias!!!!!!!!!!!!!!!!!!!!!!
@luksrod07 Hace más de 2 años
te dejo 10, la verdad me re sirvió, es justo lo que necesitaba para un trabajo para el cole, y en m uy pocos lados está todo así de claro
@t0t_1 Hace más de 2 años
justo tengo un final y me viene al pelo
@supernaut Hace más de 1 año
Caí aca por que estoy estudiando para el final, buena info che!, una mas, como recomendación les digo que se anoten a los apref que se hacen de organizaion, es de mucha ayuda y te clarifica un montón lo que por ahí con el libro te cuesta un huevo entender.
@Camello_Azul Hace más de 1 año
Muy bueno, gracias!!!
@Giganteale Hace más de 4 meses
Recien lo leo, buenisimo, lo necesitaba.-