UNIDAD 1
CIRCUITOS INTEGRADOS
Condicionales
* Codificador: tiene 2 a la n entradas y n salidas, se encarga de transformar una serie de
señales que generalmente suelen representar los diferentes dígitos del lenguaje humano en
otra secuencia de señales binarias, teclado como codificador una letra y devuelve un valor
binario, las entradas puede haber una activa en un momento determinado
* Decodificador: tiene n entradas y 2 a la n salidas, las entradas se usan para seleccionar
una de las múltiples salidas. una sola salida va a ser activada en un momento determinado.
Se usan para circuito de memorias principales
* Multiplexor: Tiene n entradas y una sola salida, tienen entradas especiales (de control)
que van a ser log en base 2 de n (Cantidad de entradas adicionales de control). Nos permite
seleccionar una de las n entradas y direccionarlas a la salida, enrutamiento de datos.
* Demultiplexor: tiene una entrada (entrada de datos), n entradas adicionales de control y 2
a la n salidas, se usan en memoria principales en los direccionamientos de datos.
* Comparador: Tiene un máximo de 2.n Entradas y 3 salidas, es un circuito considerado
como aritmético, la primera salida indica que a>b la segunda a=b y la última es b>a, con los
lenguajes comparaciones se hacen acá, solo una salida se activa en un momento
determinado
* Sumadores: el sumador de 1 bit va a tener 3 entradas y 2 salidas, dos para sumar y 1
acarreo se empieza por el bit menos significativo y podremos tener un acarreo
Secuenciales:
* Biestables: (Importantes para la implementación de la cpu) Es almacenar uno de dos
valores posibles, se utilizan para memorias para un bit.
- Biestable S-R: Tiene 2 entradas y 2 salidas. Cuando r es = 1, q es = 0, cuando s=0 y r=0
entonces q=0, cuando s=1 y r=0 entonces q=1 (Tenemos que tener en cuenta que s y r no
pueden ser uno al mismo tiempo)
- Biestable D: Una sola entrada, esta evita la condición r=1 y s=1.
* Contadores: (Sirve para lo que es la ejecución de la CPU). Avanza de 1 en 1, internamente
tiene la lógica de la suma. Se considera secuencial porque tiene la capacidad de almacenar
el dato. Dentro de la CPU hay registros especiales que le permiten a la CPU saber en que
posición de memoria leer la instrucción.
COMPONENTES BÁSICOS DE UNA COMPUTADORA
Hay cuatro componentes estructurales principales:
Unidad Central de Procesamiento (CPU, Central Processing Unit): controla el
funcionamiento del computador y lleva a cabo sus funciones de procesamiento de
datos. Frecuentemente se le llama simplemente procesador.
Sus principales componentes estructurales son:
Unidad de control: controla el funcionamiento de la CPU y por tanto del
computador.
Unidad aritmético-lógica (ALU, Arithmetic Logic Unit): lleva a cabo las
funciones de procesamiento de datos del computador.
Registros: proporcionan almacenamiento interno a la CPU.
Interconexiones CPU: son mecanismos que proporcionan comunicación entre
la unidad de control, la ALU y los registros.
Memoria principal: almacena datos.
E/S (entrada/ salida): transfiere datos entre el computador y el entorno externo.
Sistema de interconexión: es un mecanismo que proporciona la comunicación entre
la CPU, la memoria principal y la E/S.
FUNCIONES BÁSICAS QUE UN COMPUTADOR
En términos generales hay solo cuatro:
Procesamiento de datos
Almacenamiento de datos
Transferencia de datos
Control
PRIMERA GENERACIÓN DE COMPUTADORAS
La primera generación de computadoras eran usualmente construidas a mano usando
circuitos que contenían relés y tubos de vacío, y a menudo usaban tarjetas perforadas o
cinta de papel perforado para la entrada de datos [input] y como medio de almacenamiento
principal (no volátil).
Las computadoras de primera generación eran enormes y requerían salas enteras para
alojar sus componentes. Ocupaban un espacio significativo debido al tamaño de las
válvulas, cables y otros componentes electrónicos.
La programación en esta época se realizaba directamente en lenguaje de máquina, lo que
implicaba trabajar con códigos binarios y de bajo nivel. Esto hacía que la programación
fuera compleja y propensa a errores.
Una de las primeras y más conocidas fue la ENIAC, construida en la Universidad de
Pennsylvania desarrollada con propósitos militares, que se dio a conocer en 1946.
Uno de los conceptos principales desarrollados fue el de la máquina de Von Neumann. Este
concepto subyace a la arquitectura básica de las computadoras modernas. Es conocido
como concepto del programa-almacenado, este concepto fue aplicado en el diseño de
nuevo computador al que llamaron IAS.
La estructura general del computador IAS consta de:
Una memoria principal que almacena tanto datos como instrucciones.
Una unidad aritmético-lógica (ALU) capaz de hacer operaciones con datos binarios.
Una unidad de control que interpreta las instrucciones en memoria y provoca su
ejecución.
Un equipo de entrada-salida dirigido por la unidad de control.
SEGUNDA GENERACIÓN
La principal innovación en esta generación fue la adopción de transistores en lugar de las
válvulas de vacío utilizadas en las computadoras de primera generación. Los transistores
eran más pequeños, más confiables, más barato, generaban menos calor y consumían
menos energía, lo que resultó en computadoras más eficientes y compactas. Las
computadoras de segunda generación utilizaron memoria de núcleos magnéticos en lugar
de las tarjetas perforadas utilizadas en la primera generación. Estos núcleos magnéticos
eran más rápidos y confiables, lo que mejoró el rendimiento general de las computadoras.
A medida que las computadoras se volvían más potentes, se desarrollaron lenguajes de
programación de alto nivel como Fortran y COBOL. Estos lenguajes permitían a los
programadores escribir código en un formato más cercano al lenguaje humano, lo que
facilitaba el desarrollo de software complejo. Se introdujeron unidades lógicas y aritméticas
y unidades de control más complejas y se proporcionó un software del sistema con el
computador.
La IBM 1401, una de las computadoras de la segunda generación, no tenía un sistema
operativo. En su lugar, para crear los programas utilizaba un lenguaje especial llamado
sistema de programación simbólica.
LA TERCERA GENERACIÓN
Con la tercera generación viene la invención del circuito integrado.
Los circuitos integrados utilizaron el hecho de que componentes como transistores,
resistencias y conductores podían ser fabricados a partir de un semiconductor como el
silicio.
Se pueden construir cientos e incluso miles de transistores al mismo tiempo en una sola
oblea de silicio. Igualmente importante es que estos transistores pueden ser conectados
con un proceso de metalización para formar circuitos.
A medida que el tiempo pasó, fue posible encapsular más y más componentes en un mismo
chip. Este crecimiento en densidad se conoce como la famosa ley de Moore.
Estas computadoras eran altamente confiables, rápidas y precisas, con un menor costo,
aunque seguían siendo relativamente caras. No solo se redujo su tamaño, sino el
requerimiento de energía y la generación de calor.
Los usuarios podían interactuar con la computadora por medio de teclados y monitores de
pantalla tanto para la entrada como para la salida de datos, además de interactuar con un
sistema operativo, logrando una integración de hardware y software.
Se utilizó como memoria primaria la memoria de semiconductores, tal como la RAM y ROM.
Se continuaron desarrollando los lenguajes de programación de alto nivel. Se utilizan
lenguajes de alto nivel como FORTAN, BASIC y otros para desarrollar programas.
En 1964, IBM tenía un firme dominio del mercado con sus máquinas de la serie 7000. Aquel
año, IBM anunció el Sistema/360, una nueva familia de productos de computadores. El
Sistema/360 fue la primera familia de computadores de la historia que se planeó.
DEC PDP-8 En el mismo año que IBM lanzó su primer Sistema/360 tuvo lugar otro
lanzamiento trascendental: el PDP-8 de DEC. el PDP-8 estableció el concepto de
minicomputador.
Los últimos modelos del PDP-8 usaban una estructura que ahora es prácticamente universal
para minicomputadores y microcomputadores: la estructura de bus. Como todos los
componentes del sistema comparten un conjunto de caminos, su uso debe estar controlado
por la CPU.
MÁQUINA DE VON NEUMANN
La máquina de von Neumann es un concepto teórico formulado por el matemático húngaro
- estadounidense John von Neumann.
Es conocido como concepto del programa-almacenado. La arquitectura de von Neumann,
en la que están claramente inspirados los ordenadores actuales, propone la utilización de
una unidad central de control, que contiene una unidad aritmético lógica capaz de llevar a
cabo cálculos matemáticos sencillos, un conjunto de registros que permiten el
almacenamiento temporal de datos y direcciones de memoria, y una unidad de control que
se encarga de recoger las instrucciones desde la memoria principal, de decodificarlas y
ejecutarlas. Además, este modelo de arquitectura también propone la existencia de una
memoria principal en la que residen los datos y las instrucciones, y de un bus de entrada y
salida que permite cargar los programas y los datos desde un medio de almacenamiento
externo y entregar un resultado.
Este concepto fue aplicado en 1946 en el diseño de nuevo computador al que llamaron IAS,
el cual no fue completado hasta 1952.
ARQUITECTURA DE HARVARD
Este modelo se caracteriza en que los buses de información y el almacenamiento se
encuentran separados físicamente para los datos y el código del programa.
Como los buses funcionan de manera autónoma, los datos y las instrucciones del programa
se pueden obtener al mismo tiempo, mejorando así la velocidad sobre el diseño de bus
único.
Por tanto, el modelo Harvard resulta tener mayor complejidad. Sin embargo, al tener los
buses de forma independiente se evita el cuello de botella producido por la arquitectura
von Neumann.
Una computadora puede ser más veloz para un circuito de cierta complejidad, porque
buscar las instrucciones y acceder a los datos no tienen que luchar por un solo bus de
memoria.
Para trabajar existen dos direcciones de memoria. Por tanto, hay un registro de memoria
para las instrucciones de máquina y otro registro de memoria para los datos.
A diferencia de la arquitectura von Neumann, que utiliza un bus para mover tanto las
instrucciones como los datos de la memoria, la arquitectura Harvard usa un área de
memoria para los datos y otro para las instrucciones.
UNIDAD 2
PARTES CONSTITUTIVAS DE LA CPU (Pag 324)
La ALU se encarga de realizar las operaciones aritméticas (suma, resta) y lógicas (si, y, o, no)
con los datos que son suministrados por los demás elementos del computador (u. de
control, registros, memoria) con el fin de que esta procese y pueda recuperar los resultados.
Los dos aspectos fundamentales de la aritmética de un computador son la forma de
representar los números (binarios) y los algoritmos utilizados para realizar las operaciones
aritméticas básicas (suma, resta, multiplicación y división). La aritmética de un computador
se realiza normalmente con dos tipos de números muy diferentes: enteros y en coma
flotante (representa números muy grandes o muy pequeños de una manera eficiente y
compacta).
Una ALU debe procesar números usando el mismo formato que el resto del circuito digital.
Para los procesadores modernos, este formato casi siempre es la representación del
número binario de complemento a dos.
¿Cómo se interconecta la ALU con el resto del procesador? Los datos se presentan a la ALU
como registros, y en registros se almacenan los resultados de las operaciones producidas
por la ALU. Estos registros son posiciones de memoria temporal internas al procesador que
están conectadas a la ALU.
Registros: proporcionan almacenamiento interno a la CPU. Se emplean para controlar
instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar
capacidad aritmética. Los registros son espacios físicos dentro del microprocesador con
capacidad de 4 bits hasta 64 bits dependiendo del microprocesador que se emplee.
Los registros se encuentran dentro de cada microprocesador y su función es almacenar los
valores de datos, comandos, instrucciones o estados binarios que ordenan qué dato debe
procesarse, como la forma en la que se debe hacer. Un registro es una memoria de
velocidad alta y con poca capacidad.
Son la memoria más pequeña, costosa y más rápida, se encuentra en la cumbre de la
jerarquía de memoria.
Los registros se dividen en:
Registros de propósito general: se usan para almacenar datos o resultados temporales.
Registros de segmento: contiene la dirección de un segmento de memoria, y este registro
tiene la dirección de un cierto segmento de todo un programa.
Registros de puntero: almacenan direcciones de memoria.
Registros de control: controlan la ejecución de instrucciones.
Unidad de control:
Controla el funcionamiento de la CPU y por tanto del computador. Emite señales de control
externas al procesador para producir el intercambio de datos con la memoria y los módulos
de E/S. También emite señales de control internas al procesador para transferir datos entre
registros, hacer que la ALU ejecute una función concreta, y regular otras operaciones
internas.
Decodificación de instrucciones: La UC es responsable de decodificar las instrucciones que
se encuentran en la memoria y de interpretarlas en una serie de señales de control que se
utilizan para controlar la ejecución de la instrucción.
Secuenciación de instrucciones: La UC se encarga de asegurarse de que las instrucciones se
ejecuten en el orden correcto y de que las instrucciones posteriores no se ejecuten hasta
que se completen las instrucciones anteriores.
Control de flujo: La UC controla el flujo de datos y señales dentro de la CPU, asegurándose
de que los datos se muevan a través de los registros y de los componentes de la CPU en el
momento adecuado.
Generación de señales de control: La UC genera señales de control que se utilizan para
activar diferentes componentes de la CPU en el momento adecuado, como los registros de
memoria, los buses de datos y las unidades de ejecución.
Interconexiones:
Son los caminos o vías por donde circulan los datos, en CPU actuales son síncronos, que
funcionan con un pulso de reloj, con señal de reloj se sincroniza la CPU. Nos permiten enviar
y recibir datos entre los diferentes componentes de la CPU. (Estos tipos de conexiones se
utilizan cuando deben transferirse grandes cantidades de datos con gran rapidez desde una
ubicación a la otra. La velocidad de la conexión síncrona se consigue transfiriendo datos en
grandes bloques en lugar de caracteres individuales.)
Los caminos que conectan los diversos módulos que componen una computadora se
conocen como la estructura de interconexión. Estos mecanismos proporcionan
comunicación entre la unidad de control, la ALU y los registros. Un único bus interno
conecta la ALU y todos los registros del procesador. Hay puertas y señales de control
encargadas de realizar transferencias de datos entre el bus y cada registro. Una
característica clave es que es un medio de transmisión compartido: múltiples dispositivos se
conectan al bus y una señal transmitida por uno de ellos está disponible para ser recibida
por todos los demás. Si dos dispositivos intentan transmitir al mismo tiempo, las señales se
mezclarán y dañarán. Así, sólo un dispositivo puede transmitir a la vez
CPUS PRINCIPALES
Primera CPU
4004
1971
Tenía síncrono velocidad 108kh
Ancho de bus de 4 bits
2300 transistores
Tamaño de 10 micrómetros
Memoria direccionable de 640 bytes
No tenía memoria virtual
8080
Surge en 1974
Velocidad 2mgh
8 bits 6500 transistores
Tamaño de 6 micrómetros
Memoria direccionable de 64 kb
8086
1978
Surgen versiones de 5 8 y 10 mgh
Tenia ancha de bus 16bits
29k transistores
Tamaño 3 micrómetros
Memoria direccionable 1 mb
80286
Surge en 1982
Frecuencia 5 a 12.5 mgh
16 bits
134k transistores
Tamaño de 1.5 micrómetros
Memoria direccionable 16mb
Tenía la capacidad de manipular memoria virtual de 1gb
REGISTROS DEDICADOS Y NO DEDICADOS DE LA CPU (Pag 463)
• Registros visibles por el usuario (no dedicados): permiten al programador de lenguaje
máquina o de ensamblador minimizar las referencias a memoria principal por medio de la
optimización del uso de registros.
Podemos clasificarlos en las siguientes categorías:
• Uso general: pueden ser asignados por el programador a diversas funciones. A veces, su
uso dentro del repertorio de instrucciones es ortogonal a la operación. Es decir, cualquier
registro de uso general puede contener el operando para cualquier código de operación.
• Datos: pueden usarse únicamente para contener datos y no se pueden emplear en el
cálculo de la dirección de un operando.
• Direcciones: pueden ser de uso más o menos general, o pueden estar dedicados a un
modo de direccionamiento particular.
• Códigos de condición: son bits fijados por el hardware del procesador como resultado de
alguna operación. Además de almacenarse el propio resultado en un registro o en la
memoria, se obtiene también un código de condición. El código puede ser examinado con
posterioridad como parte de una operación de salto condicional.
• Registros de control y de estado (dedicados): son utilizados por la unidad de control para
controlar el funcionamiento del procesador y por programas privilegiados del sistema
operativo para controlar la ejecución de programas.
REGISTROS DEDICADOS: MAR, MBR, PC, IR, SP, PSW
• Contador de programa (Program Counter, PC): contiene la dirección de la instrucción a
captar.
• Registro de instrucción (Instruction Register, IR): contiene la instrucción captada más
recientemente.
• Registro de dirección de memoria (Memory Address Register, MAR): contiene la dirección
de una posición de memoria.
• Registro intermedio de memoria (Memory Buffer Register, MBR): contiene la palabra de
datos a escribir en memoria o la palabra leída más recientemente.
⦁ Registro de Pila (Stack Pointer, SP): contiene la dirección de la cima de la pila.
• Palabra de estado del programa (PSW, program status word): contiene típicamente
códigos de condición además de otra información de estado.
o Signo: contiene el bit de signo del resultado de la última operación aritmética.
o Cero: puesto a uno cuando el resultado es 0.
o Acarreo: puesto a uno si una operación da lugar a un acarreo (en la suma) o
adeudo (en la Resta) del bit más significativo. Se usa en operaciones
aritméticas multipalabra.
o Igual: puesto a uno si el resultado de una comparación lógica es la igualdad.
o Desbordamiento: usado para indicar un desbordamiento aritmético.
o Interrupciones habilitadas/inhabilitadas: usado para permitir o inhabilitar
interrupciones.
o Supervisor: indica si el procesador funciona en modos supervisor o usuario.
Únicamente en modo supervisor se pueden ejecutar ciertas instrucciones
privilegiadas y se puede acceder a ciertas áreas de memoria.
INSTRUCCIONES Y OPERACIONES
Instrucciones:
El funcionamiento del procesador está determinado por las instrucciones que ejecuta. Estas
instrucciones se denominan instrucciones máquina o instrucciones del computador. Al
conjunto de instrucciones distintas que puede ejecutar el procesador se denomina
repertorio de instrucciones del procesador.
Cada instrucción debe contener la información que necesita el procesador para su
ejecución. Dichos elementos son:
Código de operación: especifica la operación a realizar (suma, E/S, etc.). La operación
se indica mediante un código binario denominado código de operación o,
abreviadamente, codop.
Referencia a operandos fuente u origen: la operación puede implicar a uno o más
operandos origen, es decir operandos que son entradas para la instrucción.
Referencia al operando de destino o resultado: la operación puede producir un
resultado.
Referencia a la siguiente instrucción: dice al procesador de dónde captar la siguiente
instrucción tras completarse la ejecución de la instrucción actual.
Operaciones:
Las operaciones son acciones fundamentales que realiza una unidad de procesamiento
central (CPU) para llevar a cabo tareas específicas.
Estas operaciones pueden incluir operaciones de:
Transferencias de datos.
Aritméticas.
Lógicas.
De conversión.
De E/S.
De control del sistema.
De control de flujo
Las operaciones se realizan en datos que están almacenados en la memoria o en registros
internos de la CPU.
LENGUAJE DE ALTO NIVEL Y BAJO NIVEL
Bajo Nivel:
Un lenguaje de programación de bajo nivel es aquel en el que sus instrucciones ejercen un
control directo sobre el hardware y por lo tanto están condicionados por la estructura física
de las computadoras que lo soportan.
El uso del término bajo en su nombre no quiere decir que este lenguaje sea menos potente
o importante que un lenguaje de alto nivel, simplemente se refiere a la reducida abstracción
que existe entre el lenguaje y el hardware.
Las instrucciones del lenguaje de bajo nivel generalmente son una denominación abreviada
de la instrucción que simbolizan, y se corresponden casi directamente (uno a uno) a las
mismas instrucciones que representan. El código que sale de hacer una compilación del
lenguaje ensamblador genera un código de máquina binario ejecutable.
El lenguaje de bajo nivel presenta múltiples ventajas. Es un código sencillo y muy adaptable,
con instrucciones directas, de fácil conversión y, también trabaja a gran velocidad.
Lenguaje de máquina: está formado por unos (1) y ceros (0) y tal y como su nombre indica,
este es el código que comunicará directamente las instrucciones a la computadora (CPU). El
uso de este lenguaje es esencial ya que es el que se usa para enviar de forma literal todas
las tareas que se tienen que llevar a cabo.
Lenguajes ensambladores, también conocidos como mnemotécnicos o mnemónicos, son un
primer nivel de abstracción. Estos códigos requieren de alguna herramienta como un
compilador para traducirlos al lenguaje de máquina de manera que el CPU pueda
ejecutarlos, estos no son programas ejecutables directamente por el ordenador.
Alto Nivel:
Un lenguaje de programación de alto nivel se caracteriza por expresar los algoritmos de una
manera adecuada a la capacidad cognitiva humana, en lugar de la capacidad con que las
máquinas lo ejecutan. Estos lenguajes permiten una máxima flexibilidad al programador a la
hora de abstraerse o de ser literal. Permiten un camino bidireccional entre el lenguaje
máquina y una expresión casi oral entre la escritura del programa y su posterior
compilación. Por lo general suelen estar orientados a objetos, a eventos o a funciones,
pudiendo estos combinarse. Asimismo, pueden ser compilados o interpretados.
Las ventajas del lenguaje de alto nivel con respecto al de bajo nivel son:
Genera un código más sencillo y comprensible.
Un código válido para diversas máquinas o sistemas operativos.
Permite utilizar paradigmas de programación.
Permite crear programas complejos en relativamente menos líneas de código.
El código escrito en lenguajes de alto nivel es más fácil de modificar y mantener a lo
largo del tiempo.
Debido a su naturaleza más abstraída y la falta de necesidad de manipulación directa
de la memoria, los lenguajes de alto nivel son menos propensos a errores de
programación, como fugas de memoria y accesos incorrectos a la memoria.
Portabilidad: Los lenguajes de alto nivel están diseñados para ser independientes de
la arquitectura del hardware subyacente. Esto significa que el mismo código puede
ejecutarse en diferentes plataformas con ajustes mínimos o nulos, lo que ahorra
tiempo y esfuerzo en la adaptación a diferentes sistemas.
DIRECCIONAMIENTO
Los diversos repertorios de instrucciones utilizan una gran variedad de modos de
direccionamiento. Estos modos incluyen el direccionamiento directo (la dirección del
operando está en el campo de direcciones), indirecto (el campo de direcciones apunta a la
posición que contiene la dirección del operando), a registro, indirecto con registro, y
diversos tipos de desplazamiento en los que el valor de un registro se suma a un valor de
dirección para producir la dirección del operando.
MICROPROGRAMACIÓN
La microprogramación se utiliza para implementar el conjunto de instrucciones de una CPU.
En lugar de ejecutar directamente las instrucciones del lenguaje de máquina, la
microprogramación utiliza un nivel intermedio de instrucciones llamado
"microinstrucciones" o "microcódigo". Estas microinstrucciones se almacenan en una
memoria especial llamada "memoria de control" o "ROM de control" y se ejecutan
secuencialmente para llevar a cabo las operaciones de una instrucción.
Permite una mayor flexibilidad en la implementación de instrucciones de la CPU, ya que las
microinstrucciones se pueden diseñar y modificar más fácilmente que la lógica de hardware
dedicada. Esto facilita la creación de CPU con conjuntos de instrucciones más complejos o
personalizados.
El proceso de microprogramación implica dividir cada instrucción de máquina en una
secuencia de microinstrucciones más simples que controlan los componentes de la CPU,
como la ALU, los registros y la memoria. Cada microinstrucción es similar a un paso en la
ejecución de una instrucción de máquina.
ARQUITECTURA CISC Y ARQUITECTURA RISC
El término CISC significa ''Complex Instruction Set Computer''. Este procesador incluye una
enorme colección de instrucciones de simples a complejas. Estas instrucciones se
especifican a nivel de lenguaje ensamblador y tardan más en ejecutarse. Pretende reducir el
número de instrucciones por programa e ignorar el número de ciclos por instrucción.
Destaca la posibilidad de ensamblar instrucciones complejas abiertamente en el hardware.
El término RISC significa ''Reduced Instruction Set Computer''. El RISC es un
microprocesador de conjunto de instrucciones reducido y su arquitectura comprende un
conjunto de instrucciones altamente personalizadas. Su función principal es reducir el
tiempo de ejecución de las instrucciones limitando y optimizando el número de comandos.
Cada ciclo de comando utiliza un solo ciclo de reloj y cada ciclo de reloj incluye tres
parámetros: buscar, descodificar y ejecutar.
Por un lado, CISC utiliza un conjunto de instrucciones más complejo y variado, permitiendo
operaciones más sofisticadas en una sola instrucción, mientras que RISC usa un conjunto
más simple, cada una realizando operaciones más elementales. CISC admite una variedad
de modos de direccionamiento, lo que proporciona flexibilidad en la manipulación de datos.
En cambio, RISC limita los modos de direccionamiento para simplificar la ejecución de
instrucciones. Con CISC, algunas instrucciones pueden requerir varios ciclos de reloj para
completarse debido a su complejidad, mientras que con RISC la mayoría de las instrucciones
se ejecutan en un solo ciclo de reloj, facilitando la predicción del rendimiento. CISC está
diseñada para facilitar la programación en lenguajes de alto nivel al coincidir más
directamente con operaciones de alto nivel y RISC se centra en la eficiencia de la
programación en ensamblador, con instrucciones más simples y específicas. CISC pretende
hacer un uso eficiente de la memoria al realizar múltiples operaciones en una sola
instrucción, mientras que RISC busca optimizar el rendimiento al simplificar las operaciones
y favorecer el acceso rápido a la memoria.
UNIDAD 3
FUNCIÓN DE MEMORIA
La memoria permite que la CPU almacene, acceda y manipule datos y programas de manera
eficiente para llevar a cabo sus operaciones.
CLASIFICACIONES DE MEMORIA
Registro: La más rápida y costosa, pero con menor capacidad. Dado que son tan rápidos, se
utilizan para almacenar datos críticos (direcciones de memoria temporales) y resultados
intermedios durante la ejecución de instrucciones.
Caché: Más rápida que la memoria principal y más costosa por byte. Se utiliza para
almacenar copias de datos y programas que se utilizan con frecuencia en la ejecución de
programas, y así reducir los tiempos de acceso a la memoria principal al almacenar datos
frecuentemente utilizados en un lugar más rápido de acceso.
Memoria Principal (RAM): Es de acceso rápido y aleatorio, lo que significa que la CPU
puede leer y escribir datos en cualquier ubicación de manera eficiente. Almacena datos y
programas temporales utilizados durante la ejecución del sistema operativo y las
aplicaciones. Es volátil, lo que significa que los datos se borran cuando se apaga la
computadora. Tiene menor capacidad en comparación con la memoria secundaria.
Memoria Secundaria (por ejemplo, disco duro): Es más lenta en comparación con la
memoria principal y tiene un acceso más lento y secuencial. Almacena datos de forma
permanente, como archivos y programas. Es no volátil, lo que significa que los datos se
conservan incluso cuando se apaga la computadora. Tiene una capacidad mucho mayor en
comparación con la memoria principal.
Memoria RAM (acrónimo de Random Access Memory, o Memoria de Acceso Aleatorio): Es
un tipo de memoria operativa de los computadores y sistemas informáticos, adonde va a
ejecutarse la mayor parte del software..La memoria RAM es una forma de memoria
temporal, que al apagar o reiniciar el sistema vuelve a estar en blanco.
Existen dos tipos de memoria RAM contrapuestos: SRAM y DRAM. La SRAM mantiene los
datos sin necesidad de circuitos de refrescamiento, mientras que la DRAM requiere de un
circuito de refresco que revisa su carga y la repone.
Memoria ROM (acrónimo de Read-Only Memory, o Memoria de Solo Lectura): La memoria
ROM es una forma de memoria no volátil, lo que significa que la información almacenada
en ella no se pierde cuando se apaga el sistema. La memoria ROM se utiliza para almacenar
programas o datos que son necesarios para el funcionamiento del sistema, como el
firmware del sistema, que es el software que se ejecuta en el arranque del sistema y que se
encarga de realizar las pruebas de hardware y cargar el sistema operativo.
Memoria flash ROM: Es un tipo de memoria de solo lectura programable y borrable
electrónicamente (EEPROM) que se puede borrar y reprogramar eléctricamente
MEMORIA ROM
Existen varios tipos de memoria ROM
ROM de Máscara (Mask ROM): Es como una pegatina con datos que se coloca en un chip
durante la fabricación. Estos datos son permanentes y no se pueden cambiar
PROM (Programmable ROM): Es como una pegatina que puedes escribir una vez con
información usando un dispositivo especial. Una vez escrita, no se puede cambiar. Es útil
cuando solo necesitas grabar datos una vez y no esperas cambios.
EPROM (Erasable Programmable ROM): Es como una pegatina que se puede borrar y
reescribir, pero necesitas exponerla a luz ultravioleta y usar un dispositivo especial para
hacerlo.
EEPROM (Electrically Erasable Programmable ROM): Es similar a la EPROM, pero puedes
borrar y reescribir los datos usando electricidad, lo que lo hace más conveniente. Es útil
cuando necesitas cambios frecuentes en los datos. Permite actualizaciones y cambios de
datos más fáciles.
Flash ROM: Es parecida a la EEPROM, pero borra datos en bloques. Se usa en dispositivos
de almacenamiento como USB, tarjetas de memoria y SSDs. Permite actualizaciones, pero
borrar en bloques puede ser menos eficiente para cambios pequeños.
SRAM, SDRAM, DRAM.
SRAM (Memoria de Acceso Aleatorio Estática):
Volatilidad: Memoria volátil (pierde datos cuando se apaga la alimentación).
Estructura: Utiliza biestables para almacenar cada bit de datos.
Velocidad: Tiempos de acceso más rápidos en comparación con la memoria dinámica.
Consumo de Energía: Consume más energía en comparación con otros tipos de RAM.
Uso: Se utiliza típicamente en la memoria caché debido a su alta velocidad y baja
latencia.
SDRAM (Memoria de Acceso Aleatorio Dinámica Sincrónica):
Volatilidad: Memoria volátil.
Estructura: Almacena cada bit de datos en un condensador dentro de un circuito
integrado, requiriendo actualización constante.
Velocidad: La operación sincrónica permite una mayor velocidad y eficiencia en
comparación con la DRAM asíncrona.
Consumo de Energía: Consume menos energía en comparación con SRAM.
Uso: Comúnmente utilizado como memoria principal (RAM) en computadoras.
DRAM (Memoria de Acceso Aleatorio Dinámica):
Volatilidad: Memoria volátil.
Estructura: Almacena cada bit de datos en un condensador dentro de un circuito
integrado. Necesita actualización constante para mantener la integridad de los datos.
Velocidad: Más lento en comparación con SRAM y SDRAM debido a la necesidad de
actualizaciones.
Consumo de Energía: Consume menos energía en comparación con SRAM pero más
que SDRAM.
Uso: Principalmente utilizado como memoria del sistema en computadoras debido a
su mayor densidad y menor costo por bit en comparación con SRAM
ALGORITMO DE REEMPLAZO DE BLOQUES
Son técnicas utilizadas en la gestión de memoria de un sistema operativo para decidir qué
bloques de memoria deben ser reemplazados cuando hay escasez de memoria física.
Existen diferentes algoritmos de reemplazo de bloques, cada uno con sus propias
características y criterios de selección. Algunos de los algoritmos más comunes son el
algoritmo FIFO, el algoritmo LRU y el algoritmo LFU.
…
MEMORIA VIRTUAL
La memoria virtual es una técnica utilizada en sistemas operativos que permite que un
sistema informático, como una computadora, aparente tener más memoria RAM (memoria
física) de la que realmente tiene disponible físicamente. Esto se logra combinando la
memoria RAM con un espacio en el disco duro (almacenamiento secundario) para crear un
espacio de dirección de memoria más grande.
ALGORITMOS DE CAMBIO DE PÁGINAS
Es una técnica utilizada para gestionar la memoria física y virtual de un sistema informático.
Es una forma de organizar la memoria de una computadora para que los programas puedan
funcionar de manera más eficiente.
El algoritmo de reemplazo de páginas es un componente esencial de la paginación, ya que
determina cuál página en memoria física debe ser reemplazada cuando se necesita espacio
para cargar una nueva página. Hay diferentes reglas para decidir, como sacar la página que
no se ha leído por mucho tiempo o la que se ha leído menos (FIFO, LRU, etc.).
La hiperpaginación es un problema que puede ocurrir en sistemas de paginación de
memoria virtual cuando el sistema operativo dedica una cantidad significativa de tiempo a
mover páginas entre la memoria RAM y el almacenamiento secundario debido a una
sobrecarga excesiva de administración de memoria. Esto ralentiza drásticamente el
rendimiento del sistema, ya que gran parte del tiempo de procesador se gasta en transferir
datos entre la RAM y el almacenamiento secundario en lugar de realizar tareas útiles. La
hiperpaginación suele ser el resultado de asignar una cantidad insuficiente de memoria
RAM a los procesos en ejecución.