Instrucciones para la presentación
1. Piense en el nombre de un animal que inicie con la primera letra de su nombre.
2. Este no deberá repetirse.
3. Al presentarse deberá completar la siguiente frase: Mi nombre es: _______ y he venido sobre un/a: _______ a la escuela desde _____
4. Dar respuesta a las preguntas:
4.1 ¿Porqué estudio está carrera?
4.2 ¿Qué me ha gustado de la carrera hasta ahora?
Temas del curso
Unidad 1. Sistemas de números
1.1 Sistemas posicionales.
1.2 Representación polinomial.
1.3 Representación yuxtaposicional. 1.4 Conversión entre bases.
1.5 Base 10 a cualquier base.
1.6 Cualquier base a base 10.
1.7 Conversión de base "r" a base "s".
Temas del curso
Unidad 2. Códigos de representación de datos.
2 2.1 código ASCII.
2.2 código bcd.
2.3 código ebcdic.
2.4 código baudot. 2.5 código gray.
Temas del curso
Unidad 3 Diseño de la unidad aritmética lógica.
3.1 Analizar la teoría básica de una unidad aritmética-lógica utilizando los conceptos de: magnitud y signo, complementos a uno y complementos a dos.
3.2 Diseñar una unidad aritmética-lógica a nivel de compuertas lógicas.
Temas del curso
Unidad 4 Sistemas de memoria.
4.1 Memoria principales.
4.2 Memoria cache.
4.3 Memoria externa.
Temas del curso
Unidad 5 Microprogramación.
5.1 definir los componentes básicos de un controlador microprogramable
5.2 especificar las líneas de interconexión entre el controlador microprogramable y las partes a controlar.
5.3 definir la palabra de control de acuerdo a las especificaciones de un problema dado.
5.4 diseñar controladores microprogramables para ejemplos específicos.
Temas del curso
Unidad 6 Diseño de una computadora básica.
6.1 integrar los conocimientos diseñando una computadora básica.
6.2 diseñar la unidad de control de la computadora básica con el método de microprogramación.
Temas del curso
Unidad 7 Conceptos generales sobre arquitecturas computacionales.
7.1 Evolución de las arquitecturas de computadoras.
7.2 Máquinas cisc.
7.3 Máquinas risc.
7.4 Comparación cisc vs. risc.
7.5 Arquitecturas paralelas.
Políticas de clase
Lineamientos de clase
El incumplimiento de las tareas en tiempo y forma llevarán a una no aprobación del curso.
Lineamientos de clase
Realizar el seguimiento personal desde el Aula Virtual.
Estar pendiente de los resultados de las evaluacion/es parcial/es y final/es.
Notificar al tutor por escrito, con copia a la coordinación académica, si, por alguna razón excepcional, se encontrara en una circunstancia especial que le impidiera continuar con el curso y recibir así indicaciones de cómo proceder a partir de ese momento.
Descripción de las actividades
Unidad 1 Sistemas de números
Descripción de las actividades
Unidad 2 Códigos de representación de datos.
Descripción de las actividades
Unidad 3 Diseño de la unidad aritmética lógica.
Descripción de las actividades
Unidad 4 Sistemas de memoria.
Descripción de las actividades
Unidad 5 Microprogramación.
Descripción de las actividades
Unidad 6. Diseño de una computadora básica.
Descripción de las actividades
Unidad 7 Conceptos generales sobre arquitecturas computacionales.
Actividades de encuadre
Actividades de encuadre
Instrucciones:
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Instrucciones:
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Instrucciones:
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Una vez contestadas las preguntas anteriores escribir en el foro respectivo la respuesta a cada pregunta.
Tiempo de la actividad: 6 minutos.
Recomendaciones para las actividades
Trabajos:
Párrafos:
Ortografía - Gramática
Recomendaciones para las actividades
Referencias bibliográfica
Lista referencia bibliográfica
Recomendaciones para las actividades
Introducción y conclusión
Formato del trabajo
Recomendaciones para las actividades
Diagramas:
Códigos fuentes:
Tablas:
Ejemplo recomendado para el uso de tablas
IA I | POO | P. batch |
---|---|---|
10 | 10 | 8 |
19 | 6 | 9 |
Tabla 1. Listado de materias con calificaciones obtenidas en cada actividad. Fuente: Creación propia
En la tabla 1, se puede apreciar tres materias donde se encuentra las calificaciones obtenidas en dos actividades realizadas en cada una de ellas. Para calcular el promedio solo se debe de sumar cada actividad en un nuevo renglón y dividirlo entre dos que son el número de actividades.
Ejemplo recomendado para el uso de tablas
IA I | POO | P. batch |
---|---|---|
10 | 10 | 8 |
19 | 6 | 9 |
Tabla 1. Listado de materias con calificaciones obtenidas en cada actividad. Fuente: Tomada del libro Introducción a la programación de Luis Joyanes Aguilar. P.19.
En la tabla 1, se puede apreciar tres materias donde se encuentra las calificaciones obtenidas en dos actividades realizadas en cada una de ellas. Para calcular el promedio solo se debe de sumar cada actividad en un nuevo renglón y dividirlo entre dos que son el número de actividades. (Joyanes, 2000).
Recomendaciones para las actividades
Imagenes / diagramas / gráficas:
Recomendaciones para el uso de imágenes / gráficas / diagramas
Imagen 1. Fachada de una casa. Fuente: Creación propia
En la imagen 1 se puede observar la fachada de una casa convencional donde. Lo que permite poder llevar acabo construcciones básicas pero eficientes, con canaletas para la recolección de agua pluvial y su posterior tratamiento.
Recomendaciones para el uso de imágenes / gráficas / diagramas
Imagen 1. Fachada de una casa. Fuente: Tomado del libro Diseños y principios básicos de arquitectura de Ruben Vazquez
En la imagen 1 se puede observar la fachada de una casa convencional donde. Lo que permite poder llevar acabo construcciones básicas pero eficientes, con canaletas para la recolección de agua pluvial y su posterior tratamiento. (Vazquez, 2000)
¿Dudas / Preguntas / comentarios?
Temas
Sistema de números
Un sistema de números es un conjunto de símbolos y reglas que permiten representar y manipular cantidades numéricas. Proporciona una estructura para organizar y expresar las magnitudes y relaciones numéricas
Un sistema de números es un conjunto de elementos y operaciones definidos sobre esos elementos, que nos permite representar y manipular cantidades y realizar cálculos matemáticos
Definiendo un sistema de números
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Unidad | Decena | Centena |
---|---|---|
3 | ||
3 | 6 | |
3 | 6 | 9 |
Del siguiente listado de números colocadlos en sus respectivas unidades, decenas y demás
Números:
Nota: El sistema posicional permite representar números de cualquier magnitud utilizando un conjunto limitado de dígitos y reglas simples.
Es una forma de expresar un número utilizando una combinación de potencias de una base dada. En esta representación, cada dígito en el número se multiplica por la potencia correspondiente de la base y se suman todos los términos para obtener el valor total del número.
369 = 3*10^2 + 6*10^1 + 9*10^0
centena (2) | decena (1) | unidad (0) |
---|---|---|
3 | 6 | 9 |
Base: | 10 |
Realiza la representación polinomial de los siguientes números:
Es un método de representación de números en el que los dígitos se colocan uno al lado del otro en secuencia para formar el número completo.
El número 369.96
Centenas | Decenas | Unidad | Decimas | Centécimas |
---|---|---|---|---|
3 | 6 | 9 | 9 | 6 |
Realiza la representación yuxtaposicional de los siguientes números:
La representación yuxtaposicional permite representar números de cualquier magnitud y precisión utilizando un conjunto limitado de dígitos y reglas de posición relativa.
¿Qué es la conversión entre bases?
Se refiere al proceso de cambiar la representación de un número de un sistema numérico con una base específica a otro sistema numérico con una base diferente.
Consiste en transformar un número de una base a otra base, manteniendo el valor numérico original.
Es decir, que...
Pasos para convertir de base 10 a binario.
Numero | Base | Operación | Resultado | Residuo |
---|---|---|---|---|
33 | 2 | 33 ÷ 2 | 16 | 1 |
16 ÷ 2 | 8 | 0 | ||
8 ÷ 2 | 4 | 0 | ||
4 ÷ 2 | 2 | 0 | ||
2 ÷ 2 | 1 | 0 | ||
1 ÷ 2 | 0 | 1 |
Convertir el número 33 de base 10 a su representación en base 2
33 de base 10 su base binaria es: 100001
Numero | Base | Operación | Resultado | Residuo |
---|---|---|---|---|
25 | 2 | 25 ÷ 2 | 12 | 1 |
12 ÷ 2 | 6 | 0 | ||
6 ÷ 2 | 3 | 0 | ||
3 ÷ 2 | 1 | 1 | ||
1 ÷ 2 | 0 | 1 |
Convertir el número 25 de base 10 a su representación en base 2
25 de base 10 su base binaria es: 11001
Realiza la conversión de los siguientes números de base 10 a base 2
Numero | Base | Operación | Resultado | Residuo |
---|---|---|---|---|
52 | 8 | 52 ÷ 8 | 6 | 4 |
6 ÷ 8 | 0 | 6 |
Convertir el número 52 de base 10 a su representación en base 8
25 de base 10 su base octal es: 64
Numero | Base | Operación | Resultado | Residuo |
---|---|---|---|---|
572 | 8 | 572 ÷ 8 | 71 | 4 |
71 ÷ 8 | 8 | 7 | ||
8 ÷ 8 | 1 | 0 | ||
1 ÷ 8 | 0 | 1 |
Convertir el número 572 de base 10 a su representación en base 8
572 de base 10 su base octal es: 1074
Realiza la conversión de los siguientes números de base 10 a base 8
Numero | Base | Operación | Resultado | Residuo |
---|---|---|---|---|
333 | 16 | 333 ÷ 16 | 20 | 13 |
20 ÷ 16 | 1 | 4 | ||
1 ÷ 16 | 0 | 1 |
Convertir el número 333 de base 10 a su representación en base 16
333 de base 10 su base octal es: 14D
Realiza la conversión de los siguientes números de base 10 a base 16
Numero | Base | Operación | Resultado | Residuo |
---|---|---|---|---|
369 | 5 | 369 ÷ 5 | 73 | 4 |
73 ÷ 5 | 14 | 3 | ||
14 ÷ 5 | 2 | 4 | ||
2 ÷ 5 | 0 | 2 |
El número 369 de base 10 convertido a base 5 es: 2434
Convertir el número 369 de base 10 a base cinco
Numero | Base | Operación | Resultado | Residuo |
---|---|---|---|---|
369 | 6 | 369 ÷ 6 | 61 | 3 |
61 ÷ 6 | 10 | 1 | ||
10 ÷ 6 | 1 | 4 | ||
1 ÷ 6 | 0 | 1 |
El número 369 de base 10 convertido a base 6 es: 1413
Convertir el número 369 de base 10 a base 6
Realiza la conversión de los siguientes números de base 10 a base 3, 4, 5, 6, 7, 8, 9, 15, 16
De derecha a izquierda: multiplicamos la primera cifra por 1 (1 es 80) ; la segunda, por 8 (8 es 81); la tercera, por 82; la cuarta, por 83. Y así hasta que hayamos multiplicado todas las cifras.
Sumamos cada uno de los valores obtenidos.
Suponga que se tiene el número 156 de base ocho a base 10
Suponga que se tiene el número 156 de base ocho a base 10
Num | * | Potencia | = | Operacion | Resultado |
---|---|---|---|---|---|
6 | 8 | 0 | 6*1 | 6 | |
5 | 8 | 1 | 5*8 | 40 | |
1 | 8 | 2 | 1*64 | 64 | |
Suma: | 110 |
El numero 156 de base ocho convertido a base 10 es: 110
Suponga que se tiene el número 3699 de base 9 a base 10
Num | * | Potencia | = | Operacion | Resultado |
---|---|---|---|---|---|
9 | 9 | 0 | 9 * 1 | 9 | |
9 | 9 | 1 | 9 * 9 | 81 | |
6 | 9 | 2 | 6 * 81 | 486 | |
3 | 9 | 3 | 3 * 729 | 2187 | |
2763 |
El numero 3699 de base nueve convertido a base 10 es: 2763
Convierte los siguientes números de 6 a base 10
Convierte los siguientes números de 9 a base 10
Convierte los siguientes números de 3 a base 10
Suponga que se tiene el número 399 de base 9 a base Hexadecimal
Num | * | Potencia | = | Operacion | Resultado |
---|---|---|---|---|---|
9 | 9 | 0 | 9 * 1 | 9 | |
9 | 9 | 1 | 9 * 9 | 81 | |
3 | 9 | 2 | 3 * 81 | 243 | |
333 |
El numero 399 de base nueve convertido a base 10 es: 333
Suponga que se tiene el número 399 de base 9 a base Hexadecimal
El numero 333 de base nueve convertido a base 16 es: 14D
Numero | Base | Operación | Resultado | Residuo |
---|---|---|---|---|
333 | 16 | 333 ÷ 16 | 20 | 13 |
20 ÷ 16 | 1 | 4 | ||
1 ÷ 16 | 0 | 1 |
Convierte los siguientes números de 6 a base 9
Convierte los siguientes números de 9 a base 16
Convierte los siguientes números de 3 a base 5
Código ASCII.
Código bcd.
Código ebcdic.
Código baudot.
Código gray.
ASCII
ASCII (American Standard Code for Information Interchange)
Sistema de codificación de caracteres ampliamente utilizado en computadoras y dispositivos electrónicos
Desarrollado en la década de 1960 como un estándar para representar caracteres en texto y comunicaciones.
¿qué es?
¿qué significa?
¿para que se creo?
Representación de caracteres:
Asigna un número único a cada caracter imprimible, como letras, números, símbolos de puntuación y caracteres especiales. Esto permite que los caracteres sean representados y almacenados en forma de bits, que son la base de la representación digital en los sistemas computacionales.
Procesamiento de texto
Procesa y manipula el texto. Los programas pueden realizar operaciones como búsqueda, ordenamiento, comparación y transformación de texto basándose en los valores numéricos del código ASCII de los caracteres.
Interoperabilidad
Es un estándar ampliamente reconocido y utilizado a nivel mundial. Por lo que los sistemas y dispositivos que implementan el código ASCII pueden intercambiar información de manera consistente y sin problemas de compatibilidad.
En un blog de notas escribe:
# Conversión de caracter a código ASCII
caracter = 'A'
codigo_ascii = ord(caracter)
print(codigo_ascii) # Output: 65
# Conversión de código ASCII a caracter
codigo_ascii = 66
caracter = chr(codigo_ascii)
print(caracter) # Output: B
Guarde el fichero con el nombre ascii.py
Modifique el código para que reciba un carecter por el usuario y el script muestre el código ASCII correspondiente
Al terminar suba su código modificado al repositorio de github
Es un sistema de representación numérica en el que cada dígito decimal se representa con un grupo de cuatro bits (un número binario de 4 bits). En el código BCD, los valores del 0 al 9 se representan directamente con sus correspondientes patrones de 4 bits.
En el código BCD, cada uno de los cuatro bits de un grupo representa un dígito decimal en forma binaria. Por ejemplo, el número decimal 7 se representa como 0111 en BCD, donde cada dígito del código BCD representa el valor binario de cada dígito decimal. Este sistema permite una representación directa y precisa de los números decimales utilizando combinaciones de bits.
La principal ventaja del código BCD es que es fácil de entender y manipular para los humanos, ya que cada dígito decimal se representa de forma separada. Esto es especialmente útil en aplicaciones donde se requiere una alta precisión decimal, como en cálculos financieros y sistemas de visualización numérica.
una limitación del código BCD es que no utiliza de manera eficiente el espacio de almacenamiento o la capacidad de representación de los sistemas binarios. Dado que solo se utilizan los valores del 0 al 9 en cada grupo de 4 bits, hay un desperdicio de posibles combinaciones binarias. Por ejemplo, los números 10 a 15 no tienen una representación directa en BCD y requieren un sistema de codificación adicional para representarlos.
Digito Decimal | Representación en BCD (4 bits) |
---|---|
0 | 000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
Digito Decimal | Representación en BCD (4 bits) |
---|---|
3 | 0011 |
6 | 0110 |
9 | 1001 |
¿Cuál es la representación del número 369 en binario
La representación binaria del número 369 a binario es: 0011 0110 1001
Digito Decimal | Representación en BCD (4 bits) |
---|---|
9 | |
7 | |
6 | |
3 |
Completa la siguiente tabla, de representación del número 9763 en binario
La representación binaria del número 9763 a binario es:
El código EBCDIC (Extended Binary Coded Decimal Interchange Code)
Sistema de codificación de caracteres utilizado en sistemas informáticos y mainframes desarrollado por IBM en la década de 1960.
Diseñado principalmente para sistemas mainframe de IBM y algunos otros sistemas más antiguos
Ha sido reemplazado en gran medida por el código ASCII y otros estándares de codificación más modernos, debido a la mayor prevalencia y compatibilidad de ASCII en las computadoras y sistemas actuales
Utiliza 8 bits para representar cada caracter
Permite codificar hasta 256 símbolos diferentes
Tiene una estructura de asignación más compleja y menos intuitiva
Caracteres especiales y letras mayúsculas tienen diferentes valores que en el código ASCII
En EBCDIC, el código para la letra 'A' es 193, mientras que en ASCII es 65. Asimismo, otros caracteres tienen códigos diferentes en ambos sistemas.
import codecs
def ascii_to_ebcdic(text):
try:
# Codificación ASCII a EBCDIC (usando el mapeo CP500 de EBCDIC)
ebcdic_text = codecs.encode(text, 'cp500')
return ebcdic_text
except Exception as e:
print("Error:", e)
return None
# Cadena de texto en formato ASCII
texto_ascii = "Hola, esto es un ejemplo de EBCDIC!"
# Convertir a EBCDIC
texto_ebcdic = ascii_to_ebcdic(texto_ascii)
if texto_ebcdic:
print("Texto en formato EBCDIC:", texto_ebcdic)
else:
print("La conversión a EBCDIC no pudo realizarse.")
Del código anterior modifiquelo para que reciba cualquier tipo de cadena de caracteres y muestre la codificación EBCDIC
conocido como código Murray o código ITA2 (International Telegraph Alphabet No. 2),
utilizado para la transmisión telegráfica.
inventado por Émile Baudot
uno de los primeros códigos ampliamente utilizados en las comunicaciones telegráficas.
diseñó originalmente para transmitir caracteres a través de una línea telegráfica mediante señales eléctricas
baudot_table = {
'A': '00011', 'B': '11001', 'C': '01110', 'D': '01001', 'E': '00001',
'F': '10110', 'G': '11010', 'H': '00100', 'I': '00110', 'J': '10011',
'K': '01010', 'L': '01100', 'M': '10010', 'N': '10000', 'O': '11000',
'P': '10100', 'Q': '11100', 'R': '01101', 'S': '01011', 'T': '00101',
'U': '11110', 'V': '10111', 'W': '01111', 'X': '11011', 'Y': '11101',
'Z': '10101', ' ': '00000'}
def text_to_baudot(text):
text = text.upper()
encoded_text = ''
for char in text:
if char in baudot_table:
encoded_text += baudot_table[char]
return encoded_text
def baudot_to_text(encoded_text):
decoded_text = ''
for i in range(0, len(encoded_text), 5):
baudot_char = encoded_text[i:i+5]
for char, code in baudot_table.items():
if baudot_char == code:
decoded_text += char
break
return decoded_text
mensaje_original = "HELLO"
mensaje_codificado = text_to_baudot(mensaje_original)
mensaje_decodificado = baudot_to_text(mensaje_codificado)
print("Mensaje original: ", mensaje_original)
print("Mensaje codificado en Baudot: ", mensaje_codificado)
print("Mensaje decodificado: ", mensaje_decodificado)
Del código anterior:
¿Qué haría falta para que usara minúsculas y números?
¿Qué modificación se tendría que realizar para que acepte cualquier frase introducida por el usuario?
Código reflejado
Sistema de codificación de números binarios
Inventado por Frank Gray en 1947
Ampliamente utilizado en electrónica digital y sistemas de comunicaciones
Cada número binario representa un valor decimal
Diseñado de tal manera que el cambio de un número a otro solo involucre la modificación de un solo bit
Minimiza las posibilidades de errores, ya que solo se produce un cambio de bit entre dos valores adyacentes.
Reducción de errores
Minimiza las posibilidades de errores en la interpretación de datos, especialmente en sistemas propensos a ruido o interferencias. Al cambiar solo un bit, se evita que un solo error en la transmisión cause cambios significativos en el valor representado, lo que mejora la fiabilidad y la precisión de los datos.
Estabilidad de señales
Proporciona una representación estable de los datos. En aplicaciones de control o en circuitos digitales que requieren transiciones suaves entre estados, evita glitches (pulso no deseado) y transiciones no deseadas que pueden ocurrir con otros sistemas de codificación. Útil en máquinas de estado finito y sistemas donde la precisión temporal y la estabilidad de las señales son críticas.
Eficiencia en la transmisión de datos
En sistemas de comunicaciones, es útil para reducir el número de errores de transmisión y mejorar la eficiencia del canal de comunicación. Al minimizar la probabilidad de errores de bit, se puede lograr una transmisión más robusta y confiable de los datos.
Aplicaciones específicas
Encuentra aplicaciones en áreas específicas como la codificación de sensores y encoders rotativos, donde se necesita una representación precisa de posiciones y mediciones. También es útil en sistemas de control y en ciertos algoritmos de compresión de datos.
diseño de circuitos digitales y sistemas de control
puede simplificar el diseño y reducir la complejidad. Al evitar situaciones de ambigüedad y glitches, se pueden reducir los circuitos adicionales requeridos para la corrección de errores y lógica de control, lo que lleva a diseños más eficientes y confiables.
# Función para codificar un número decimal en código Gray
def codificar_gray(numero_decimal):
return numero_decimal ^ (numero_decimal >> 1)
# Función para decodificar un número en código Gray al decimal original
def decodificar_gray(gray_numero):
numero_decimal = gray_numero
while gray_numero > 0:
gray_numero >>= 1
numero_decimal ^= gray_numero
return numero_decimal
# Ejemplo de uso
numero_decimal_original = 42
# Codificación
codigo_gray = codificar_gray(numero_decimal_original)
print("Número decimal original:", numero_decimal_original)
print("Código Gray:", codigo_gray)
# Decodificación
numero_decimal_decodificado = decodificar_gray(codigo_gray)
print("Número decimal decodificado:", numero_decimal_decodificado)
# Función para codificar un número decimal en código Gray
def codificar_gray(numero_decimal):
return numero_decimal ^ (numero_decimal >> 1)
# Función para decodificar un número en código Gray al decimal original
def decodificar_gray(gray_numero):
numero_decimal = gray_numero
while gray_numero > 0:
gray_numero >>= 1
numero_decimal ^= gray_numero
return numero_decimal
# Ejemplo de uso
numero_decimal_original = 42
# Codificación
codigo_gray = codificar_gray(numero_decimal_original)
print("Número decimal original:", numero_decimal_original)
print("Código Gray:", codigo_gray)
# Decodificación
numero_decimal_decodificado = decodificar_gray(codigo_gray)
print("Número decimal decodificado:", numero_decimal_decodificado)
Usando el código anterior, muestre la representación en codificación gray de los siguientes números:
99
66
33
Diseño de la unidad aritmética lógica.
Analizar la teoría básica de una unidad aritmética-lógica utilizando los conceptos de: magnitud y signo, complementos a uno y complementos a dos.
Diseñar una unidad aritmética-lógica a nivel de compuertas lógicas.
Unidad Aritmética Lógica (ALU, por sus siglas en inglés: Arithmetic Logic Unit)
Es la encargada de realizar operaciones aritméticas (sumas, restas, multiplicaciones, divisiones, etc.) y operaciones lógicas (AND, OR, NOT, XOR, etc.) en datos binarios.
Los diseños pueden variar según la arquitectura y el conjunto de instrucciones del procesador
def alu(a, b, op):
if op == "000": # Suma
return bin(int(a, 2) + int(b, 2))[2:].zfill(4)
elif op == "001": # Resta
return bin(int(a, 2) - int(b, 2))[2:].zfill(4)
elif op == "010": # AND lógico
return bin(int(a, 2) & int(b, 2))[2:].zfill(4)
elif op == "011": # OR lógico
return bin(int(a, 2) | int(b, 2))[2:].zfill(4)
else:
raise ValueError("Operación no válida.")
# Ejemplo de uso
resultado_suma = alu("0110", "0011", "000") # A = 6, B = 3, OP = 000 (Suma)
resultado_resta = alu("0110", "0011", "001") # A = 6, B = 3, OP = 001 (Resta)
resultado_and = alu("0110", "0011", "010") # A = 6, B = 3, OP = 010 (AND)
resultado_or = alu("0110", "0011", "011") # A = 6, B = 3, OP = 011 (OR)
print("Resultado de la suma:", resultado_suma)
print("Resultado de la resta:", resultado_resta)
print("Resultado del AND:", resultado_and)
print("Resultado del OR:", resultado_or)
Del código anterior muestre los resultados de suma, resta, or y and de los siguientes números decimales:
Valores para a:
333
666
999
valores b:
132
936
777
Analizar la teoría básica de una unidad aritmética-lógica utilizando los conceptos de: magnitud y signo, complementos a uno y complementos a dos.
Teorías para el diseño de ALU
Diseño basado en instrucciones y conjuntos de operaciones
La ALU debe estar diseñada para admitir el conjunto de instrucciones del procesador en el que se utilizará. Esto implica identificar las operaciones aritméticas y lógicas que deben ser soportadas y diseñar la ALU para manejar cada una de estas operaciones de manera eficiente.
Diseño de circuitos combinacionales
La ALU está formada principalmente por circuitos combinacionales, que son circuitos digitales sin memoria que realizan operaciones basadas únicamente en las entradas presentes en un momento dado. Es esencial diseñar estos circuitos combinacionales de manera óptima para lograr un rendimiento y velocidad adecuados.
Teorías para el diseño de ALU
Optimización de operaciones aritméticas
Para realizar sumas, restas, multiplicaciones y otras operaciones aritméticas, se deben utilizar circuitos especializados, como sumadores y multiplicadores, que estén optimizados para reducir la latencia y el consumo de recursos.
Manejo de números con signo
Para soportar números con signo, la ALU debe estar diseñada para realizar operaciones de complemento a dos, ya que es la representación más común para números con signo en sistemas digitales.
Teorías para el diseño de ALU
Reducción de latencia y consumo de energía
La latencia y el consumo de energía son consideraciones importantes en el diseño de ALUs para lograr un rendimiento óptimo y un uso eficiente de los recursos.
Soporte para operaciones de desplazamiento
Pueden incluir circuitos para operaciones de desplazamiento, como desplazamiento a la izquierda o a la derecha, para implementar multiplicaciones y divisiones rápidas y otras operaciones.
Teorías para el diseño de ALU
Implementación de detección de desbordamiento
Debe estar diseñada para detectar desbordamientos en operaciones aritméticas y manejarlos adecuadamente.
Unidades de control y decodificación de instrucciones
Debe ser capaz de interpretar las instrucciones del procesador y ejecutar la operación correcta según la instrucción recibida.
Verificación y pruebas
Es esencial llevar a cabo una verificación y pruebas exhaustivas para garantizar que la ALU funcione correctamente en todas las situaciones y cumpla con los requisitos de diseño.
Teorías para el diseño de ALU
El diseño de una ALU es un proceso complejo que involucra una combinación de ingeniería de hardware, lógica digital y conocimientos de arquitectura de computadoras. Se busca crear una ALU que sea eficiente, rápida, confiable y que cumpla con las necesidades específicas del sistema en el que se implementará.
se refiere al valor absoluto de un número, es decir, su valor numérico sin considerar el signo. En sistemas digitales, los números se representan utilizando bits, y la magnitud de un número se expresa mediante su valor binario. Por ejemplo, en una ALU de 8 bits, la magnitud del número binario 01101010
es 106, ya que representa el número decimal positivo 106 en magnitud
indica si un número es positivo o negativo. En la representación binaria de números con signo, el bit más significativo (MSB, por sus siglas en inglés) se utiliza como el bit de signo. Si el bit de signo es 0, el número se considera positivo. Si el bit de signo es 1, el número se considera negativo. El resto de los bits en la representación binaria representa la magnitud del número.
En una ALU de 8 bits, el número binario 10011010
representa el número decimal negativo -106, ya que el bit más significativo es 1, lo que indica un número negativo, y los otros bits representan la magnitud 106.
Recordar que en el bit significativo es el que este más a la izquierda
Para operaciones de suma y resta, se deben considerar los desbordamientos y la detección de signo. Para operaciones lógicas, se deben aplicar las operaciones a cada bit correspondiente y tener en cuenta los bits de signo.
es una técnica de representación de números negativos en binario que se utiliza comúnmente en sistemas digitales y computadoras. Se basa en la inversión de todos los bits de un número binario para obtener su representación en complemento a uno
es una técnica más común y ampliamente utilizada para representar números negativos en binario en sistemas digitales y computadoras. A diferencia del complemento a uno, el complemento a dos resuelve el problema de tener dos representaciones diferentes para el número 0 (positivo y negativo) y permite realizar operaciones aritméticas más consistentes, como sumas y restas.
Suponga que se tiene el número binario 01011001
, su complemento a uno sería:
Número original: 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1
Complemento a uno: 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0
El bit más significativo (el bit más a la izquierda) se utiliza como el bit de signo. Si el bit más significativo es 0, el número es positivo; si es 1, el número es negativo.
El complemento a uno de un número positivo resulta en un número negativo, mientras que el complemento a uno de un número negativo resulta en un número positivo.
Suponga que se tiene el número binario 01100110, su complemento a uno sería:
Número original: 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0
Complemento a uno: 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1
El complemento a uno de 01100110
representa el número decimal negativo -102.
Para resolver estas limitaciones, se utiliza una técnica más común llamada complemento a dos, que se basa en el complemento a uno con una modificación adicional.
def complemento_a_uno(binario):
complemento = ''
for bit in binario:
complemento += '0' if bit == '1' else '1'
return complemento
def main():
numero_binario = input("Ingresa el número binario: ")
complemento = complemento_a_uno(numero_binario)
print(f"El complemento a uno de {numero_binario} es: {complemento}")
if __name__ == "__main__":
main()
Si se tiene el número binario 01011001
, su complemento a dos sería:
Número original: 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1
Complemento a uno: 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0
Complemento a dos: 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1
El bit más significativo (el bit más a la izquierda) también se utiliza como el bit de signo
Si el bit más significativo es 0, el número es positivo; si es 1, el número es negativo.
El complemento a dos de un número positivo es el mismo número original, y el complemento a dos de un número negativo es su valor absoluto (magnitud) más 1.
Si se tiene el número binario 01100110, su complemento a dos sería:
Número original: 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0
Complemento a uno: 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1
Complemento a dos: 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0
Es ampliamente utilizado en sistemas digitales para representar números con signo y realizar operaciones aritméticas y lógicas de manera eficiente y consistente. Es una técnica poderosa y necesaria para el manejo de números negativos en aritmética binaria.
def complemento_a_dos(binario):
# Invertir todos los bits del número original
complemento_uno = ''.join('1' if bit == '0' else '0' for bit in binario)
# Sumar 1 al complemento a uno para obtener el complemento a dos
carry = 1
complemento_dos = ''
for bit in reversed(complemento_uno):
if bit == '1' and carry == 1:
complemento_dos = '0' + complemento_dos
elif bit == '0' and carry == 1:
complemento_dos = '1' + complemento_dos
carry = 0
else:
complemento_dos = bit + complemento_dos
return complemento_dos
def main():
numero_binario = input("Ingresa el número binario: ")
complemento = complemento_a_dos(numero_binario)
print(f"El complemento a dos de {numero_binario} es: {complemento}")
if __name__ == "__main__":
main()
Diseñar una unidad aritmética-lógica a nivel de compuertas lógicas.
Sumadores y multiplicadores: Conocer el funcionamiento de los sumadores y multiplicadores, que son bloques fundamentales para realizar operaciones aritméticas en la ALU.
Decodificadores y multiplexores: Familiarizarse con los decodificadores y multiplexores, que se utilizan para seleccionar diferentes operaciones y rutas de datos en la ALU.
Máquinas de estado y secuencialidad: Entender los conceptos de máquinas de estado y secuencialidad, ya que algunos diseños de ALU pueden requerir lógica secuencial.
Diseño de circuitos con compuertas lógicas: Saber cómo diseñar circuitos digitales utilizando compuertas lógicas y cómo combinarlas para implementar operaciones y funciones más complejas.
Diseño de circuitos combinacionales y secuenciales: Tener experiencia en el diseño de circuitos combinacionales y secuenciales utilizando diagramas lógicos, tablas de verdad, mapas de Karnaugh, entre otros.
Conocimiento de herramientas de diseño: Ser capaz de utilizar software de diseño electrónico y simulación de circuitos, como VHDL, Verilog, Logisim, etc., para modelar y verificar el funcionamiento de la ALU.
Comprensión de la arquitectura de una ALU: Entender cómo se integra la ALU en el conjunto del procesador o sistema digital, incluyendo el bus de datos, registros, unidades de control, entre otros.
Identificar el tamaño de la ALU: Decida el tamaño de la ALU, es decir, el número de bits que procesará. Por ejemplo, una ALU de 8 bits puede realizar operaciones con números de 8 bits.
1.
Definir las operaciones a implementar: Determine las operaciones aritméticas y lógicas que debe realizar la ALU. Esto incluye operaciones como suma, resta, AND, OR, XOR, entre otras. También considere si la ALU manejará números con signo y, en ese caso, elija la representación adecuada (complemento a dos, por ejemplo).
2.
Manejo de números con signo: Si la ALU debe manejar números con signo, implemente la lógica para realizar operaciones en complemento a dos, que es una forma común de representar números con signo en sistemas digitales.
Implementar operaciones lógicas: Utilice compuertas lógicas (AND, OR, XOR) para implementar las operaciones lógicas necesarias.
3.
Diseñar los sumadores y multiplicadores: Para las operaciones aritméticas, diseñe sumadores y multiplicadores de acuerdo con el tamaño de la ALU. Pueden utilizarse sumadores completos, sumadores de acarreo anticipado o sumadores rápidos dependiendo del rendimiento deseado.
4.
5.
Integrar en la arquitectura del sistema: Una vez que la ALU ha sido diseñada y probada, integre adecuadamente en la arquitectura del sistema digital o procesador en el que se utilizará.
Conectar las compuertas lógicas: Conecte todas las compuertas lógicas de acuerdo con el diseño del circuito lógico de la ALU.
6.
Decodificar las operaciones: Diseñe un decodificador o un circuito lógico para identificar la operación que se debe realizar en función de las señales de control y los códigos de operación.
7.
Realizar simulaciones y pruebas: Utilice herramientas de simulación o software de diseño electrónico para verificar el funcionamiento de la ALU y realizar pruebas exhaustivas para asegurarse de que funcione correctamente en todos los casos.
8.
9.
Realizar simulaciones y pruebas: Utilice herramientas de simulación o software de diseño electrónico para verificar el funcionamiento de la ALU y realizar pruebas exhaustivas para asegurarse de que funcione correctamente en todos los casos.
10.
Conectar las compuertas lógicas: Conecte todas las compuertas lógicas de acuerdo con el diseño del circuito lógico de la ALU.
11.
Integrar en la arquitectura del sistema: Una vez que la ALU ha sido diseñada y probada, integre adecuadamente en la arquitectura del sistema digital o procesador en el que se utilizará.
12.
ALU de 4 bits a nivel de compuertas lógicas que puede realizar las operaciones de suma y resta de números binarios. Se utilizara la representación en complemento a dos para manejar números con signo.
1.
Definición de requerimientos y operaciones:
2.
Especificación de las operaciones:
ALU de 4 bits a nivel de compuertas lógicas que puede realizar las operaciones de suma y resta de números binarios. Se utilizara la representación en complemento a dos para manejar números con signo.
1.
Definición de requerimientos y operaciones:
2.
Implementación del complemento a dos:
ALU de 4 bits a nivel de compuertas lógicas que puede realizar las operaciones de suma y resta de números binarios. Se utilizara la representación en complemento a dos para manejar números con signo.
+-------------------+
A -->| |
B -->| ALU (4 bits) |--> Resultado
S -->| |
+-------------------+
Diagrama de bloques del diseño de la ALU:
Memoria principales.
Memoria cache.
Memoria externa.
Es una parte esencial de una computadora o sistema informático
Se utiliza para almacenar y recuperar datos e instrucciones de manera temporal o permanente.
Permite que una computadora procese y maneje la información de manera eficiente durante su funcionamiento.
Sistema de memoria
Tipos de memoria
RAM (Memoria de Acceso Aleatorio)
ROM (Memoria de Solo Lectura)
Cache
Virtual
Flash
[A]
[B]
[C]
[D]
[E]
Tipos de memoria
Es la memoria principal de la computadora y se utiliza para almacenar temporalmente datos e instrucciones que están siendo utilizados activamente por el procesador.
Es una memoria no volátil que contiene datos e instrucciones pregrabados que no cambian con el tiempo.
memoria de alta velocidad que se utiliza para almacenar copias temporales de datos e instrucciones utilizados frecuentemente por el procesador.
permite que la computadora ejecute programas que requieren más memoria de la que está físicamente disponible.
La memoria flash es más lenta que la memoria RAM, pero conserva la información incluso cuando se apaga la energía.
[1]
[2]
[3]
[4]
[5]
[A]
[B]
[C]
[D]
[E]
[1]
[2]
[3]
[4]
[5]
Definir los componentes básicos de un controlador microprogramable
Especificar las líneas de interconexión entre el controlador microprogramable y las partes a controlar.
Definir la palabra de control de acuerdo a las especificaciones de un problema dado.
Diseñar controladores microprogramables para ejemplos específicos.
Técnica utilizada en el diseño de computadoras y procesadores para controlar y coordinar las operaciones internas de la unidad central de procesamiento (CPU).
Implementar el conjunto de instrucciones de una arquitectura de procesador utilizando una secuencia de microinstrucciones más simples y a nivel de hardware.
Ejecutan por la unidad de control, traduce las instrucciones de nivel superior a las instrucciones para el hardware.
Solo modificando la secuencia de m.i. almacenadas "memoria de control" o "microprograma".
CPU sea más flexible y fácilmente programable
instrucciones del procesador puede ser cambiado o ampliado sin modificar el hardware en sí
¿qué lenguaje se hace microprogramación?
Microcode (Microcódigo)
VHDL (VHSIC Hardware Description Language)
Verilog
Assembler o Lenguaje Ensamblador Personalizado
Microcode (Microcódigo)
Microprogramación
VHDL (VHSIC Hardware Description Language):
Microprogramación
Verilog
Microprogramación
Assembler o Lenguaje Ensamblador Personalizado
Microprogramación
Algunas arquitecturas de procesadores utilizan un lenguaje de ensamblador personalizado para la microprogramación.
Estos lenguajes pueden ser específicos para una arquitectura en particular y permiten describir las microinstrucciones y su secuencia de ejecución de manera más directa y específica para el hardware en cuestión.
Microprogramación
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Adder is
Port ( A : in STD_LOGIC_VECTOR(3 downto 0);
B : in STD_LOGIC_VECTOR(3 downto 0);
Sum : out STD_LOGIC_VECTOR(3 downto 0));
end Adder;
architecture Behavioral of Adder is
begin
Sum <= A + B;
end Behavioral;
Ejemplo de una suma en VHDL
Microprogramación
module Adder(input [3:0] A, input [3:0] B, output [3:0] Sum);
assign Sum = A + B;
endmodule
Ejemplo de una suma en Verilog
Microprogramación
.data
.text
# Inicialización de registros
li $t0, 5 # Cargar el valor 5 en el registro $t0
li $t1, 3 # Cargar el valor 3 en el registro $t1
# Suma de $t0 y $t1
add $t2, $t0, $t1
# Finalizar el programa
li $v0, 10 # Cargar el código de finalización del programa en $v0
syscall # Hacer una llamada al sistema para salir del programa
Ejemplo de una suma en lenguaje ensamblador
Microprogramación
Microprogramación
¿controlador microprogramable?
Controlador:
Es un componente o dispositivo que tiene la función de dirigir o coordinar el funcionamiento de otros componentes, dispositivos o sistemas para lograr un objetivo específico.
Los controladores pueden ser hardware, software o una combinación de ambos, dependiendo de la aplicación y el sistema que se esté controlando.
Microprogramación
¿controlador microprogramable?
Controlador microprogramable:
Es un componente de hardware diseñado para controlar y coordinar las operaciones internas de una Unidad Central de Procesamiento (CPU) utilizando la técnica de microprogramación.
Microprogramación
Características y funciones
Controlador
Control y Coordinación
Toma de Decisiones
Interacción con el Entorno
Funcionamiento de otros componentes o sistemas para asegurar que trabajen juntos de manera eficiente y efectiva.
Basadas en reglas predefinidas, entradas del usuario o datos de sensores. Estas decisiones determinan el comportamiento del sistema controlado.
recibir datos o información del entorno a través de sensores y actuar en consecuencia para mantener un estado deseado o responder a cambios externos.
Microprogramación
Características y funciones
Controlador
Implementación de Algoritmos
Retroalimentación (Feedback):
En algunos casos, un controlador implementa algoritmos matemáticos o lógicos para realizar tareas específicas.
Algunos controladores reciben información de retroalimentación (feedback) para ajustar su comportamiento y mejorar su desempeño.
Microprogramación
Ejemplos
Controlador
Controladores de Dispositivos Periféricos
Controladores de Robótica
Son controladores son programas de software que interactúan con los dispositivos periféricos de una computadora, como impresoras, teclados, ratones, etc., para coordinar su funcionamiento y permitir la comunicación entre la computadora y los periféricos.
Son responsables de dirigir los movimientos y operaciones de los robots basándose en datos de sensores y algoritmos de control.
Microprogramación
Ejemplos
Controlador
Controladores de Procesadores (CPU)
Controladores de Sistemas Automatizados
Es responsable de interpretar las instrucciones de máquina y coordinar las operaciones internas de la CPU para ejecutar las instrucciones.
Sistemas de control de tráfico, sistemas de climatización o sistemas de gestión de procesos industriales, el controlador toma decisiones y ajusta las operaciones para mantener condiciones óptimas y responder a cambios en el entorno.
Microprogramación
Componentes
Controlador microprogramable
Son aquellos que forman parte de la estructura interna de la CPU y que están específicamente diseñados para controlar y coordinar las operaciones de la Unidad Central de Procesamiento (CPU) utilizando la técnica de microprogramación.
Estos son fundamentales para la ejecución eficiente de las instrucciones de máquina y para asegurar que las operaciones internas del procesador se realicen correctamente.
Microprogramación
Componentes
Controlador microprogramable
Memoria de Control (ROM)
Contador de Microinstrucciones
Donde se almacena el microprograma.
Es un registro que mantiene el número de la microinstrucción actual que se está ejecutando. A medida que se ejecutan las microinstrucciones en el microprograma, este contador se incrementa secuencialmente para acceder a la siguiente microinstrucción.
Microprogramación
Componentes
Controlador microprogramable
Decodificador de Microinstrucciones
Unidad de Control Secuencial
Circuito lógico que decodifica la microinstrucción actual para determinar las operaciones y los registros que deben ser activados o modificados en cada etapa del ciclo de ejecución de la microinstrucción. Se interpreta el contenido de la microinstrucción y controla las señales de control internas de la CPU.
Circuito lógico que se encarga de secuenciar la ejecución de las microinstrucciones, asegurando que se ejecuten en el orden correcto y coordinando las operaciones de control internas de la CPU.
Microprogramación
Componentes
Controlador microprogramable
Unidad de Control de Instrucciones
Señales de Control y Buses de Control
Responsable de obtener las instrucciones de máquina desde la memoria principal o la caché y decodificarlas para determinar la secuencia de microinstrucciones correspondiente que se debe ejecutar para cada instrucción de máquina.
Las señales de control son señales eléctricas que se utilizan para activar o desactivar diferentes componentes y circuitos de la CPU en cada ciclo de ejecución de la microinstrucción.
Los buses de control son líneas de comunicación que transmiten estas señales de control desde la unidad de control a los diversos componentes de la CPU, permitiendo coordinar y controlar el flujo de datos y operaciones dentro de la CPU.
Microprogramación
Componentes
Controlador microprogramable
Unidad de Control de Instrucciones
Señales de Control y Buses de Control
Responsable de obtener las instrucciones de máquina desde la memoria principal o la caché y decodificarlas para determinar la secuencia de microinstrucciones correspondiente que se debe ejecutar para cada instrucción de máquina.
Las señales de control son señales eléctricas que se utilizan para activar o desactivar diferentes componentes y circuitos de la CPU en cada ciclo de ejecución de la microinstrucción.
Los buses de control son líneas de comunicación que transmiten estas señales de control desde la unidad de control a los diversos componentes de la CPU, permitiendo coordinar y controlar el flujo de datos y operaciones dentro de la CPU.
Microprogramación
Microprogramación
Microprogramación
Microprogramación
Microprogramación
/*https://parzibyte.me/blog*/
#include <Arduino.h>
#define ACCION_ENCENDER 97 // La letra a
#define ACCION_APAGAR 98 // La letra b
#define LED_FOCO_HABITACION 2
void setup()
{
Serial.begin(9600);
pinMode(LED_FOCO_HABITACION, OUTPUT);
}
void loop()
{
if (Serial.available())
{
int accion = Serial.read();
if (accion == ACCION_ENCENDER)
{
digitalWrite(LED_FOCO_HABITACION, HIGH);
}
else if (accion == ACCION_APAGAR)
{
digitalWrite(LED_FOCO_HABITACION, LOW);
}
}
}
Microprogramación
Referencias:
https://parzibyte.me/blog/2020/12/12/controlar-bombilla-arduino-bluetooth-telefono-movil/
Microprogramación
Microprogramación
Microprogramación
Microprogramación
Microprogramación
Microprogramación
Microprogramación
Conceptos previos
Unidad Central de Procesamiento (CPU)
Diseño de una computadora básica
Comprender la función y organización de la CPU, que incluye la Unidad de Control (UC) para gestionar el flujo de instrucciones y la Unidad Aritmético-Lógica (UAL) para realizar operaciones aritméticas y lógicas.
Conceptos previos
Diseño de una computadora básica
Arquitectura Von Neumann
Es una base común para la mayoría de las computadoras actuales y se caracteriza por la existencia de una memoria compartida que almacena tanto datos como programas.
Conceptos previos
Diseño de una computadora básica
Arquitectura Von Neumann
Conceptos previos
Diseño de una computadora básica
Memoria Principal
Entender la función y la organización de la memoria principal, que almacena datos y programas en celdas de memoria direccionables y accesibles aleatoriamente.
Conceptos previos
Diseño de una computadora básica
Instrucciones y Lenguaje de Máquina:
Conocer el concepto de instrucciones y el lenguaje de máquina, que son representaciones binarias que la CPU puede entender y ejecutar.
Buses de Datos, Direcciones y Control
Comprender los buses de datos, direcciones y control que permiten la comunicación entre la CPU, la memoria y los dispositivos de E/S.
Unidad de Entrada/Salida (E/S)
Entender cómo la CPU se comunica con dispositivos de entrada y salida, como teclados, monitores, impresoras y dispositivos de almacenamiento.
Conceptos previos
Diseño de una computadora básica
Reloj de Sistema
Conocer el concepto de un reloj de sistema que proporciona señales de sincronización para coordinar las operaciones de la computadora.
Circuitos Lógicos y Combinacionales
Comprender los conceptos de circuitos lógicos y combinacionales, que son la base para la implementación de la lógica digital en la CPU.
Programación de Hardware
Aprender lenguajes de descripción de hardware, como VHDL o Verilog, para describir la lógica y funcionalidad de la computadora en un nivel de abstracción más alto.
Conceptos previos
Diseño de una computadora básica
Síntesis y Implementación en FPGA (Field-Programmable Gate Array)
Después de la simulación y corrección de errores, los estudiantes deben llevar a cabo la síntesis y la implementación del diseño en una FPGA real. Pueden utilizar una placa de desarrollo FPGA que contenga suficientes recursos para implementar el diseño.
Conceptos previos
Diseño de una computadora básica
Pruebas y Depuración
Probar la computadora básica en la FPGA y depurar cualquier problema que surja durante las pruebas. Deben asegurarse de que la computadora pueda ejecutar correctamente las operaciones y realizar cálculos básicos.
Concepto Arq. computacional.
Conceptos Generales
Arquitectura de Von Neumann
Es un modelo de arquitectura computacional que se basa en la idea de almacenar tanto los datos como las instrucciones de programa en la memoria principal. La unidad central de procesamiento (CPU) realiza la lectura de instrucciones y datos desde la memoria y ejecuta las operaciones secuencialmente.
CPU (Central Processing Unit)
Es la parte central de un sistema computacional. La CPU ejecuta instrucciones de programa, realiza cálculos y controla las operaciones del sistema. Está compuesta por la Unidad de Control (UC) y la Unidad Aritmético-Lógica (UAL).
Concepto Arq. computacional.
Conceptos Generales
Memoria Principal
Es el espacio de almacenamiento principal del sistema, donde se guardan los programas y datos que la CPU necesita para operar. En una arquitectura de Von Neumann, tanto las instrucciones como los datos se almacenan en la misma memoria.
Buses
Son canales de comunicación que permiten el flujo de datos e instrucciones entre la CPU, la memoria y otros componentes del sistema, como dispositivos de entrada/salida.
Concepto Arq. computacional.
Conceptos Generales
Instrucciones
Son comandos que la CPU puede ejecutar. Cada instrucción realiza una operación específica, como sumar dos números, leer datos de memoria, o tomar decisiones condicionales.
Ciclo de Instrucción
Es el proceso por el cual la CPU busca, decodifica, ejecuta y almacena una instrucción de programa en la memoria. Consiste en una secuencia de pasos que la CPU sigue para procesar una instrucción.
Concepto Arq. computacional.
Conceptos Generales
Pipeline
Es una técnica que se utiliza para aumentar el rendimiento de la CPU al dividir el ciclo de instrucción en varias etapas, de modo que múltiples instrucciones se pueden ejecutar simultáneamente.
Memoria Caché
Es una memoria de alta velocidad y pequeña capacidad que se encuentra más cerca de la CPU que la memoria principal. La memoria caché se utiliza para almacenar copias de datos e instrucciones que la CPU utiliza con frecuencia, lo que acelera el acceso a esos datos e instrucciones.
Concepto Arq. computacional.
Conceptos Generales
Arquitectura Harvard
Es un tipo de arquitectura que utiliza memorias separadas para almacenar las instrucciones y los datos. Esto permite que la CPU acceda a instrucciones y datos al mismo tiempo, mejorando el rendimiento.
Concepto Arq. computacional.
Conceptos Generales
Arquitectura Harvard - Ventajas
Concepto Arq. computacional.
Conceptos Generales
Arquitectura Harvard - Ventajas
Concepto Arq. computacional.
Conceptos Generales
Arquitectura Harvard - Ventajas
Concepto Arq. computacional.
Conceptos Generales
Arquitectura Harvard - Desventajas
Concepto Arq. computacional.
Conceptos Generales
Arquitectura Harvard - Desventajas
Concepto Arq. computacional.
Conceptos Generales
Arquitectura Harvard - Desventajas
Mayores costos de desarrollo: La mayor complejidad del diseño de hardware y la necesidad de componentes adicionales pueden aumentar los costos de desarrollo y fabricación de sistemas basados en la arquitectura Harvard.
Menor flexibilidad en algunas aplicaciones: La arquitectura Harvard está diseñada para aplicaciones específicas que requieren un alto rendimiento y un acceso rápido a las instrucciones y datos. Sin embargo, en ciertos casos donde se requiere flexibilidad y adaptabilidad, la arquitectura Harvard puede no ser la opción más adecuada.
Concepto Arq. computacional.
Evolución de las arq. de computadoras
Primeras computadoras mecánicas
Finales del siglo XIX y principios del siglo XX,
Surgieron las primeras computadoras mecánicas, como la máquina analítica de Charles Babbage y la máquina tabuladora de Herman Hollerith. Estas máquinas utilizaban engranajes y mecanismos para realizar cálculos y procesar datos.
Concepto Arq. computacional.
Evolución de las arq. de computadoras
Computadoras de tubos de vacío
Década de 1940
Utilizaban tubos de vacío como componentes electrónicos para realizar cálculos y procesar datos. Ejemplos famosos incluyen ENIAC y UNIVAC.
Décadas de 1930 y 1940,
Computadoras Electromecánicas
Máquinas de relés y los equipos de tarjetas perforadas. Estos sistemas utilizaban relés y tarjetas perforadas para realizar cálculos y procesar datos.
Concepto Arq. computacional.
Evolución de las arq. de computadoras
Microprocesadores y computadoras personales
Década de 1970
Los microprocesadores, integraban múltiples funciones de una CPU en un solo chip. Permitió la creación de las primeras computadoras personales (PC) y marcó el inicio de la era de la computación personal.
Fines de la década de 1950 y principios de la década de 1960
Computadoras de transistores
Transistores reemplazaron a los tubos de vacío. Eran más pequeñas, rápidas y confiables que sus predecesoras.
Concepto Arq. computacional.
Evolución de las arq. de computadoras
Supercomputadoras y paralelismo
Las supercomputadoras, que utilizan múltiples procesadores en paralelo, se desarrollaron para resolver problemas científicos y técnicos complejos. El paralelismo se volvió cada vez más importante para mejorar el rendimiento en aplicaciones exigentes.
Principios de 1965 hasta finales del 2000
Computadora de 32 y 64 bits
Las computadoras evolucionaron para usar palabras de datos de mayor tamaño, como 32 bits y 64 bits. Permitió un mayor rendimiento y capacidad de memoria.
Concepto Arq. computacional.
Evolución de las arq. de computadoras
Supercomputadoras y paralelismo
Las supercomputadoras, que utilizan múltiples procesadores en paralelo, se desarrollaron para resolver problemas científicos y técnicos complejos. El paralelismo se volvió cada vez más importante para mejorar el rendimiento en aplicaciones exigentes.
Principios de 1965 hasta finales del 2000
Computación móvil y dispositivos portátiles
Se desarrollaron computadoras portátiles y dispositivos móviles, como teléfonos inteligentes y tabletas, que permiten la computación en movimiento.
Concepto Arq. computacional.
Evolución de las arq. de computadoras
Computación cuántica
Campo emergente que utiliza principios de la mecánica cuántica para realizar cálculos a una escala y velocidad que van más allá de las capacidades de las computadoras clásicas.
Principios de 1965 hasta la fecha
Computación en la nube
Permite el acceso a recursos informáticos a través de internet, lo que ha revolucionado la forma en que se proporcionan y utilizan los servicios de computación.
Concepto Arq. computacional.
Máquinas cisc
Concepto Arq. computacional.
Máquinas cisc - Características
Las instrucciones de una máquina CISC pueden ser muy detalladas y llevar a cabo múltiples operaciones en una sola instrucción.
Estas instrucciones pueden incluir operaciones aritméticas, lógicas, de carga y almacenamiento de datos, así como operaciones de salto y llamadas a subrutinas.
Conjunto de instrucciones complejas:
Concepto Arq. computacional.
Máquinas cisc - Características
Las máquinas CISC suelen admitir varios modos de direccionamiento, lo que permite acceder a los operandos de diferentes formas, como direccionamiento inmediato, directo, indirecto y relativo.
Modos de direccionamiento:
En una máquina CISC, las instrucciones pueden tener longitudes variables, lo que significa que algunas instrucciones pueden requerir más bytes para representarlas que otras.
Instrucciones de longitud variable
Concepto Arq. computacional.
Máquinas cisc - Características
Debido a la complejidad de las instrucciones, las máquinas CISC pueden requerir más memoria para almacenar el código de programa y las instrucciones.
Uso intensivo de memoria
Ejemplos
Concepto Arq. computacional.
Máquinas cisc - arq.
Concepto Arq. computacional.
Máquinas risc
Una máquina RISC (Reduced Instruction Set Computer) es un tipo de arquitectura de computadora que se caracteriza por tener un conjunto de instrucciones reducido y simple. En una máquina RISC, cada instrucción realiza una operación básica y sencilla en una sola instrucción, lo que facilita la ejecución rápida de las instrucciones.
Concepto Arq. computacional.
Máquinas risc - Características
El conjunto de instrucciones en una máquina RISC es más pequeño en comparación con una máquina CISC (Complex Instruction Set Computer). Cada instrucción se diseña para ser ejecutada en un solo ciclo de reloj y realizar operaciones simples, como cargar, almacenar, sumar, restar y operaciones lógicas básicas.
Conjunto de instrucciones reducido
Concepto Arq. computacional.
Máquinas risc - Características
Las máquinas RISC tienden a tener modos de direccionamiento más simples y directos, lo que ayuda a reducir la complejidad del hardware y acelera la ejecución de las instrucciones.
Modos de direccionamiento simples
En una máquina RISC, las instrucciones suelen tener una longitud fija, lo que facilita la decodificación y la ejecución más rápida de las instrucciones.
Longitud de instrucción fija
Concepto Arq. computacional.
Máquinas risc - Características
Las máquinas RISC suelen utilizar un conjunto de registros de propósito general y favorecen el almacenamiento y procesamiento de datos en registros en lugar de la memoria, lo que ayuda a mejorar el rendimiento.
Uso intensivo de registros
Surgieron en respuesta a la complejidad de las máquinas CISC y se enfocaron en la eficiencia y el rendimiento optimizado para ciertas aplicaciones. Ejemplos de arquitecturas RISC incluyen ARM, MIPS y RISC-V.
Concepto Arq. computacional.
Máquinas risc - Características
Las máquinas RISC suelen utilizar un conjunto de registros de propósito general y favorecen el almacenamiento y procesamiento de datos en registros en lugar de la memoria, lo que ayuda a mejorar el rendimiento.
Uso intensivo de registros
Surgieron en respuesta a la complejidad de las máquinas CISC y se enfocaron en la eficiencia y el rendimiento optimizado para ciertas aplicaciones. Ejemplos de arquitecturas RISC incluyen ARM, MIPS y RISC-V.
Concepto Arq. computacional.
Máquinas risc - Ejemplos
Ampliamente utilizada en dispositivos móviles, como teléfonos inteligentes y tabletas, así como en sistemas embebidos, microcontroladores y otros dispositivos de bajo consumo de energía. ARM es conocida por su eficiencia energética y su flexibilidad en términos de diseño y configuración.
ARM (Advanced RISC Machines):
Usada en una variedad de aplicaciones, desde estaciones de trabajo y servidores hasta dispositivos embebidos y sistemas integrados. MIPS ha sido ampliamente utilizado en la industria y la academia debido a su diseño limpio y su enfoque en la eficiencia de ejecución de instrucciones.
MIPS (Microprocessor without Interlocked Pipeline Stages):
Concepto Arq. computacional.
Máquinas risc - Ejemplos
Es una arquitectura RISC de código abierto, de las más recientes en el campo. Su diseño modular permite a los diseñadores adaptar la arquitectura a las necesidades específicas de su aplicación.
RISC-V: RISC-V
Utilizada en sistemas Unix y estaciones de trabajo. A lo largo de los años, ha sido diseñada para escalabilidad y rendimiento en sistemas multiprocesador.
SPARC (Scalable Processor Architecture)
Concepto Arq. computacional.
Máquinas risc - Ejemplos
Utilizada en computadoras personales y sistemas embebidos. Desarrollada conjuntamente por IBM, Motorola y Apple, y ha sido conocida por su rendimiento en aplicaciones de alto rendimiento y multimedia.
PowerPC
Desarrollada por DEC (Digital Equipment Corporation), se destacó por su rendimiento en sistemas de alto rendimiento y servidores.
Alpha
Concepto Arq. computacional.
Máquinas risc - Arq.
Concepto Arq. computacional.
Risc vs Cisc
Conjunto de instrucciones
RISC: Las máquinas RISC tienen un conjunto de instrucciones reducido y simple, donde cada instrucción realiza una operación básica en una sola etapa de ejecución. Las instrucciones son generalmente de longitud fija y realizan tareas específicas.
CISC: Las máquinas CISC tienen un conjunto de instrucciones complejo y variado, donde cada instrucción puede realizar múltiples operaciones y acceder a múltiples operandos en una sola instrucción. Las instrucciones pueden tener longitudes variables.
Concepto Arq. computacional.
Risc vs Cisc
Complejidad de instrucciones
RISC: Las instrucciones en una máquina RISC son más simples y específicas, lo que facilita la implementación del hardware y la ejecución rápida de las instrucciones.
CISC: Las instrucciones en una máquina CISC pueden ser más complejas y detalladas, lo que puede requerir más etapas de ejecución y hardware más complejo para decodificar y ejecutar las instrucciones.
Concepto Arq. computacional.
Risc vs Cisc
Modos de direccionamiento
RISC: Las máquinas RISC generalmente tienen modos de direccionamiento más simples y directos, como direccionamiento inmediato, directo e indirecto.
CISC: Las máquinas CISC pueden tener modos de direccionamiento más variados y complejos, lo que les permite acceder a operandos de diversas maneras.
Concepto Arq. computacional.
Risc vs Cisc
Uso de registros
RISC: Las máquinas RISC tienden a utilizar un conjunto de registros de propósito general y favorecen el almacenamiento y procesamiento de datos en registros en lugar de la memoria.
CISC: Las máquinas CISC pueden hacer un uso más intensivo de la memoria, y algunas instrucciones pueden operar directamente en la memoria.
Concepto Arq. computacional.
Risc vs Cisc
Arquitectura de hardware
RISC: Las máquinas RISC son más fáciles de diseñar y tienen un hardware más simple, lo que las hace más eficientes en términos de consumo de energía y rendimiento.
CISC: Las máquinas CISC pueden requerir hardware más complejo y son más propensas a tener ciclos de reloj más largos.
Concepto Arq. computacional.
Risc vs Cisc
Rendimiento y optimización
RISC:Las máquinas RISC son más adecuadas para aplicaciones que requieren un rendimiento consistente y predecible, como cálculos científicos, sistemas embebidos y dispositivos móviles.
CISC: Las máquinas CISC pueden ser más adecuadas para aplicaciones que requieren una amplia variedad de operaciones complejas en una sola instrucción, como aplicaciones empresariales y de servidor.
Concepto Arq. computacional.
Arq. paralela
Conocida como computación paralela, es un enfoque en el diseño de sistemas informáticos que utiliza múltiples unidades de procesamiento trabajando en conjunto para realizar tareas computacionales.
El objetivo principal de la arquitectura paralela es aumentar el rendimiento y la velocidad de procesamiento al dividir una tarea en subproblemas más pequeños y resolverlos simultáneamente en paralelo.
En lugar de depender de un solo procesador para ejecutar una secuencia de instrucciones en orden secuencial, la arquitectura paralela utiliza múltiples procesadores o núcleos de procesamiento para trabajar en paralelo en tareas independientes o partes de una tarea más grande.
Concepto Arq. computacional.
Arq. paralela - tipos
Este enfoque busca aprovechar la capacidad de superposición de instrucciones para mejorar el rendimiento. Los procesadores modernos utilizan técnicas como la ejecución fuera de orden (Out-of-Order Execution) y el procesamiento de instrucciones en paralelo (Superscalar) para lograr un mayor rendimiento a nivel de instrucción.
Paralelismo a nivel de instrucciones (ILP, Instruction-Level Parallelism)
Concepto Arq. computacional.
Arq. paralela - tipos
Este enfoque divide una tarea en subproblemas más pequeños y los distribuye entre múltiples procesadores o núcleos para que puedan ejecutarse en paralelo. Esto se utiliza comúnmente en sistemas multiprocesador o en arquitecturas multinúcleo.
Paralelismo a nivel de tareas (TLP, Task-Level Parallelism)
Concepto Arq. computacional.
Arq. paralela - usada
Concepto Arq. computacional.
Arq. paralela - usada