Está en la página 1de 8

Universidad Acción Pro Educación

y Cultura

Nombre Completo:
Wander Rainiery López Hernández

Matrícula:
2020-0815

Sección:
43031-001

Tema: Asignatura:
RESUMEN 3 Arquitectura del computador

Profesor:
Carlos José Núñez Fernández.

Día: 4 Mes: Octubre Año: 2020


Máquina de von Neumann

Nuestros ordenadores personales, smartphones y tablets pueden ejecutar cualquier programa que les
instalemos. Prácticamente, cualquier dispositivo que tenemos hoy a nuestro alcance es, en el fondo, un
ordenador de propósito general cuyo ámbito de uso o aplicación lo marca el software que está utilizando.
Este hecho, que para nosotros es algo cotidiano, no se daba en los primeros computadores que surgieron en
los años 40 y 50. Computadoras como "la Bomba", diseñada por Alan Turing para descifrar el código Enigma de
Alemania, se diseñó expresamente con ese fin, para descifrar códigos. Es decir, estos primeros computadores
tenían programas fijos e intentar cambiar esta función implicaba, prácticamente, tener que rediseñar por
completo el sistema.
Si bien el ENIAC se diseñó como uno de los primeros computadores de "propósito general" -es decir que se
podían programar y hacer que ejecutasen distintos programas-; la realidad es que por el conexionado de cables
del ENIAC y, en la práctica, se empleaba mucho tiempo en programar el sistema para ejecutar nuevas rutinas.
En este contexto, un matemático de origen húngaro de nombre John von Neumann, apoyándose en los
principios que marcó Alan Turing en la conocida como "máquina de Turing", desarrolló la Arquitectura de von
Neumann, un modelo de computador que propició un gran salto en el desarrollo de los primeros
computadores y que, además, hoy aún sigue vigente (eso sí, con modificaciones que han elevado la
complejidad del modelo).

Una mente brillante e inmigrante.

John von Neumann nació bajo el nombre de Neumann János Lajos en Budapest en 1903. Hijo de un banquero
judío, a los diez años, John von Neumann fue considerado por sus profesores del colegio como superdotado y
recomendaron a sus padres que complementaran su formación con clases particulares de matemáticas
impartidas por profesores universitarios.
El diseño de una arquitectura von Neumann es más simple que la arquitectura Harvard más moderna, que
también es un sistema de programa almacenado, pero tiene un conjunto dedicado de direcciones y buses de
datos para leer datos desde memoria y escribir datos en la misma, y otro conjunto de direcciones y buses de
datos para ir a buscar instrucciones.
Un ordenador digital de programa almacenado es aquel que mantiene sus instrucciones de programa, así como
sus datos, en una memoria de acceso aleatorio (RAM) de lectura-escritura. Las computadoras de programa
almacenado representaron un avance sobre los ordenadores controlados por programas de la década de 1940,
como la Colossus y la ENIAC, que se programaron mediante el establecimiento de conmutadores y la inserción
de cables de interconexión para enrutar datos y para controlar señales entre varias unidades funcionales. En la
gran mayoría de las computadoras modernas, se utiliza la misma memoria tanto para datos como para
instrucciones de programa, y la distinción entre von Neumann vs. Harvard se aplica a la arquitectura de
memoria caché, pero no a la memoria principal.
Unidad de control

La unidad de control es el componente del procesador que dirige y coordina la mayoría de las operaciones en la
computadora. La unidad de control tiene un rol mucho muy parecido al que tendría un oficial de tránsito
vehicular ya que está se encarga de interpretar cada una de las instrucciones generadas por un programa y
después inicia las acciones apropiadas para llevar a cabo las instrucciones. Los tipos de componentes internos
que la unidad de control dirige incluyen la unidad lógica y aritmética, los registros, y los buses.

Fetch, decodificación, ejecución

Secuencia de acciones que realiza una unidad central de proceso para ejecutar cada una de las instrucciones
del código máquina de un programa almacenado en la memoria. Los pasos de cada ciclo de CPU son:
1. Pasar el contador de programa al bus de direcciones.
2. Tomar la instrucción de la memoria principal (o del cache) y vía el bus de datos introducirla en el registro de
instrucciones.
3. Decodificación de la instrucción y paso a la unidad de control.
4. Envío de las señales de control a las unidades funcionales de la CPU para la realización de las acciones
definidas en la instrucción y el retorno del resultado en un registro.
5. Incremento del contador de programa a la siguiente instrucción.
6. Repetir el ciclo desde el punto 1.

Conjunto de instrucciones.

Un conjunto de instrucciones, repertorio de instrucciones, juego de instrucciones o ISA (del inglés instruction set
architecture, «arquitectura del conjunto de instrucciones») es una especificación que detalla las instrucciones
que una unidad central de procesamiento puede entender y ejecutar, o el conjunto de todos los comandos
implementados por un diseño particular de una CPU. El término describe los aspectos del procesador
generalmente visibles para un programador, incluyendo los tipos de datos nativos, las instrucciones, los
registros, la arquitectura de memoria y las interrupciones, entre otros aspectos.
Existen principalmente tres tipos: CISC (Complex Instruction Set Computer), RISC (Reduced Instruction Set
Computer) y SISC (Simple Instruction Set Computing).
La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para distinguir este conjunto de
características de la microarquitectura, que son los elementos y técnicas que se emplean para implementar el
conjunto de instrucciones. Entre estos elementos se encuentran las microinstrucciones y los sistemas de caché.
Procesadores con diferentes diseños internos pueden compartir un conjunto de instrucciones; por ejemplo,
el I006Etel Pentium y AMD Athlon implementan versiones casi idénticas del conjunto de instrucciones x86,
aunque tienen diseños diferentes.

Programación en assembler

El lenguaje ensamblador, o assembler (en inglés assembly language y la abreviación asm), es un lenguaje de
programación de bajo nivel. Consiste en un conjunto de mnemónicos que representan instrucciones básicas para
los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables.
Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para
programar una arquitectura de procesador y constituye la representación más directa del código máquina
específico para cada arquitectura legible por un programador. Cada arquitectura de procesador tiene su propio
lenguaje ensamblador que usualmente es definida por el fabricante de hardware, y está basada en los
mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las
posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico
de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de
programación de alto nivel, que idealmente son portátiles.
Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al
código de máquina del computador objetivo. El ensamblador realiza una traducción más o menos isomorfa (un
mapeo de uno a uno) desde las sentencias mnemónicas a las instrucciones y datos de máquina. Esto está en
contraste con los lenguajes de alto nivel, en los cuales una sola declaración generalmente da lugar a muchas
instrucciones de máquina.
Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa,
controlar el proceso de ensamblaje, y la ayuda de depuración. Particularmente, la mayoría de los ensambladores
modernos incluyen una facilidad de macro (descrita más abajo), y se llaman macroensambladores.
Fue usado principalmente en los inicios del desarrollo de software, cuando aún no se contaba con potentes
lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con frecuencia en ambientes
académicos y de investigación, especialmente cuando se requiere la manipulación directa de hardware, alto
rendimiento, o un uso de recursos controlado y reducido. También es utilizado en el desarrollo de controladores
de dispositivo (en inglés, device drivers) y en el desarrollo de sistemas operativos, debido a la necesidad del
acceso directo a las instrucciones de la máquina. Muchos dispositivos programables (como los
microcontroladores) aún cuentan con el ensamblador como la única manera de ser manipulados.

Características
• El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido directamente
por un ser humano ya que su estructura se acerca más bien al lenguaje máquina, es decir, lenguaje de
bajo nivel.
• El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un Microprocesador
suele necesitar ser modificado, muchas veces en su totalidad para poder ser usado en otra máquina
distinta, aun con el mismo Microprocesador, solo pueden ser reutilizados secciones especiales del
código programado.
• Los programas hechos en lenguaje ensamblador, al ser programado directamente sobre Hardware, son
generalmente más rápidos y consumen menos recursos del sistema (memoria RAM y ROM). Al
programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más
rápidamente y ocupan menos espacio que con lenguajes de alto nivel.
• Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un
Microprocesador por lo que se pueden crear segmentos de código difíciles de programar en un
lenguaje de alto nivel.
• También se puede controlar el tiempo en que tarda una Rutina en ejecutarse, e impedir que se
interrumpa durante su ejecución.

• El lenguaje ensamblador es un código estructurado y gravitatorio desarrollado sobre un archivo de


programación (.ASM), en el cual pueden existir varios programas, macros o rutinas que pueden ser
llamados entre sí.
Formatos de instrucción.

El formato de la instrucción es un conjunto de especificaciones que indican como debe ser interpretado el patrón
de bits de una instrucción de máquina para logra su ejecución dentro del computador. El formato de la
instrucción nos indica cual es el código de operación y cuales los operandos que la instrucción específica, tanto
explícita como implícitamente.
Formato de instrucción: representación en binario de la misma.
El formato de instrucción especifica el significado de cada uno de los bits que la constituyen.
Longitud del formato de instrucción: número de bits que lo componen.
La información contenida en el formato de la instrucción es:

• Código de operación (COP).

• Dirección de los operandos (OP1 y OP2).

• Dirección del resultado (RES).

• Dirección de la siguiente instrucción (casi siempre implícita).

• Tipos de representación de los operandos (casi siempre implícitos en el código de operación).

• Modificador (MD): suele completar al CO, y sirve para especificar ciertas particularidades de la
instrucción:

• Tamaño y tipo de los operandos.


A veces se usa para distinguir entre operaciones similares.
COP MD OP1 OP1 OP2 OP2 RES

MIPS presenta tres formatos básicos de instrucción (32 bits):


Tipo R, o instrucciones de registro.
Tipo I, instrucciones de transferencia de datos o ramificación condicional.
Tipo J, o de salto incondicional.
El compromiso elegido por los diseñadores del MIPS es guardar todas las instrucciones con la misma longitud,
por eso se requieren diferentes clases de formatos de instrucción para diferentes clases de instrucciones.
Modos de direccionamiento.

En informática, los modos de direccionamiento son las diferentes maneras de especificar un operando dentro
de una instrucción en lenguaje ensamblador.
Un modo de direccionamiento especifica la forma de calcular la dirección de memoria efectiva de un operando
mediante el uso de la información contenida en registros y/o constantes, contenida dentro de una instrucción
de la máquina o en otra parte.
No existe una forma generalmente aceptada de nombrar a los distintos modos de direccionamiento. En
particular, los distintos autores y fabricantes de equipos pueden dar nombres diferentes para el modo de hacer
frente al mismo, o los mismos nombres, a los diferentes modos de direccionamiento.
Además, un modo de direccionamiento que en una determinada arquitectura se trata como un modo de
direccionamiento, puede representar la funcionalidad que en otra arquitectura está cubierto por dos o más
modos de direccionamiento.

Mecanismos de subrutinas.

Las subrutinas son secuencias de instrucciones que se invocan desde un programa para ejecutar una tarea. Una
vez completadas regresan el control al lugar de donde fueron llamadas y pueden ser definidas por el
programador o proporcionadas por el lenguaje de programación. La diferencia principal entre una función y un
procedimiento es que las funciones regresan un valor como resultado de su ejecución mientras que los
procedimientos no lo hacen. Ambos se componen de un cuerpo donde se encuentran las instrucciones que se
ejecutarán y de una cabecera donde se especifica su nombre, sus parámetros y su tipo de retorno (si se trata de
una función). Su propósito principal es encapsular secciones de código que se puede utilizar múltiples veces,
reduciendo el tamaño de los programas, mejorando su legibilidad y facilitando su mantenimiento. A la cabecera
de las subrutinas, así como a su cuerpo se les llama «declaración» mientras que la instrucción en el programa
principal usada para iniciar su ejecución recibe el nombre de «invocación».
E/S e interrupciones.

• Una interrupción por hardware es un mecanismo de comunicación entre el procesador y los dispositivos
de E/S. Sirve para indicar que un dispositivo de E/S tiene datos pendientes de ser tratados. Las
interrupciones por hardware evitan que el sistema operativo tenga que muestrear periódicamente el
estado de los dispositivos de E/S, de manera que son ellos mismos los que indican que hay datos a ser
tratados.

• Una interrupción por software es un mecanismo de comunicación entre un proceso (que se ejecuta en
modo usuario) y el sistema operativo (que se ejecuta en modo supervisor). El proceso emplea las
interrupciones por software para notificar al sistema operativo que requiere de su intervención. En
procesadores x86, para lanzar una interrupción por software un proceso ejecuta la
instrucción int seguida de un número de 16 bits que indica el tipo de interrupción por software. Por
ejemplo, las llamadas al sistema en x86 se implementan mediante interrupciones por software, por
medio de la instrucción int 0x80 (sin embargo, hoy día las arquitecturas de los procesadores modernos
vienen con instrucciones especializadas para la invocación de llamadas al sistema como syscall en x86,
por tanto, esta técnica ha caído en desuso).
Las excepciones son un tipo de interrupción que emplea el procesador para notificar al sistema operativo de un
suceso excepcional, por ejemplo, cuando el proceso realiza la instrucción div para dividir un valor usando como
denominador cero. El tratamiento que generalmente realiza el sistema operativo consiste en terminar con la
ejecución del proceso.
El tratamiento de interrupciones es prioritario, por tanto, en caso de interrupción se deja de ejecutar el proceso
para dar paso al manejador de las interrupciones.

También podría gustarte