Microarquitectura de un procesador

Microarquitectura de un procesador Jhon Henry Riaño Castro CÓD. 0711041563 Nicolás Alberto Reyes Rodríguez CÓD. 16100105

Views 125 Downloads 6 File size 615KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Microarquitectura de un procesador Jhon Henry Riaño Castro CÓD. 0711041563 Nicolás Alberto Reyes Rodríguez CÓD. 1610010585 Resumen— En esta primera entrega del proyecto realizaremos una aproximación practica mediante un código de cómo podemos saber si un número es primo o no, donde explicaremos paso por paso el funcionamiento del algoritmo e indagaremos por qué a medida que el número va creciendo es más complicado saber si es primo.

I. INTRODUCCIÓN l análisis de los números primos ha sido por siglos uno de los mayores problemas matemáticos, ya que no se ha descubierto el patrón del comportamiento de los dichos y ha sido un dolor de cabeza para los grandes matemáticos de distintas épocas. Un número primo lo podemos definir como un número que solo se puede dividir por dos números: el uno y el mismo, es decir tiene únicamente dos divisores. En este primer avance propondremos un código que pueda resolver si un número es primo o no, explicando su funcionamiento paso por paso y las limitaciones físicas que se puedan tener (Hardware).

E

II. MARCO TEÓRICO Para entender el proyecto propuesto es indispensable entender cómo funciona la arquitectura de un computador, esta se divide en tres partes, lenguaje de bajo nivel o ensamblador, un compilador y un lenguaje de alto nivel. 2.1 LENGUAJE DE PROGRAMACIÓN DE ALTO NIVEL Es un lenguaje transportable tal como C, Fortran o Java compuesto por palabras y notación algebraica que un compilador puede traducir en un lenguaje ensamblador [1]. Básicamente es un lenguaje de programación que permite escribir una serie de instrucciones a partir de palabras de muy fácil comprensión para el programador, a diferencia del lenguaje de bajo nivel que se acerca más al lenguaje binario de las máquinas. Dentro de los lenguajes de alto nivel más conocidos están: PASCAL, APL, COBOL, C#, MATLAB, entre otros Los primeros programadores se comunicaban con los computadores mediante números binarios… luego los pioneros inventaron programas para para traducir notación simbólica a binaria, el primero de

estos programas fue llamada ensamblador, este programa traduce la versión simbólica de una instrucción a su versión binaria [1]. Años después por facilidad para programar y por productividad se inventa el programa de alto nivel [1]. 2.2 MIPS (Microprocessor without Interlocked Pipeline Stages) Es una arquitectura que permite mejorar el proceso y el aprendizaje en las etapas del procesador mientras se asigna un conjunto de instrucciones, su definición técnica: Es una arquitectura diseñada para optimizar la segmentación en unidades de control y para facilitar la generación automática de código máquina por parte de los compiladores [1]. 2.2.1 Conjunto (set) de Instrucciones ISA (Instruction Set Architecture) Define las instrucciones que un procesador puede reconocer y procesar, siendo la microarquitectura el puente entre el lenguaje de programación (software) y los elementos del hardware. Debe abarcar todos los aspectos de un conjunto de instrucciones tales como tamaño de la memoria, registros a usar, tipo de direccionamiento. Los tipos de instrucciones se definen de acuerdo a su funcionalidad en tres grupos: • R Registros: Aquellas en que las instrucciones contienen operaciones aritméticas o lógicas y el modo de direccionamiento es de registro. • I Inmediato: A diferencia de las tipo R, las inmediatas tienen un modo de direccionamiento en el cual el valor constante es un operando que está inmerso en la instrucción. • J Cambio de Flujo: Corresponden a las instrucciones que permiten un salto entre líneas con una condición (condicionales) o desplazarse entre ellas sin una condición (incondicionales) III. PLANTEAMIENTO DEL PROBLEMA Desarrollar un algoritmo de alto nivel que dé solución al problema: “Determinar si un número es primo o no”, por lo cual se deberá determinar el tipo y diseñar el conjunto de instrucciones que se requerirán para dar solución al problema.

IV. DISEÑO DEL PROGRAMA Para determinar si un número es primo o no podemos utilizar un lenguaje de alto nivel programado en java y demostrar su funcionamiento: import java.util.Scanner; public class numeroPrimo { public static void main(String[] args) { Scanner obtenerNumero = Scanner(System.in); int contador,I,numero;

new

System.out.print("Ingresa un numero: "); numero = obtenerNumero.nextInt(); contador = 0; for(I = 1; I