Ac2.docx
Document Details
Uploaded by LighterTheme9174
Unpamplona
Full Transcript
Arquitectura de computadoras La arquitectura de computadoras es como el esqueleto que sostiene toda la estructura, es el diseño y la disposición de esos espacios para que todo funcione de manera eficiente y ordenada. En el pasado, las computadoras eran enormes y ocupaban salas enteras. Estas máquina...
Arquitectura de computadoras La arquitectura de computadoras es como el esqueleto que sostiene toda la estructura, es el diseño y la disposición de esos espacios para que todo funcione de manera eficiente y ordenada. En el pasado, las computadoras eran enormes y ocupaban salas enteras. Estas máquinas monstruosas, conocidas como mainframes, eran el corazón de las operaciones de grandes empresas y organizaciones gubernamentales. Cada mainframe era como una ciudad entera, con miles de cables y componentes que trabajaban juntos para procesar datos y realizar cálculos complejos. Con el tiempo, la tecnología avanzó y las computadoras se volvieron más pequeñas, más rápidas y accesibles para el público en general. Surgieron las computadoras personales (PC), que permitieron a las personas realizar tareas antes reservadas para expertos en informática desde la comodidad de sus hogares u oficinas. Arquitectura de Von Neumann: La arquitectura de von Neumann es un diseño de computadora que utiliza un único bus de datos para transferir tanto instrucciones como datos entre la unidad de procesamiento (CPU) y la memoria. Tanto las instrucciones como los datos se almacenan en la misma memoria, lo que se conoce como "almacenamiento unificado". Esto significa que la CPU accede a las instrucciones y los datos a través del mismo camino. Fue propuesta por el matemático y físico John von Neumann en la década de 1940. Su diseño se convirtió en el modelo dominante para las computadoras de propósito general debido a su simplicidad y eficiencia. La principal diferencia con la arquitectura de Harvard es que en la arquitectura de von Neumann, tanto las instrucciones como los datos se almacenan en la misma memoria y se accede a través del mismo bus. Esto puede llevar a cuellos de botella en el rendimiento cuando la CPU necesita acceder a datos e instrucciones simultáneamente. Arquitectura de Harvard: Fue desarrollada en la década de 1940 como una alternativa a la arquitectura de von Neumann. Se utilizó inicialmente en computadoras especializadas, como las utilizadas en la navegación aérea y la ingeniería. En la arquitectura de Harvard, se utilizan buses separados para transferir instrucciones y datos entre la CPU y la memoria. Esto significa que hay memorias separadas para almacenar instrucciones y datos, lo que se conoce como "almacenamiento separado". Esta separación permite que la CPU acceda a instrucciones y datos de forma simultánea, lo que puede mejorar el rendimiento. Diferencias con la arquitectura de von Neumann: La principal diferencia con la arquitectura de von Neumann es la separación de las memorias de instrucciones y datos, lo que permite un acceso más rápido a ambos tipos de información simultáneamente. Esto puede resultar en un mejor rendimiento en aplicaciones que requieren un alto ancho de banda de memoria, como el procesamiento de señales y la multimedia. En resumen, la arquitectura de von Neumann utiliza un único bus de datos para acceder tanto a las instrucciones como a los datos en una memoria unificada, mientras que la arquitectura de Harvard utiliza buses separados para instrucciones y datos, lo que permite un acceso más rápido y simultáneo a ambos tipos de información. A medida que la tecnología continuó evolucionando, surgió una nueva forma de computación: la nube. La nube es como una red de computadoras gigantes interconectadas que almacenan y procesan datos de manera remota. Esto permite a las personas acceder a recursos de computación, como almacenamiento y software, desde cualquier lugar del mundo, simplemente con una conexión a internet. La arquitectura de computadoras es el fundamento sobre el cual se construye toda la tecnología moderna. Desde las enormes mainframes hasta las pequeñas PC y la nube, cada avance en la arquitectura ha llevado a una nueva era de innovación y posibilidades en el mundo digital. Servidores y la Nube: los servidores son computadoras dedicadas a proporcionar servicios o recursos a otras computadoras, conocidas como clientes, en una red. La nube se refiere a la entrega de servicios a través de internet, donde los recursos de computación (como servidores, almacenamiento y software) se proporcionan como un servicio bajo demanda. Dirección IP: Una dirección IP es un identificador numérico único asignado a cada dispositivo conectado a una red de computadoras que utiliza el protocolo de Internet (IP) para la comunicación. Contenedores, Docker y Kubernetes: los contenedores son una forma de empaquetar y distribuir aplicaciones y sus dependencias de manera portátil y eficiente. Docker es una plataforma que facilita la creación, distribución y ejecución de contenedores. Kubernetes es una herramienta de orquestación de contenedores que automatiza el despliegue, la escalabilidad y la gestión de aplicaciones en contenedores. Virtualización: La virtualización es la creación de una versión virtual de un recurso de computadora, como un servidor, almacenamiento, red o sistema operativo. Permite la consolidación de recursos, la flexibilidad y la eficiencia al ejecutar múltiples sistemas operativos y aplicaciones en una sola máquina física. Componentes de una computadora Unidad Central de Procesamiento (CPU): La CPU es el cerebro de la computadora y ejecuta instrucciones de programas. Ejemplos: Intel (con sus procesadores Core i5, i7, i9), AMD (con sus procesadores Ryzen). Memorias: Memoria RAM (Memoria de Acceso Aleatorio): La RAM es una memoria volátil / temporal utilizada por la computadora para almacenar datos y programas en uso actualmente. Ejemplos: Crucial, Kingston, Corsair. SODIMM (Small Outline Dual In-Line Memory Module) y DIMM (Dual In-Line Memory Module) son tipos comunes de módulos de memoria utilizados en computadoras portátiles y de escritorio, respectivamente. Almacenamiento (Disco Duro o SSD): El almacenamiento es donde se guardan permanentemente los datos en la computadora, como archivos y programas. Ejemplos de HDD (Disco Duro): Seagate, Western Digital. Ejemplos de SSD (Unidades de Estado Sólido): Samsung, Kingston, SanDisk. ROM (Memoria de Solo Lectura): La ROM es un tipo de memoria de almacenamiento que contiene instrucciones y datos permanentes que no se pueden modificar. Ejemplos: BIOS (Basic Input/Output System) en la placa base, firmware de dispositivos. POST es un proceso automático de autodiagnóstico que realiza la computadora durante el arranque para verificar que todos los componentes de hardware estén funcionando correctamente. Muestra mensajes de estado y códigos de error en la pantalla durante el inicio para indicar problemas potenciales con el hardware. El POST es una función comúnmente asociada con el BIOS, pero también puede ser realizado por otros firmware de inicio, como el UEFI. El POST verifica la integridad de los componentes de hardware esenciales, como la memoria RAM, la CPU, el teclado, el disco duro, entre otros, y muestra mensajes de estado y códigos de error en la pantalla en caso de problemas. ROM BIOS (Basic Input/Output System): La ROM BIOS es un firmware almacenado en un chip de memoria de solo lectura (ROM) en la placa base de la computadora. Se encarga de realizar las operaciones básicas de entrada/salida (E/S) durante el arranque del sistema, como el autodiagnóstico (POST), la inicialización de hardware y la carga del sistema operativo desde el disco duro. Con el tiempo, el BIOS tradicional ha sido reemplazado por UEFI (Interfaz de Firmware Extensible Unificada) en muchas computadoras modernas. UEFI (Unified Extensible Firmware Interface): UEFI es un estándar de firmware más avanzado que reemplaza al BIOS tradicional en muchas computadoras modernas. Proporciona una interfaz más avanzada y flexible para la inicialización del hardware, el arranque del sistema operativo y la gestión de la configuración del sistema. Permite características avanzadas como la compatibilidad con discos duros de gran capacidad, soporte para arranque seguro (Secure Boot) y una interfaz gráfica de usuario. Además del post, utiliza autogestión de seguridad (se va a otros componentes como el antivirus cuando algo está mal) Tarjeta Madre (Placa Base): La tarjeta madre es el componente principal de la computadora que conecta todos los demás componentes y permite que se comuniquen entre sí. Ejemplos: ASUS, Gigabyte, MSI. Unidad de Procesamiento Gráfico (GPU): La GPU se encarga de procesar gráficos y mejorar el rendimiento en aplicaciones visuales. Ejemplos: NVIDIA (con sus series GeForce y Quadro), AMD (con sus series Radeon y FirePro). Fuente de Alimentación (PSU): La fuente de alimentación suministra energía eléctrica a todos los componentes de la computadora. Ejemplos: Corsair, EVGA, Seasonic. Sistema Operativo (SO): El sistema operativo es el software que gestiona los recursos y proporciona una interfaz entre el usuario y el hardware de la computadora. Ejemplos: Microsoft Windows, macOS (anteriormente OS X), Linux (con distribuciones como Ubuntu, Fedora, CentOS). Puertos de Entrada/Salida: Los puertos de E/S permiten la conexión de dispositivos externos a la computadora para la entrada y salida de datos. Ejemplos: USB (Universal Serial Bus), HDMI (High-Definition Multimedia Interface), VGA (Video Graphics Array), Ethernet. USB (Universal Serial Bus): Utilizado para conectar dispositivos periféricos como teclados, ratones, impresoras y dispositivos de almacenamiento externo. SATA (Serial ATA): Utilizado para conectar unidades de disco duro y unidades de estado sólido (SSD) a la placa base de la computadora. Ethernet: Utilizado para conectar la computadora a una red local o a internet. Dispositivos de Entrada/Salida (E/S): Los dispositivos de E/S permiten la interacción entre el usuario y la computadora, como teclado, ratón, pantalla, impresora, etc. Ejemplos: Logitech (teclados y ratones), Dell (monitores), HP (impresoras). Tarjeta de Sonido: La tarjeta de sonido se encarga de procesar y reproducir sonido en la computadora. Ejemplos: Sound Blaster (Creative), ASUS Xonar, Realtek. Tarjeta de Red (NIC): La tarjeta de red permite la conexión de la computadora a una red local o a internet. Ejemplos: Intel Ethernet, TP-Link, Broadcom. Tarjeta Wi-Fi: La tarjeta Wi-Fi permite la conexión inalámbrica a redes Wi-Fi. Ejemplos: Intel Wi-Fi, TP-Link, ASUS. Tarjeta de Captura de Video: La tarjeta de captura de video permite grabar y capturar señales de video de diferentes fuentes. Ejemplos: Elgato, AVerMedia, Blackmagic Design. Unidad Óptica: La unidad óptica permite leer y escribir datos en discos ópticos como CD, DVD y Blu-ray. Ejemplos: LG, ASUS, Samsung. Ventiladores y Disipadores de Calor: Los ventiladores y disipadores de calor mantienen los componentes de la computadora dentro de una temperatura segura para su funcionamiento. Ejemplos: Cooler Master, Noctua, Arctic. Torre o Gabinete: La torre o gabinete es el chasis que alberga todos los componentes de la computadora y proporciona protección y ventilación. Ejemplos: NZXT, Corsair, Fractal Design. Swap: El swap es una técnica utilizada por el sistema operativo para usar parte del espacio de almacenamiento en el disco duro como una extensión de la memoria RAM cuando la memoria física se está agotando. Permite a la computadora ejecutar más programas de los que cabrían en la RAM física, pero puede ralentizar el rendimiento debido a la latencia del disco duro en comparación con la RAM. Este intercambio de datos entre la RAM y el disco se realiza principalmente en el disco duro o en la unidad de estado sólido (SSD). En sistemas operativos basados en Unix/Linux, como Linux y macOS, el swap generalmente se configura en una partición dedicada en el disco duro, mientras que en sistemas operativos Windows, se puede utilizar un archivo de intercambio en el disco duro. Buses: Un bus es un conjunto de líneas de comunicación que conectan diferentes componentes de hardware dentro de la computadora. (cables que pasan voltaje en binario) Tipos de buses comunes incluyen el bus del sistema (FSB), que conecta la CPU con la memoria y otros dispositivos, y los buses de E/S, que conectan la CPU con dispositivos de entrada y salida como teclados, ratones y unidades de disco. Los buses de datos, dirección y control son fundamentales para la comunicación y el funcionamiento adecuado de los componentes dentro de una computadora. Permiten la transferencia de datos, la selección de direcciones de memoria y dispositivos, y la coordinación de operaciones entre la CPU y otros componentes del sistema. Bus de Datos: El bus de datos es un conjunto de cables que transporta la información binaria entre los diferentes componentes de la computadora, como la CPU, la memoria RAM, los dispositivos de almacenamiento y los periféricos. Este bus es bidireccional, lo que significa que puede transmitir datos en ambas direcciones: desde la CPU hacia los dispositivos y viceversa. La velocidad y el ancho de banda del bus de datos afectan directamente el rendimiento general del sistema. Bus de Dirección: El bus de dirección es un conjunto de cables que se utiliza para especificar la ubicación física de la memoria o los dispositivos de E/S a los que se desea acceder. Permite a la CPU enviar señales de dirección para seleccionar una ubicación específica en la memoria o en los dispositivos conectados. La cantidad de líneas en el bus de dirección determina el rango de direcciones que se pueden especificar, lo que afecta directamente a la cantidad máxima de memoria y dispositivos que pueden ser direccionados por el sistema. Bus de Control: El bus de control es un conjunto de cables que se utiliza para transmitir señales de control entre la CPU y otros componentes del sistema, como la memoria y los dispositivos de E/S. Estas señales de control incluyen comandos de lectura/escritura, señales de sincronización, señales de interrupción y señales de control de bus. El bus de control coordina las operaciones entre los diferentes componentes del sistema y garantiza que se realicen de manera sincronizada y eficiente. Tipos de Buses: PCI (Peripheral Component Interconnect): Utilizado para conectar dispositivos de expansión como tarjetas gráficas, tarjetas de sonido y tarjetas de red. PCIe (PCI Express): Una versión más rápida y avanzada de PCI utilizada en computadoras modernas para conectar dispositivos de alta velocidad como tarjetas gráficas y unidades de almacenamiento SSD. Memoria de la PC: La información con la que opera un procesador se encuentra en una memoria interna muy reducida conocida como “los registros”. Esta pequeña memoria no puede albergar toda la información requerida por un programa, por lo que se requiere una memoria externa adicional. Esta memoria externa es de mucha más capacidad, aunque también mucho más lento su acceso. La CPU y el SO se ocupan del trasvase entre memorias. No se accede a todos los datos con la misma frecuencia; obviamente se accede más a los datos del programa en ejecución que a los de uno que no se ejecutan hace un tiempo. En lugar de decidirnos por un único tipo o tecnología de memoria, lo que hay que hacer es construir una estructura con una jerarquía de memoria en la que haya diversas tecnologías, de tal manera que los pocos datos con los que se está ejecutando la instrucción en curso están en los registros de la CPU; los datos de las últimas instrucciones, en la memoria caché; el resto de los datos del programa en ejecución estarán repartidos entre memoria principal y secundaria de rápido acceso en zona de intercambio (swap, en discos magnéticos o sólidos); los programas o datos que no se ejecutan asiduamente se guardan en memoria secundaria y en memorias secundarias masivas de mayor tiempo de acceso, como la cinta magnética y el disco óptico, comúnmente para respaldo o Backup. La CPU y el sistema operativo se encargarán de ir llevando y trayendo los datos de las memorias lentas a las rápidas y viceversa, a medida que se vayan referenciando los distintos datos o programas La jerarquía de memoria se organiza en una pirámide, con la memoria más rápida y cara en la cima (memoria caché) y la más lenta y económica en la base (memoria principal). Esto permite un acceso rápido a los datos más utilizados y un almacenamiento más amplio pero más lento de datos menos utilizados. Las diferencias principales incluyen: Costo por bit: La memoria caché es más cara por bit en comparación con la memoria principal. Capacidad de almacenamiento: La memoria caché tiene una capacidad mucho menor que la memoria principal. Tiempos de acceso: La memoria caché tiene tiempos de acceso mucho más rápidos que la memoria principal. Frecuencias de acceso: La memoria caché se accede con mucha más frecuencia que la memoria principal. Comunicación entre niveles de la pirámide: Los diferentes niveles de la pirámide de memoria se comunican a través de buses de datos y direcciones. La CPU envía solicitudes de lectura o escritura a través del bus de direcciones, y los datos se transfieren a través del bus de datos. Memorias Caché Son memorias de acceso rápido que se encuentran entre la CPU y la memoria principal. Su función principal es almacenar temporalmente los datos e instrucciones que se utilizan con mayor frecuencia para mejorar el rendimiento del sistema. Mejoran el rendimiento al almacenar datos e instrucciones que se utilizan con frecuencia, reduciendo así los tiempos de acceso. Aunque es muy rápida solo dispone de unos cuantos kb de capacidad. La memoria caché aprovecha la localidad de referencia, tanto temporal como espacial, para mejorar el rendimiento del sistema. Cuando se accede a un dato por primera vez, se trae a la caché para que esté disponible rápidamente si se vuelve a necesitar. Se trae a la caché un bloque completo de memoria principal que contiene la dirección solicitada por la CPU. Posteriormente, cuando se referencia cualquier dirección dentro de ese bloque, se lee directamente desde la caché. La división en múltiples niveles de caché se hace para optimizar el rendimiento y la eficiencia del sistema. L1 (Caché de nivel 1): Es la más rápida y pequeña, generalmente integrada en el procesador. Tiene una latencia muy baja y se accede directamente desde la unidad de procesamiento (CPU). Guarda los datos e instrucciones más utilizados por la CPU para un acceso rápido. L2 (Caché de nivel 2): Es más grande que la L1 y un poco más lenta. A menudo está integrada en el procesador, pero en algunos casos puede estar fuera del chip del procesador. Sirve como una capa adicional de almacenamiento intermedio entre la L1 y la memoria principal. Almacena datos e instrucciones que no caben en la L1 o que se acceden con menos frecuencia. L3 (Caché de nivel 3): Es más grande que la L2 y un poco más lenta. Por lo general, está fuera del chip del procesador y compartida entre varios núcleos de CPU. Se utiliza para almacenar datos compartidos entre los núcleos y para proporcionar una reserva de datos más grande que la L2. L4 (Caché de nivel 4): Este nivel de caché no es tan común como los anteriores y a menudo se encuentra en sistemas de alto rendimiento. Es más grande que la L3 y se utiliza para proporcionar aún más capacidad de almacenamiento de datos cerca de la CPU. La división en varios niveles de caché permite optimizar el rendimiento y la eficiencia al garantizar que los datos e instrucciones más utilizados estén disponibles rápidamente en la caché más cercana a la CPU, mientras que los datos menos utilizados se almacenan en niveles de caché más grandes pero más lentos. Imagina las cachés como cajones donde guardas las cosas que usas con frecuencia. Cada cajón tiene un tamaño diferente y está más cerca o más lejos de ti. L1: Es como tu cajón más pequeño y rápido, justo al lado de ti. Guarda las cosas que usas todo el tiempo, como las llaves de tu casa. Puedes acceder a ellas rápidamente porque están muy cerca. L2: Este cajón es un poco más grande y está un poco más lejos. Guarda cosas que usas con menos frecuencia pero aún necesitas rápido, como tus tarjetas de crédito. Aunque no están tan cerca como las llaves, todavía puedes obtenerlas bastante rápido. L3: Este cajón es más grande y está más lejos aún. Guarda cosas que no usas tan a menudo, como documentos importantes. Tardas un poco más en encontrarlas que las cosas en los cajones anteriores, pero aún son accesibles. L4: Este es el cajón más grande y está más lejos de ti. Guarda cosas que rara vez usas, como recuerdos en el ático. Tardas más en encontrarlas porque están lejos, pero aún puedes recuperarlas cuando las necesites. La forma en que traspasan la información es como pasar un mensaje de un cajón a otro. Si necesitas algo que no está en el cajón más cercano (L1), lo buscas en el siguiente (L2), y así sucesivamente hasta que lo encuentres. Si no está en ninguno de los cajones, tienes que ir más lejos (a la memoria principal) para encontrarlo. Cuanto más lejos esté el cajón, más tiempo llevará encontrar lo que necesitas. Mejoras de rendimiento: Además de reducir los tiempos de acceso, las memorias caché también ayudan a minimizar el tráfico en el bus de memoria al reducir la necesidad de acceder constantemente a la memoria principal. Coherencia de caché: Se refiere a garantizar que todos los núcleos de la CPU vean una visión coherente de la memoria compartida. La arquitectura afecta la coherencia de la caché al determinar cómo se manejan las operaciones de lectura y escritura entre los núcleos. Principio de Localidad de referencia: Se refiere a la tendencia de un programa a acceder repetidamente a las mismas ubicaciones de memoria durante un período de tiempo limitado. Lo que establece este principio se debe a que el contenido de cada programa no está esparcido por toda la memoria, sino que sus instrucciones y datos están contenidos en una o varias secciones de memoria contigua, por lo que los accesos a la memoria se concentran en las áreas donde están las instrucciones o los datos del programa en ejecución. Se manifiesta en dos aspectos temporal y espacial: Localidad Temporal: Este aspecto se refiere a la tendencia de que los datos e instrucciones que se acceden recientemente tengan una alta probabilidad de volver a ser accedidos en un futuro cercano. En otras palabras, si un dato se ha utilizado recientemente, es probable que se vuelva a utilizar pronto. Por ejemplo, si un programa está ejecutando un bucle que accede repetidamente a los mismos datos, esos datos se mantendrán en la caché debido a la localidad temporal. Localidad Espacial: Este aspecto se refiere a la tendencia de que los datos e instrucciones que están cerca en memoria física tengan una alta probabilidad de ser accedidos en conjunto. Esto significa que cuando se accede a un dato específico, es probable que los datos cercanos también se utilicen pronto. Por ejemplo, si un programa accede a un elemento de una matriz, es probable que acceda a elementos adyacentes en la misma matriz debido a la localidad espacial. La localidad temporal se refiere a volver a acceder a datos recientes, y la localidad espacial se refiere a acceder a datos que están físicamente cerca unos de otros. Estos principios ayudan a explicar por qué las cachés funcionan de manera eficiente al almacenar y recuperar datos. Ejemplos: Localidad Temporal: Imagina que estás leyendo un libro y te encuentras con una palabra difícil. Es probable que vuelvas a ver esa palabra varias veces en la misma página o en páginas cercanas mientras sigues leyendo. En este caso, la palabra difícil es como un dato que se accede recientemente en la memoria. La localidad temporal significa que es probable que vuelvas a necesitar ver esa palabra (o dato) varias veces en un corto período de tiempo. Localidad Espacial: Ahora imagina que estás leyendo un párrafo en un libro. Es probable que, mientras lees el párrafo, también te interese leer el párrafo siguiente o anterior. La localidad espacial significa que los datos que están físicamente cerca entre sí (como palabras en un libro o bytes en la memoria de la computadora) son propensos a ser accedidos juntos. Es como si al leer una parte de un libro, también quisieras leer las partes cercanas. Bloque: Es un conjunto de datos contiguos que se transfieren entre la memoria principal y la caché como una unidad. El tamaño de un bloque suele ser el ancho del bus de datos o un múltiplo de él, como 2, 4, 8 bytes, etc. Línea: Es el espacio que tiene una caché para almacenar un bloque de datos de la memoria principal. Palabra: Es la cantidad de datos que la CPU puede manejar en una sola operación, generalmente de 32 o 64 bits de longitud. Cuando se accede a la memoria principal para obtener un byte o palabra necesitada por la CPU, se aprovecha el viaje por los buses para transferir un bloque contiguo de información que contiene dicho byte y otros bytes cercanos en la memoria. Esto se hace para aprovechar la localidad espacial y mejorar el rendimiento del sistema al reducir el tiempo de acceso total. Estructura de la Caché: Cada entrada de la caché tiene una etiqueta que identifica al bloque que contiene en ese momento. También tiene un bit "V" que indica si la entrada está ocupada por algún bloque. Además, tiene un bit de "ensuciado" que indica si el bloque ha sido modificado desde que se trajo de la memoria principal. La memoria caché utiliza bloques de datos para aprovechar la localidad de referencia y mejorar el rendimiento del sistema. Se emplean diferentes políticas para gestionar el almacenamiento, la sustitución y la actualización de los bloques en la caché, y la estructura de la caché incluye etiquetas y bits de control para administrar eficientemente los bloques almacenados. Unidad de transferencia y espacio de memoria: La unidad de transferencia entre la memoria principal y la caché es generalmente un bloque de memoria. El espacio de memoria en la caché se denomina conjunto de caché. Políticas de Memoria Caché: Correspondencia: Determina cómo se asignan los bloques de memoria de la memoria principal a la caché. La correspondencia directa asigna un bloque de memoria principal a una ubicación específica en la caché, mientras que la asociativa permite que un bloque de memoria se almacene en cualquier ubicación de la caché. Función de correspondencia: Determina cómo se asignan los bloques de memoria de la memoria principal a la caché. Los principios incluyen correspondencia directa, asociativa y asociativa de conjuntos. Correspondencia directa: Cada bloque de memoria de la memoria principal tiene una ubicación específica en la caché. Es simple pero puede provocar conflictos de caché. Correspondencia asociativa: Los bloques de memoria pueden almacenarse en cualquier ubicación de la caché. Es más flexible pero puede ser más lento. Correspondencia asociativa de conjuntos: Los bloques de memoria se dividen en conjuntos y cada conjunto tiene una política de correspondencia asociativa. Combina la flexibilidad de la correspondencia asociativa con la eficiencia de la correspondencia directa. Ubicación: Decide dónde se almacenan los bloques de memoria en la caché. La memoria caché puede almacenar un número limitado de bloques de memoria principal Sustitución: Determina qué bloque de memoria se reemplaza cuando la caché está llena. Cuando la caché está llena y se necesita espacio para un nuevo bloque, se utiliza una política de sustitución para decidir qué bloque se eliminará de la caché. Actualización: Define cómo se actualiza la caché cuando se realizan cambios en la memoria principal. Se encarga de decidir cómo se actualiza la memoria principal cuando se modifica un bloque en la caché. Política de ubicación: La política de ubicación determina dónde se almacenan los bloques de memoria en la caché. Sus componentes incluyen correspondencia directa, asociativa y asociativa de conjuntos. Política de sustitución: Determina qué bloque de memoria se reemplaza cuando la caché está llena. Los enfoques incluyen FIFO (primero en entrar, primero en salir), LRU (menos recientemente utilizado) y aleatorio. Ley de Moore vs. realidad: La Ley de Moore predice que la cantidad de transistores en un chip se duplicará aproximadamente cada dos años, lo que conduce a un aumento constante en la potencia de procesamiento. Sin embargo, en la realidad, este ritmo de crecimiento se ha desacelerado debido a limitaciones físicas y económicas. Aunque la Ley de Moore ha sido una guía útil en el desarrollo de la tecnología, se ha vuelto cada vez más difícil mantener su ritmo debido a limitaciones físicas como el tamaño de los transistores y el calor generado. Tipos de Direccionamiento: Inmediato: Los operandos están codificados en la propia instrucción. Directo: Se accede a la memoria utilizando una dirección específica. Indirecto: Se accede a la memoria a través de una dirección contenida en un registro. Indirecto por registro: Similar al indirecto, pero la dirección se encuentra en un registro específico de la CPU. Pipeline: Es una técnica que divide la ejecución de instrucciones en varias etapas para mejorar el rendimiento. Incluye etapas como buscar, decodificar, ejecutar, etc. La ejecución secuencial pura es más lenta ya que cada instrucción se completa antes de comenzar la siguiente, mientras que el pipeline óptimo permite que varias instrucciones se ejecuten simultáneamente en diferentes etapas del pipeline. El concepto de pipeline se aplica no solo a la ejecución de instrucciones en la CPU, sino también a otras áreas como el procesamiento de datos en gráficos por computadora, la transmisión de datos en redes, etc. Un pipeline es como una cadena de montaje en una fábrica de autos. En lugar de construir un auto completo a la vez, se divide en pasos más pequeños. Cada paso se enfoca en una tarea específica, como colocar las ruedas o instalar el motor. En una computadora, el pipeline es similar. Divide el proceso de ejecución de una instrucción en pasos más pequeños. Cada etapa del pipeline se encarga de una parte diferente de la instrucción, como buscarla en la memoria, decodificarla y ejecutarla. Al dividir el trabajo de esta manera, la computadora puede procesar múltiples instrucciones al mismo tiempo, lo que mejora la velocidad y eficiencia. Es como si cada instrucción estuviera pasando por una línea de producción, donde cada etapa realiza una parte del trabajo para completar la tarea final. MIPS64 y Etapas: MIPS64 es una arquitectura de conjunto de instrucciones (ISA) diseñada por MIPS Technologies. Es una versión de 64 bits de la arquitectura MIPS (Microprocessor without Interlocked Pipeline Stages), que es una arquitectura de computadora de tipo RISC (Reduced Instruction Set Computing). La arquitectura MIPS64 se utiliza en una variedad de sistemas, desde dispositivos integrados hasta servidores de alta gama. Proporciona un conjunto de instrucciones eficiente y potente, con características como un pipeline profundo y un conjunto de instrucciones simplificado para mejorar el rendimiento y la eficiencia energética. MIPS64 también es conocido por su diseño modular y su capacidad para admitir características avanzadas como la ejecución fuera de orden. MIPS64 es un tipo de diseño de computadora que se centra en hacer las cosas de manera eficiente y rápida. Es como un conjunto de reglas que una computadora sigue para realizar tareas. Es como un conjunto de instrucciones que la computadora comprende y utiliza para hacer las cosas. La parte "64" significa que está diseñado para trabajar con datos de 64 bits a la vez, lo que permite manejar grandes cantidades de información de manera rápida. Este diseño se utiliza en muchos tipos de dispositivos, desde teléfonos inteligentes hasta supercomputadoras, porque es rápido y eficiente en términos de energía. Es como un lenguaje común que todas las computadoras que utilizan este diseño entienden y siguen para realizar sus tareas. Las etapas son parte del ciclo de ejecución de instrucciones en una arquitectura MIPS64, que es una arquitectura de conjunto de instrucciones reducido (RISC) comúnmente utilizada en sistemas embebidos y servidores de alta gama. Cada etapa tiene su función específica para completar la ejecución de una instrucción. - F (Fetch): Se obtiene la instrucción de la memoria. - D (Decode): Se decodifica la instrucción para determinar qué operación realizar. - E (Execute): Se ejecuta la operación. - M (Memory): Se accede a la memoria si es necesario. - WB (Write Back): Se escriben los resultados de vuelta en los registros. Memoria Principal Esta memoria se encarga tanto de proporcionar los datos solicitados por la caché, como de servir de buffer con los dispositivos de entrada/salida, pues es el destino de los datos de entrada y fuente de los datos de salida. Composición: La memoria principal está compuesta principalmente por chips de memoria RAM (Random Access Memory), que se dividen en dos tipos principales: SRAM (Static RAM) y DRAM (Dynamic RAM). Además de DDR5, otras tecnologías utilizadas en la memoria principal incluyen DDR4, DDR3, y así sucesivamente. Cada generación presenta mejoras en velocidad, eficiencia energética y capacidad. Las prestaciones de la memoria principal se suelen medir considerando dos factores: ancho de banda y latencia. El ancho de banda es el número de bits que se puede transferir en cada acceso a memoria, es decir, el ancho del bus de datos. Actualmente el tamaño común del bus de datos es de 64 bits. La latencia de memoria considera dos medidas: el tiempo de acceso y el tiempo de ciclo. El tiempo de acceso es el tiempo máximo que transcurre desde que se realiza la petición de L/E por parte del procesador, hasta que se entrega el dato. El tiempo de ciclo es el tiempo mínimo que debe transcurrir entre dos peticiones consecutivas a memoria. Este tiempo es la suma del tiempo de preparación del acceso (establecer la dirección en el bus de direcciones), más el tiempo de transferencia del dato (tiempo de acceso) en el caso de las memorias dinámicas, hay que añadir también el tiempo de refresco. Caracteristicas internas de la memoria principal: La memoria principal, internamente, está compuesta por celdas de memoria organizadas en filas y columnas. Cada celda puede almacenar un bit de información, representado por un valor binario de 0 o 1. La organización de estas celdas permite acceder a la información almacenada a través de direcciones específicas. ¿Qué elementos se alojan en ella dentro de la arquitectura J. V. Newman? ¿Cuál es el otro modelo y qué diferencia propone? En la arquitectura de J. V. Newman, la memoria principal aloja tanto datos como instrucciones del programa. El otro modelo propuesto es la arquitectura de von Neumann, que también alberga datos e instrucciones en la misma memoria principal, pero propone la separación entre memoria de datos y memoria de instrucciones. ¿Cuáles son los factores que se utilizan para medir las prestaciones de la memoria principal? Los factores que se utilizan para medir las prestaciones de la memoria principal incluyen la velocidad de acceso, la capacidad de almacenamiento, la latencia, el ancho de banda y la fiabilidad. ¿Cuáles son las tecnologías básicas sobre memoria y para que se utiliza cada una de ellas? Las tecnologías básicas sobre memoria incluyen la memoria RAM (Random Access Memory), utilizada para almacenar datos temporalmente mientras se ejecutan programas; la memoria ROM (Read-Only Memory), utilizada para almacenar datos permanentes, como el firmware del sistema; y la memoria caché, que actúa como un buffer de acceso rápido entre la CPU y la memoria principal. ¿A que se denomina RAS (Row Address Strobe) y CAS (Column Address Strobe)? RAS (Row Address Strobe) y CAS (Column Address Strobe) son señales de control utilizadas en los módulos de memoria DRAM (Dynamic Random Access Memory). RAS se utiliza para seleccionar una fila específica de celdas de memoria, mientras que CAS se utiliza para seleccionar una columna específica dentro de esa fila. ¿Qué significa DDR? Describa las diferentes generaciones. Investigue la versión más moderna en el mercado actual año 2020. Establezca sus capacidades en velocidad, consumo de energía y tiempos de acceso DDR significa "Double Data Rate" y se refiere a la capacidad de transferir datos dos veces por ciclo de reloj. Las generaciones de DDR incluyen DDR, DDR2, DDR3 y DDR4. DDR4 es la versión más moderna en el mercado actual (hasta 2020), ofreciendo velocidades más altas, menor consumo de energía y tiempos de acceso más rápidos en comparación con sus predecesores. A qué se denomina refresco y porque es necesario realizarlo. El refresco es el proceso de actualizar periódicamente el contenido de la memoria dinámica (DRAM) para evitar que los datos se pierdan debido a la pérdida gradual de carga en las celdas de memoria. Es necesario realizarlo porque la memoria DRAM requiere que los datos se vuelvan a escribir periódicamente para mantener su integridad, ya que la información se almacena en forma de carga eléctrica en condensadores que tienden a perder su carga con el tiempo. Repaso: Dos arquitecturas, von newman (esta todo en el mismo lugar) y Harvard (memorias separadas para datos y programas, es mas certera) Los registros internos del procesador son parte de la memoria Disco rigido --> zona swap es parte de la memoria Memora paginada me va a servir para mover bloques de memoria a páginas de disco en zona swap Memoria principal MP La MP se la puede paginar para redirigir bloques de MP en zona SWAP y desocupar bloques a utilizar. Los bloques en paginación se llaman marcos de paginas. Cada vez que se ejecute un programa, parte del mismo deberá alojarse en MP, RAM (los datos e instrucciones deben ser almacenados en MP para una máquina de propósito general) Es más rápida que la memoria secundaria en disco (la memoria principal es más rápida que la memoria secundaria, como la RAM respecto al disco duro. La MP es una memoria volátil, al quedarse sin energía eléctrica se desvanece. (pierde su contenido cuando se apaga la computadora.) Referente a la administración MP en caché, la asignación por Correspondencia directa: Tiene el problema que genera colisiones, pero es fácil de implementar (Al ser directa es fácil de implementar por parte del S.O.). La correspondencia directa puede generar colisiones cuando múltiples bloques de memoria se asignan a la misma línea de caché. Cada bloque puede ubicarse en una única línea de la caché. Eso facilita su implementación. Pero puede provocar expulsiones múltiples. Selección del bloque MP Establecer la columna “CAS+WE”. Establecer la fila “RAS” Escritura diferida de memoria: Si un bloque se modifica lo marca con el bit de ensuciado, para cuando otro proceso lo solicite lo actualice en MP. Recién ahí se requiere el uso de los buses para llevar la actualización a MP. Genera incoherencia en el sistema de memoria. Hasta que se actualicen los datos estará incoherente. Genera poco tráfico debido a que intenta liberar los buses (evita el uso de los buses para no entorpecer la comunicación interna.) Pipeline Beneficia el sistema al anticipar los procesos siguientes en las etapas HW, que se van desocupando en la instrucción anterior. Al calcular el rendimiento SpeedUp del Pipeline se divide el tiempo medio sin pipeline sobre tiempo medio con pipeline. En su cálculo se proporciona según la cantidad del tipo de instrucciones a realizar y los ciclos que demandan cada uno. No es paralelismo verdadero, es pseudoparalelismo. Se implementó en principio en un solo procesador. Luego se aplicó a multiprocesadores, como veremos en U3 El pipeline divide el proceso de ejecución de instrucciones en etapas especializadas para mejorar el rendimiento. Pipelina relentización del cauce Uno de los motivos de la ralentización del cauce se debe a motivos estructurales. Un motivo estructural es por ejemplo, cuando una instrucción demanda más de un ciclo en alguna de sus etapas. La dependencia de operandos, es un motivo estructural de la ralentización del cauce. Por ejemplo, cuando una instrucción necesita leer un registro que la instrucción anterior aún no guardó. Como la dirección de salto no se conoce ante una bifurcación "IF" condicional que debe evaluarse, el sistema debe esperar a su evaluación para proceder a la carga de la instrucción siguiente. Las instrucciones NOP demoran ciclos de procesador, haciendo que el cauce demore y perjudique el rendimeinto del sistema. ¿Según la política de sustitución de LRU cual bloque se sustituye? Se elige el que lleva más tiempo sin ser referenciado. En la política LRU, se sustituye el bloque que ha estado inactivo durante el período más largo, no el más corto. LRU sigue una política específica basada en el tiempo de inactividad de los bloques en la caché. ¿Según cuestiones de diseño qué sucede si la cache es muy grande?: A partir de determinado tamaño no mejora la tasa de aciertos, aumentar el tamaño de la caché puede no mejorar significativamente la tasa de aciertos, ya que la localidad espacial y temporal de los datos puede no aumentar en la misma proporción. Un tamaño de caché mayor suele reducir el número de fallos de caché y mejorar el rendimiento si se mantiene una tasa de aciertos alta. Aumentar el tamaño de la caché generalmente aumenta los costos de producción de hardware. Con la implementación de procesos segmentados “pipeline” se busca mejorar el rendimiento del procesador al permitir la ejecución simultánea de múltiples etapas de instrucción. Entre las mejoras se incluyen el aumento del ancho de banda de memoria, la predicción de saltos, la implementación de cachés más eficientes y el uso de técnicas de ejecución especulativa. El paralelismo se refiere a la capacidad de realizar múltiples operaciones simultáneamente, ya sea en un único procesador mediante técnicas como el pipeline, o en múltiples procesadores trabajando en conjunto. La concurrencia se refiere a la capacidad de ejecutar múltiples tareas de manera independiente y simultánea. Puede implementarse mediante el uso de hilos de ejecución o procesos en sistemas operativos multitarea. Pasos para la ejecución de una instrucción en pipeline del MIPS64. Los pasos son: búsqueda de instrucción, decodificación, ejecución, acceso a memoria y escritura en el registro. ¿Qué sucede cuando en un procesador segmentado, luego de leer la primera instrucción, esta pasa a decodificarse y falla la búsqueda y captación de la siguiente? ¿Qué pasa si, habiendo leído la siguiente instrucción, no encuentra los datos a procesar? En ambos casos se produce un estancamiento del pipeline, conocido como "burbuja", donde no se pueden ejecutar nuevas instrucciones hasta que se resuelvan los problemas de búsqueda o acceso a datos. ¿Qué motivos pueden ralentizar (frenar o parar) el pipeline? Los motivos incluyen fallos en la predicción de saltos, conflictos de datos, fallos de caché, y dependencias de instrucciones. ¿Qué es el tiempo medio de ejecución de una instrucción? BUSCAR - Es el tiempo promedio que tarda una instrucción en completarse desde que se inicia su ejecución hasta que se finaliza. ¿Cómo se mide en un procesador no segmentado? - Se mide contando el número de ciclos de reloj que tarda en ejecutarse una instrucción. ¿Cómo se mide en un procesador segmentado? - Se calcula sumando el tiempo de ejecución de cada etapa del pipeline. ¿Qué es el speed-up y cómo se calcula? - El speed-up es la mejora en el rendimiento obtenida al utilizar una técnica de optimización. Se calcula como la razón entre el tiempo de ejecución sin optimización y el tiempo de ejecución con optimización. ¿Qué es la dependencia de datos y cómo se ha tratado de solucionar? - La dependencia de datos ocurre cuando una instrucción depende del resultado de otra. Se ha tratado de solucionar utilizando técnicas como la reordenación de instrucciones, la ejecución especulativa y el renombrado de registros. ¿Qué son los huecos de retardo en el pipeline? - Son períodos en los que no se pueden ejecutar instrucciones debido a conflictos o estancamientos en el pipeline. ¿Qué tipos de bifurcación se conocen? ¿Pueden predecirse? - Se conocen bifurcaciones condicionales y no condicionales. Las bifurcaciones condicionales pueden predecirse mediante técnicas como la predicción de saltos. ¿Qué sucede si luego de predecir un salto éste realmente se produce y qué sucede si no? - Si se produce el salto como se predijo, no hay penalización. Si no se produce como se predijo, se produce un estancamiento en el pipeline y se deben desechar las instrucciones especulativas. Dentro de las operaciones multiciclo ¿cómo se afrontan los inconvenientes de procesos largos como en las operaciones con números en punto flotante? - Se dividen las operaciones largas en múltiples ciclos de reloj, permitiendo así que otras instrucciones se ejecuten mientras tanto. ¿Cómo se define un riesgo estructural? - Un riesgo estructural ocurre cuando dos o más instrucciones compiten por el mismo recurso del hardware en un mismo ciclo de reloj. ¿Cuándo acontece el riesgo estructural y cómo se soluciona? - Ocurre cuando el hardware no puede soportar todas las operaciones solicitadas en un mismo ciclo. Se soluciona mediante la segmentación de recursos, el uso de hardware más rápido o la reordenación de instrucciones. Describa los riesgos de Datos en procesadores Multiciclo RAW, WAW y WAR. - RAW (Read After Write): Ocurre cuando una instrucción intenta leer un dato antes de que otra instrucción lo haya escrito. - WAW (Write After Write): Ocurre cuando dos instrucciones intentan escribir en el mismo registro al mismo tiempo. - WAR (Write After Read): Ocurre cuando una instrucción intenta escribir en un registro antes de que otra instrucción haya terminado de leerlo.