Está en la página 1de 41

Introducción a la Arquitectura de

Computadores
Libro: Introducción a la arquitectura de computadores con QtARMSim y Arduino
Sergio Barrachina Mir, Maribel Castillo Catalán Germán Fabregat Llueca, Juan Carlos
Fernández Fernández Germán León Navarro, José Vicente Martí Avilés Rafael Mayo Gual,
Raúl Montoliu Colás
Los primeros procesadores que aparecieron en el
mercado se componían de muy pocos transistores y
con campo muy reducido de aplicaciones.

Se trataba de sencillos microcontroladores


destinados a usos muy específicos y que
básicamente eran empleados en sistemas de control.

Los procesadores cada vez se componen de más


transistores, mejora notablemente su arquitectura e
incorporar técnicas que los hacen más rápidos,
complejos y económicos, a su vez ha propiciado que
su campo de aplicación sea cada vez más extenso.
El procesador es el elemento principal de los
computadores y de muchos dispositivos
electrónicos de gran uso, como agendas,
móviles, dispositivos de uso doméstico, etc.

A continuación se describen los elementos


básicos que componen un PC y sus principios
de funcionamiento.
Componentes de un PC

El modelo de funcionamiento de los PC actuales continúa siendo, con variaciones


poco significativas, el establecido por John von Neumann en 1949, que a su vez se
basó en las ideas de la máquina analítica de Charles Babbage, de 1816.

Estas ideas, con casi doscientos años de antigüedad, materializadas en circuitos


muy rápidos, con miles de millones de transistores, hacen que la informática haya
llegado a ser lo que conocemos hoy en día.

El principio de funcionamiento de los PCs es sencillo. El núcleo del PC transforma y


modifica datos que tiene almacenados, dirigido por una sucesión de órdenes que
interpretar, y que también están almacenadas en él.

El conjunto de órdenes y datos constituye lo que se conoce como programa.

Siguiendo un programa, un PC es capaz de modificar y transformar datos para,


hacer cálculos matemáticos o buscar palabras en un texto, etc.

El PC también dispone de un conjunto de elementos que hacen posible su


interacción con el mundo exterior, lo que le permite recibir los datos de partida y las
órdenes, y comunicar los resultados.
El PC contiene las siguientes 3 clases
de elementos
El núcleo del PC, que recibe el nombre de
procesador, es capaz de encontrar, entender y
mandar a realizar las órdenes, también
llamadas instrucciones.
El procesador es el elemento del PC capaz de:
I) ejecutar las instrucciones codificadas en un
programa, encontrando los datos que se van a
transformar y almacenando el resultado de
dicha transformación;
II) generar las señales eléctricas necesarias
para coordinar el funcionamiento de todo el
sistema.
El elemento que almacena los datos y las instrucciones de un
programa recibe el nombre de memoria.
La memoria se compone de una colección ordenada de
recursos de almacenamiento de manera que cada uno de
ellos se identifica por una dirección.
Cuando la memoria de un PC almacena de forma indistinta
datos e instrucciones, se dice que dicho PC tiene una
arquitectura Von Neumann.

Si existe una memoria específica para almacenar los datos y


otra distinta para las instrucciones, se dice que el PC presenta
una arquitectura Harvard.

El funcionamiento de la memoria de los PC es el mismo


independientemente de la arquitectura elegida.
La entrada/salida (I/O) está formada por el
conjunto de componentes que permiten
relacionar un PC con el mundo exterior.

La comunicación del PC con el exterior es


compleja y admite tanta diversidad como las
aplicaciones actuales de la informática, que
son muchas y no todas implican la
comunicación de datos entre el PC y usuarios
humanos.
La I/O de un PC es igualmente compleja y
variada.
Reformulando el funcionamiento del PC :

El procesador ejecuta un programa, o


secuencia de instrucciones, almacenado en
memoria y transforma un conjunto de datos,
que también está almacenado en la memoria.

La ejecución de determinadas instrucciones


permite la lectura de datos, la presentación de
resultados y en general, la comunicación con
el exterior, que se realiza a través de la I/O
El procesador, el núcleo del PC.

Los 3 componentes anteriores son necesarios para que un PC


funcione, el procesador es el elemento principal del PC,
Interpreta órdenes y genera las señales de control que, rigen
el funcionamiento de todo el sistema.

El conjunto de todas las órdenes que es capaz de ejecutar,


llamado conjunto de instrucciones (instruction set) del
procesador, determina las características del sistema y la
estructura de los programas.

El tamaño y la forma de organizar la memoria, la manera de


interactuar con la I/O, vienen determinadas por el procesador.

El procesador establece las características propias


diferenciales de cada PC, lo que se denomina arquitectura.
Es posible clasificar los procesadores dependiendo de las
características del PC en el que se van a utilizar en:
I) procesadores de altas prestaciones (PAP)
II) procesadores de alta eficiencia energética (PAEE)

Los PAP se utilizan para PC personales o para


supercomputadores destinados a cálculo masivo.

La prioridad en el diseño de procesadores es la ejecución del


mayor número posible de instrucciones u operaciones por
segundo.

El juego de instrucciones de este tipo de procesadores suele


ser muy amplio y frecuentemente proporcionan recursos que
facilitan al sistema operativo la gestión avanzada de la
memoria y la gestión de la multitarea.
Cuales son los procesadores lideres hoy?.
Los PAEE estan destinado a dispositivos alimentados
mediante baterías (teléfonos inteligentes y las tabletas)
que tienen el ahorro energético como uno de sus objetivos
de diseño.

Los principales representantes son los procesadores


basados en la arquitectura ARM.

Algunas versiones de esta arquitectura están


específicamente diseñadas para trabajar con pocos
recursos, optimizar el tamaño de las instrucciones para
ahorrar espacio en memoria y disponer de un juego de
instrucciones simple y sencillo.

Intel tiene una familia de procesadores en este mercado:


los Atom.
Microcontrolador
Hace referencia a un circuito integrado (CI) que incorpora no
solo un procesador sino también las restantes partes del PC,
todo en el mismo CI.

Los microcontroladores están orientados a realizar una o


algunas tareas muy concretas y específicas, como por ejemplo
el control de frenado ABS de un carro o las tareas de un
electrodoméstico cualquiera.

Como ejemplos de microcontroladores están los PIC de la


empresa Microchip o el SAM3X8E, utilizado en las tarjetas
Arduino Due y que incorpora: un procesador ARM Cortex M3
de 32 bits, memoria (512 KiB Flash más 96 KiB SRAM) y un
conjunto de dispositivos de E/S.
Partes del procesador:
La unidad de control (UC)
El camino de datos (CD).

La UC es la encargada de generar y secuenciar las


señales eléctricas que sincronizan el funcionamiento
tanto del propio procesador, mediante señales internas
del circuito integrado, como del resto del PC, con líneas
eléctricas que se propagan al exterior a través de sus
pines de conexión.

El CD, está formado por las unidades de transformación y


de transporte de datos. Es el responsable de almacenar,
transportar y realizar operaciones —sumas, restas,
operaciones lógicas, etcétera— con los datos, siguiendo
la coordinación de la UC.
Componentes de un procesador
Componentes de un procesador

1-Registros
Son elementos de almacenamiento propios del procesador.
Constituyen un elemento interno de almacenamiento que
permiten almacenar una pequeña cantidad de información.

El acceso a su información almacenada es mucho más


sencillo y rápido que el acceso a la memoria.

Los registros pueden clasificarse según su visibilidad en:

Registros de uso interno. Usados internamente por el


procesador, son necesarios para su funcionamiento, pero no
son visibles por el programador.

Registros visibles por el programador. Utilizados


explícitamente por las instrucciones máquina.
Componentes de un procesador-cont

Sean registros internos o visibles al programador, los


registros se pueden clasificar en cuanto a su
funcionalidad como:

Registros de propósito específico.


Entre los registros de propósito específico destacan:
el contador de programa (CP), el registro de
instrucción (RI) y el registro de estado (RE).

Registros de propósito general.


No tienen un cometido predeterminado y se utilizan
como almacenamiento temporal de los datos que se
están procesando en un momento dado.
Componentes de un procesador-cont

2-Unidades de transformación.

Permiten realizar operaciones con los datos.


Son circuitos electrónicos que generan un resultado en función de uno o
varios datos iniciales, son:

Unidad Aritmético-Lógica ( ALU), que suele operar con dos datos de


entrada y que es capaz de realizar sumas, restas y las operaciones lógicas
bit a bit más comunes.

Unidad de Desplazamiento que entrega a su salida rotaciones o


desplazamientos de un número de bits dado, del valor presente a su
entrada.

Unidades que realicen la multiplicación o división de datos enteros, todo


tipo de operaciones sobre datos en coma flotante, u operaciones más
especializadas sobre vectores de datos para tratamiento de señal,
multimedia, gráficos, etcétera.
Componentes de un procesador-cont

3-Circuitos digitales y secuenciadores.

Se encargan de generar, transformar y


distribuir las señales de control que sincronizan
la ejecución de las instrucciones y el
funcionamiento del sistema.

No son importantes para saber qué conjunto


de instrucciones es capaz de interpretar el
procesador, pero sí absolutamente necesarios
para que sea capaz de hacerlo correctamente.
Componentes de un procesador-cont

4-Buses.

Están compuestos por un conjunto de líneas conductoras que


conectan los distintos componentes del procesador por los que fluye
la información como los registros y las unidades de transformación.

Tanto las señales de control como los datos que transforma un


procesador son considerados valores binarios de varios bits —entre
8 y 64 según el tipo de procesador—, que se almacenan y
distribuyen también como señales eléctricas a través de estas
líneas.

Dado el número y el tamaño de los registros y la gran cantidad de


unidades funcionales de los procesadores de hoy en día, los buses
constituyen una parte importante del procesador.
Ejecución de instrucciones

Cuando se enciende un PC, sus circuitos activan de forma adecuada la


señal de inicio del procesador, lo que se conoce como reset.

El procesador comienza a funcionar y, tras un proceso de configuración


interna, ejecuta la primera instrucción, ubicada en una dirección
predeterminada de la memoria —lo que se suele conocer como dirección o
vector de reset—.

A partir de ese momento, y hasta que se detiene su funcionamiento, el


procesador ejecuta una instrucción tras otra y transformando y moviendo
los datos de acuerdo con las instrucciones ejecutadas.

Independientemente de la operación que realicen, todas las instrucciones


se ejecutan siguiendo una serie de pasos que se conocen como fases de
ejecución.

Estas fases son comunes a todos los procesadores, aunque puedan


llevarse a cabo con diferencias en cada uno de ellos, sobre todo en lo que
afecta a su temporización.
Las fases de ejecución de una instrucción reciben el
nombre de ciclo de instrucción y son:
1. Lectura de la instrucción.
El procesador mantiene en uno de sus registros,
contador de programa —CP, la dirección de memoria
de la siguiente instrucción que va a ejecutar.
En esta fase, el procesador envía a la memoria,
mediante los buses de interconexión externos al
procesador, la dirección almacenada en el CP y la
memoria responde devolviendo la instrucción a
ejecutar.
Esta fase también se suele designar en la literatura
como búsqueda de la instrucción. cont
Cont.

2. Decodificación de la instrucción.
El procesador almacena la instrucción recibida de la memoria
en uno de sus registros internos, el RI.
La decodificación consiste en que los circuitos de control
interpreten dicha instrucción y generen la secuencia de
señales eléctricas que permiten ejecutarla específicamente.

3. Incremento del CP.


Para que al terminar la ejecución de la instrucción en curso se
pueda comenzar con la siguiente, el CP debe incrementarse
según el tamaño de la instrucción leída, que es lo que se hace
en esta fase.
Cont
4. Ejecución de la instrucción.
Las fases anteriores son comunes a todas las instrucciones;
las diferencias entre las instrucciones esta en la fase de
ejecución, se descompone en 3 subetapas :
4.1 Lectura de los operandos.
En esta fase se leen los datos que se van a tratar, llamados
normalmente operandos fuente, desde su localización.
4.2 Ejecución.
En esta fase se realiza la transformación de los datos leídos
en una de las unidades del procesador, por ejemplo, una
operación aritmética entre dos operandos fuente obtenidos en
la subetapa anterior.
4.3 Escritura de resultados.
El resultado generado en la fase anterior se almacena en
algún recurso de almacenamiento, que recibe el nombre de
operando destino.
Tipos de instrucciones
Los distintos tipos de instrucciones que puede ejecutar un
procesador son:
Las instrucciones de transformación de datos
Realizan operaciones sobre los datos en alguna de las
unidades de transformación del procesador. Como estas
operaciones requieren operandos de entrada y generan un
resultado, siguen las 3 subfases.
Las instrucciones de transferencia de datos
Copian los datos de unos recursos de almacenamiento a
otros. Lo más común es que se transfieran datos entre los
registros y la memoria, y viceversa, pero también pueden
moverse datos entre registros o, con menos frecuencia, entre
posiciones de memoria.
Las instrucciones específicas que intercambian datos con la
entrada/salida, si existen en una arquitectura, también se
clasifican dentro de este tipo de instrucciones. Cont
Las instrucciones de control del flujo del programa
Alteran el orden de ejecución de las instrucciones de un
programa. Hay instrucciones que pueden modificar el
contenido del CP, siendo este por tanto el operando destino de
dichas instrucciones. Estas son instrucciones de control de
flujo de programa o instrucciones de salto, modifican el
contenido del CP con la dirección efectiva de memoria hacia
donde se quiere desviar la ejecución de un programa.
Este tipo de instrucciones permiten implementar estructuras de
programación condicionales —if, else, switch, etc— o iterativas
—for, while, etc— .
Las instrucciones de control del procesador
Cambian de modo de funcionamiento del procesador, por
ejemplo, entre modo de bajo consumo y funcionamiento
normal, configurar alguna característica como la habilitación
de interrupciones o la forma de gestionar la memoria, etc.
Codificación de instrucciones

La instrucción en sí es un tipo de información que puede


almacenarse en memoria y debe contener indicaciones acerca
de:
i) la operación que debe realizar el procesador,
ii) sus operandos fuente,
iii) el destino del resultado.

La memoria almacena dígitos binarios (bits) agrupados en


conjuntos de 8 que se denominan bytes. Cada una de las
instrucciones que un procesador es capaz de interpretar se
codifica utilizando un cierto número de bytes.
Formatos de instrucción
Un formato de instrucción determina cómo codificar la
información que contiene una instrucción, especificando los
campos en los que se divide el conjunto de bits que forman
dicha instrucción y el tamaño —número de bits— y contenido
de cada campo.
Cada uno de estos campos codifica una información diferente:
i) lo que hace la instrucción, lo que se conoce como código de
operación —opcode
ii) los operandos fuente y destino, que se especifican mediante
lo que se conoce como modos de direccionamiento.

Los datos, tanto fuente como destino, se incorporan separados


por comas y con un formato previamente especificado y fácil
de comprender. Cada instrucción en ensamblador se
corresponde con una en código máquina, si bien aquellas son
texto legible en lugar de bytes en memoria.
Modos de direccionamiento
Los operandos con que va a trabajar una instrucción
pueden residir en tres lugares:
i) en la propia instrucción,
ii) en registros del procesador
iii) en memoria.
Las distintas formas en las que se puede indicar la
dirección efectiva de un operando reciben el nombre
de modos de direccionamiento.
Los modos de direccionamiento que referencian
datos constantes o contenidos en registros son
sencillos. Por otro lado, los que se refieren a datos
almacenados en memoria son muy variados y
pueden ser de gran complejidad.
Modo de direccionamiento inmediato
El operando fuente está codificado en la propia instrucción.
Las ventajas de este modo de direccionamiento son que el
operando está disponible desde el mismo momento en el que
se lee la instrucción y que no es necesario dedicar un registro o
una posición de memoria para albergar dicho operando.

Modo directo a registro


El operando se encuentra en un registro de la arquitectura,
pudiendo de este modo usarse tanto para operandos fuente
como destino.
Una ventaja de usar registros como operandos es que la
referencia a un registro consume muy pocos bits del código de
instrucción comparado con el tamaño del operando contenido
en el registro. Por ejemplo, dada una arquitectura con 16
registros de 32 bits, referenciar a un operando de 32 bits
almacenado en uno de los 16 registros, consumiría únicamente
4 bits de la instrucción.
Modo directo a registro
Modo directo a memoria o absoluto
Es el modo más evidente de referirse a datos en memoria. La
instrucción incorpora en el campo correspondiente la dirección
de memoria del operando, que puede ser fuente o destino.
El consumo de bits de la instrucción de este modo es muy
elevado.

Modo indirecto con registro


Permite referirse a datos en memoria consumiendo tan solo los
bits necesarios para identificar un registro.
Los bits de la instrucción indican el número de un registro, cuyo
contenido es la dirección de memoria en la que se encuentra el
operando, que puede ser fuente o destino. Debido a lo
compacto de este modo, que utiliza muy pocos bits para
referirse a datos en memoria, existen otros modos derivados de
él más versátiles y que se adaptan a ciertas estructuras de
datos en memoria habituales en los lenguajes de alto nivel.
Modo directo a memoria o absoluto
Modo indirecto con registro
Modo indirecto con desplazamiento
El más común de los modos de direccionamiento
derivados del indirecto con registro
En este modo, en la instrucción se especifica,
además de un registro ,una constante que se suma al
contenido de aquel para formar la dirección de
memoria en la que se encuentra el operando.

Modo relativo al Contador de Programa


Este es un caso especial del modo anterior aquel en
el que el registro es el contador de programa.
Es muy utilizado en las instrucciones de salto para
indicar la dirección destino del salto.
Modo indirecto con desplazamiento
Modo indirecto con registro de desplazamiento
Otra variación del modo indirecto con registro , en el que en la instrucción
se especifican dos registros, la suma de los contenidos de los cuales da la
dirección de memoria en la que está el operando.

En algunos casos, el contenido de uno de estos dos registros se multiplica


por el número de bytes que ocupa el operando. Si este es el caso, el
registro cuyo contenido no se modifica se denomina base, y el otro, índice,
por lo que este Modo se llama también base más índice o indexado.

Cuando se tienen ambas cosas, dos registros y una constante, se tiene el


Modo base más índice con desplazamiento. La dirección de memoria
del operando se calcula sumando el contenido de los dos registros,
posiblemente multiplicando el índice más la constante.

Modo se direccionamiento implícito.


algunas instrucciones se refieren a algunos de sus operando sin necesidad
de indicar dónde se encuentran estos en ninguno de sus campos, dado
que están implícitos en la propia instrucción.

También podría gustarte