Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Apuntes de estudio Arquitectura de Computadoras, Apuntes de Arquitectura de ordenadores

En el documento vienen varios temas vistos en la materia para la comprensión de temas importantes en cuanto a diseño de hardware desde el punto de vista de un procesador, este se desarrolla en VHDL mas adelante con un par de ejercicios

Tipo: Apuntes

2023/2024

Subido el 21/04/2025

angel-oliveros-1
angel-oliveros-1 🇲🇽

1 documento

1 / 18

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
🤖
Arquitectura de Computadoras
💡
Desafío: F(v, w, x, y, z) = Σ m1, m4, m7, m15, m18, m23, m24, m31)
resolver con MUX
El multiplexor es una parte muy importante para este tipo de cosas ya que es
como un selector, hay que pensarlo como un IF en programación
Para conocer la cantidad de selectores de un Multiplexor, es necesario hacer la
operación Log2(n), donde n es el numero de entradas del multiplexor.
Las variables mas significativas serán las equivalentes a los selectores, en el
caso del desafío nuestros selectores serán v, w, y x
Implementar con decodificador binario 16 combinaciones que sean posibles
con 2 variables, RECUERDA, 6 de ellas son las compuertas lógicas
Flip Flop tipo D
El Flip Flop tipo D es un tipo de circuito de memoria que almacena y retiene un
bit de información. Tiene una entrada llamada D (data) que determina el valor
que se va a almacenar y una entrada de reloj CLK que sincroniza el cambio de
estado del Flip Flop.
Tabla de verdad
Arquitectura de Computadoras
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12

Vista previa parcial del texto

¡Descarga Apuntes de estudio Arquitectura de Computadoras y más Apuntes en PDF de Arquitectura de ordenadores solo en Docsity!

Arquitectura de Computadoras

💡 Desafío: F(v, w, x, y, z) =^ Σ^ m1, m4, m7, m15, m18, m23, m24, m31)

resolver con MUX

El multiplexor es una parte muy importante para este tipo de cosas ya que es como un selector, hay que pensarlo como un IF en programación

Para conocer la cantidad de selectores de un Multiplexor, es necesario hacer la operación Log2(n), donde n es el numero de entradas del multiplexor.

Las variables mas significativas serán las equivalentes a los selectores, en el caso del desafío nuestros selectores serán v, w, y x

Implementar con decodificador binario 16 combinaciones que sean posibles con 2 variables, RECUERDA, 6 de ellas son las compuertas lógicas

Flip Flop tipo D

El Flip Flop tipo D es un tipo de circuito de memoria que almacena y retiene un bit de información. Tiene una entrada llamada D (data) que determina el valor que se va a almacenar y una entrada de reloj CLK que sincroniza el cambio de estado del Flip Flop.

Tabla de verdad

CLK D Q(t) Q(t+1) 0 x Q(t) Q(t) 1 0 Q(t) 0 1 1 Q(t) 1

Cuando el reloj CLK está en estado bajo  0 , el Flip Flop mantiene su estado actual (Q(t)). Cuando el reloj CLK está en estado alto  1 , el Flip Flop toma el valor de la entrada de datos D en ese momento y lo almacena en su estado siguiente Q(t+1)).

Información relevante

El Flip Flop tipo D se puede construir utilizando compuertas lógicas como compuertas AND, OR y NOT. Es utilizado en la construcción de circuitos secuenciales como contadores y registros. Puede ser utilizado para almacenar un bit de información y transferirlo en momentos específicos sincronizados por el reloj.

Procesadores

Los procesadores, también conocidos como unidades centrales de procesamiento CPU, por sus siglas en inglés), son componentes fundamentales en la arquitectura de las computadoras modernas. Estos dispositivos desempeñan un papel crucial al ejecutar instrucciones y realizar operaciones que permiten el funcionamiento de los sistemas informáticos. En este escrito, exploraremos las partes, tipos y funciones esenciales de los procesadores.

Partes Principales de un Procesador:

 Unidad de Control CU Esta parte del procesador coordina y controla las operaciones. Interpreta las instrucciones del programa y dirige las señales a otras partes del procesador para ejecutarlas.  Unidad Aritmético-Lógica ALU Encargada de realizar operaciones aritméticas (sumas, restas, multiplicaciones, divisiones) y lógicas AND, OR, NOT en los datos procesados.

con sus propias ventajas y aplicaciones específicas.

Código One-Hot

En esta ocasión se implementara un contador de 0 a 7 por eso usamos únicamente en decimal del 0 al 7

Es importante diseñar el diagrama de transición entre estados para la realización del ejercicio

Teniendo el diagrama de estados sabemos que:

d0=q1xʼ+q7x

Sacar funciones restantes para el contador

d1=q0x+q2

d2=q1x+q3

d3=q2x+q4

d4=q3x+q5

Diagrama de estados de contador ascendente y descendente

d5=q4x+q6

d6=q5x+q7

d7=q6x+q0

El código one-hot es una técnica utilizada en la arquitectura de computadoras y en el diseño de procesadores de propósito específico. Consiste en asignar un único bit a cada estado o elemento en un conjunto de estados o elementos. Cada estado o elemento tiene su propio bit y solo uno de ellos está activo a la vez, mientras que los demás bits están en estado inactivo.

En el contexto de la arquitectura de computadoras, el código one-hot se utiliza para representar estados en máquinas de estado finito y para la implementación de contadores. Cada estado se representa mediante un conjunto de bits, donde solo uno de los bits está en estado activo y los demás están en estado inactivo. Esto permite una codificación sencilla y eficiente de los estados, ya que solo se requiere un bit para representar cada estado.

En el diseño de procesadores de propósito específico, el código one-hot se utiliza para la decodificación de instrucciones. Cada instrucción se representa mediante una combinación única de bits, donde solo uno de los bits está en estado activo y los demás están en estado inactivo. Esto facilita la identificación y decodificación de las instrucciones, ya que cada instrucción tiene su propio bit activo, lo que simplifica el circuito de decodificación.

El uso del código one-hot en la arquitectura de computadoras y en el diseño de procesadores de propósito específico presenta varias ventajas. En primer lugar, permite una codificación sencilla y eficiente de los estados o elementos, ya que solo se requiere un bit para cada estado o elemento. Además, facilita la identificación y decodificación de las instrucciones, lo que mejora el rendimiento y la eficiencia del procesador. Además, el código one-hot ofrece una mayor seguridad, ya que es más difícil para un programa malicioso alterar los estados o elementos representados mediante este código.

En resumen, el código one-hot es una técnica utilizada en la arquitectura de computadoras y en el diseño de procesadores de propósito específico para representar estados, elementos o instrucciones. Proporciona una codificación sencilla y eficiente, mejora el rendimiento del procesador y ofrece mayor seguridad en la representación de estados o elementos.

La arquitectura Von Neumann es un diseño fundamental en el campo de la arquitectura de computadoras. Se caracteriza por tener una unidad central de procesamiento CPU que ejecuta instrucciones almacenadas en memoria y opera en base a un modelo secuencial de ejecución. A continuación, se resumen sus aspectos clave:

Memoria Principal: Es la encargada de almacenar tanto los datos como las instrucciones de los programas. La CPU se conecta a la memoria principal a través de buses de control, datos y dirección. CPU La unidad central de procesamiento es responsable de ejecutar las instrucciones y realizar las operaciones aritméticas y lógicas en los datos. Las operaciones aritméticas incluyen suma, resta, desplazamiento aritmético y comparación, mientras que las operaciones lógicas incluyen AND, OR, XOR y desplazamientos lógicos. Arquitectura de Memoria de Acceso Aleatorio RAM La memoria principal se organiza de acuerdo con el modelo de acceso aleatorio. Esto significa que se puede acceder a cualquier ubicación de memoria en cualquier momento, lo que facilita el acceso a datos e instrucciones de manera eficiente.

La arquitectura Von Neumann es ampliamente utilizada en las computadoras modernas debido a su simplicidad y eficiencia en la ejecución de programas secuenciales. Sin embargo, también presenta limitaciones, como la dependencia en el acceso a la memoria y la imposibilidad de ejecutar instrucciones y acceder a datos simultáneamente.

En resumen, la arquitectura de computadoras Von Neumann se basa en una arquitectura de memoria compartida, donde la CPU y la memoria principal son componentes clave. Esta arquitectura ha sido fundamental en el desarrollo de las computadoras modernas y ha sentado las bases para muchos avances tecnológicos en el campo de la informática.

Memoria Principal

Almacena los datos y las instrucciones de los programas

Se une al CPU a través de un bus de 32 bits, que es un bus de control, bus de datos y bus de dirección

CPU

Operaciones Aritmeticas

suma (addition) resta (substraction) desplazamiento aritmetico a la derecha Shift Right Aritmethic) comparación Set Less Than)

Operaciones Lógicas

AND

OR

XOR

Desplazamiento Lógico a la Izquierda Desplazamiento Lógico a la Derecha

RAM Random Access Memory Memoria de Acceso

Arbitrario)

eficiencia en el acceso a instrucciones y datos, así como su capacidad de ejecutar programas secuenciales de manera rápida y segura.

En resumen, la arquitectura Harvard ofrece un mayor rendimiento, aprovecha el paralelismo de lectura, es eficiente en programas secuenciales, brinda mayor seguridad y se utiliza ampliamente en sistemas embebidos.

💡 Formula para calcular el rango donde “nˮ^ es el numero de bits^ 2^n-1,

2^n-1 1

Complemento a 2

Multiplicación de Booth

  • @brief This function computes the product of two 16-bit integers by means
  • of the Booth algorithm
  • @param m the multiplicand
  • @param q the multiplier
  • @return int the product of the multiplication */ int booth_multiplier(int, int);

int main() { int multiplicand = 1000, multiplier  1000; int result = booth_multiplier(multiplicand, multiplier); return 0; }

int booth_multiplier(int m, int q) { int counter  8; int result  0x0000FFFF & q; int booth_modifier = 0x00000003 & result)  1; while (counter  0  { result = result  1; if (booth_modifier  1 || booth_modifier  2  result += m  15; else if (booth_modifier  3  result += m  16; else if (booth_modifier  4  result -= m  16; else if (booth_modifier  5 || booth_modifier  6  result -= m  15; booth_modifier  0x00000007 & result; result = result  1; counter--; }

💡 Macro:^ Plantilla de texto

Variables locales: Aquellas que se declaran en la función

Función de ra : guardar la dirección de la instrucción a la que

se debe regresar después de invocar a la función

Cuando no existe el riesgo que se pierda el valor de los argumentos, hay que usarlos directamente

En el circuito de GCD encontramos deltas que son acortadores de las operaciones GT y EQ, el siguiente estado va conectado a la memoria y a su vez la salida de la memoria es la entrada del siguiente estado y al final al decodificador.

fp : registro que delimita el inicio del marco de una función

sp: apunta hacia una dirección de memoria arriba de la pila,

indica donde comienza el espacio libre

Palabra: es la mínima unidad de información que puede

manejar la computadora

PC Program Counter Contador de programa) Almacena la

dirección de la instrucción que actualmente se esta

ejecutando

La pila no crece hacia mas infinito, crece hacia el 0

Las maquinas tipo RISC, MIPS, etc son de carga, almacenamiento y procesamiento

Si el valor de un temporal se usa mas una vez en la misma línea, se debe usar otro temporal, si no, se debe utilizar t0 como primera opción

CARGA, PROCESA, ALMACENA

Estos son los pasos que se deben seguir SIEMPRE para todo, por ejemplo, la siguiente instrucción:

en C

#int booth_mofier = 0x0000000003 & result)  1;

en RISCV

lw t0, 20(fp) #carga andi t0, t0, 0x3 #procesa slli t0, t0, 1 sw t0, 24(fp) #almacena

Compilación de WHILE

 Se debe colocar un salto incondicional j #jump  Se coloca una etiqueta del salto, en este caso a j .L  Se compila el cuerpo del bucle  Se compila la condición de iteración del bucle

Compilación de IF

Condicion de bifurcacion

 Primero se carga el valor de la variable o las variables dentro del if  El cuerpo del If siempre tendrá un salto incondicional, este sirve par omitir al else y salir del if.

Restricciones de compilación

Cuando una variable solo esta declarada pero sin ningún valor, no se ve reflejado en ensamblador, únicamente se deben reservar esos bits, aunque no sea inmediato

Para compilar en IF se debe usar el contrario al operador que se quiere usar, por ejemplo de = se usa !, para < se usa ≥ y así con todos.

Lograr ejecutar los programas conforme al flujo del programa, y dependiendo de las condiciones de avance

Por convención el valor de retorno debe almacenarse en el registro a

Los argumentos por convención se guardan en registros tipo a y se calculan de derecha a izquierda de acuerdo con el orden en el que son pasados a la función

Desensamble

Type S

sw ra, 32(sp)

Ensamblador puro solo usa BLE y BGE

  • imm12
  • rs2 ra
  • rs1 sp
  • funct3
  • opcode:
  • 0x
  • la comparación hasta el salto y se multiplica por El salto es la comparación se hace contando el numero de instrucciones desde
    • bge t1, t0, L Type B
    • bge t1, t0,
    • imm13
    • rs2
    • rs1
    • funct3
    • opcode
    • 0x00535C
    • imm21 Type j
    • rd
    • opcode