Logo Studenta

Unit_1_Part_1

¡Este material tiene más páginas!

Vista previa del material en texto

UNIDAD 1: Introducción a la arquitectura de computadoras. 
 
 
1.1 Introducción 
 
La tecnología de computadoras ha progresado increíblemente en los últimos cincuenta 
años. En 1945 no había computadoras con programa almacenado. Hoy, con menos de mil 
dólares es posible comprar una computadora personal con más prestaciones, más memoria 
principal y más memoria en disco que una computadora que en 1965 costaba un millón de 
dólares. 
 
Desde 1985 ha habido una media-docena de nuevas máquinas cuya introducción aparentaba 
revolucionar la industria de la informática; sin embargo estas revoluciones sólo fueron 
ilusorias, porque alguien más construyó una computadora con un mejor rendimiento. 
 
Los avances en la industria de la computación han producido una nueva revolución, la 
revolución de la información que se sitúa a la par con la revolución industrial o con la 
revolución agrícola. 
 
Si la industria del transporte hubiera evolucionado al paso que la industria de la 
computación, por ejemplo, hoy podríamos viajar de costa a costa en 5 segundos por 50 
centavos. 
 
Algunas aplicaciones que hace algunas décadas resultaban como parte de la ficción, hoy en 
día forman parte de nuestra vida diaria, por ejemplo: 
 
• Cajeros automáticos: Una computadora puesta en las paredes de los bancos, para 
distribuir y colectar efectivo, era un concepto ridículo en los 1950’s, cuando la 
computadora más barata costaba al menos $500, 000.00 dólares y era del tamaño de un 
automóvil. 
 
• Computadoras en los automóviles: El control por computadora en los automóviles fue 
absurdo hasta la década de los 1980’s, cuando los microprocesadores mejoraron 
dramáticamente en precio y rendimiento. Actualmente, las computadoras reducen la 
contaminación y mejoran la eficiencia del combustible a través del control de inyectores 
e incrementan la seguridad por medio de los controles de velocidad y el inflado de 
bolsas de aire que protegen a los ocupantes en caso de accidentes. 
 
• Computadoras portátiles: Esto sólo podía ocurrir en sueños, sin embargo los avances en 
los sistemas de cómputo permiten llevar las computadoras prácticamente a cualquier 
sitio. 
 
• El proyecto del genoma humano: El costo del equipo de cómputo necesario para 
monitorear las secuencias de DNA humano fue de algunos millones de dólares. Es poco 
probable que alguien hubiera considerado este proyecto si el costo fuera de 10 a 100 
veces más alto, como ocurría hace 15 o 25 años. 
 
• Internet: Actualmente el Internet esta transformando nuestra sociedad, entre sus usos 
están la distribución de noticias, compras desde catálogos en línea, planeación de 
vacaciones, envío de flores, encontrar a otros que compartan los mismos intereses, etc. 
 
Claramente los avances en la tecnología de las computadoras afectan casi todos los 
aspectos de nuestra sociedad. Los avances en hardware han permitido a los programadores 
crear software increíblemente útil. Algunas aplicaciones que son ficción para el mañana 
son: La sociedad sin efectivo, autopistas inteligentes y el cómputo auténticamente ubicuo: 
no llevar computadoras por que ellas estarán disponibles en donde sea. 
 
En la década de los 1960’s y 1970’s, una restricción primaria sobre el rendimiento del 
cómputo fue el tamaño de la memoria de las computadoras. Los programadores obedecían a 
un credo simple: Al minimizar el espacio de memoria se hacen programas más rápidos. En 
la última década, los avances en el diseño de las computadoras y en la tecnología de las 
memorias han reducido la importancia de la memoria pequeña. 
 
Los programadores interesados en el rendimiento ahora necesitan entender los tópicos que 
han reemplazado al modelo simple de memoria de los 1960’s: La naturaleza jerárquica de 
las memorias y la naturaleza paralela de los procesadores. Los programadores que busquen 
construir versiones competitivas de compiladores, sistemas operativos, bases de datos, etc., 
deberán contar con conocimientos de la organización de las computadoras. 
 
1.2 Abstracciones en software 
 
Tanto en Hardware como en software encontramos abstracciones, es decir, un conjunto de 
capas jerárquicas donde la capa de un nivel mas bajo oculta detalles a la capa siguiente. 
El principio de abstracción es la forma en que los diseñadores de hardware y software se las 
arreglan con la complejidad de los sistemas de cómputo. 
 
Para entender las abstracciones existentes en software, primeramente explicaremos lo que 
hay debajo de un programa. 
 
Para “hablarle” a una máquina electrónica, sería necesario enviarle señales eléctricas. Las 
señales que las máquinas entienden fácilmente son “encendido” y “apagado”, de modo que 
el alfabeto de las máquinas solo se forma por dos letras. Así como las 27 letras del alfabeto 
español no nos limitan cuanto puede ser escrito, con las dos letras del alfabeto de las 
computadoras no les establece un límite de lo que se puede hacer con ellas. Los dos 
símbolos para estas dos letras son los números 0 y 1, por lo que comúnmente consideramos 
como el lenguaje de las máquinas a los números en base 2, o números binarios. A cada 
“letra” la referimos como un dígito binario o bit. 
 
Las computadoras son esclavas de nuestros comandos; y el nombre de un comando 
individual se denomina instrucción. Las instrucciones son una secuencia de bits que la 
computadora entiende, pueden ser pensadas como números. Por ejemplo, los bits: 
 
1000110010100000 
 
Le dicen a una computadora que sume dos números. Un fundamento del cómputo es el uso 
de números para instrucciones y datos, esto se revisará con mayor detalle en la Unidad 2. 
 
La programación de computadoras con números binarios es bastante tediosa y expuesta a 
errores, por lo que fue necesaria la invención de nuevas notaciones más cercanas a la forma 
de pensar de los humanos. Las primeras notaciones se trasladaban a binario a mano, pero 
los pioneros de la computación se preguntaron ¿Por qué no utilizar a la máquina para 
programar a la máquina?, Pronto se crearon programas encargados de trasladar de notación 
simbólica a binario. Al primero de estos programas se le denominó ensamblador. Por 
ejemplo, para sumar dos números el programador escribía en notación simbólica: 
 
 add A, B 
 
y el ensamblador lo trasladaría a 
 
1000110010100000 
 
El nombre acuñado para este lenguaje simbólico, aún usado actualmente, es lenguaje 
ensamblador. 
 
Sin embargo el lenguaje ensamblador aún se encuentra lejos de la forma de pensamiento 
humano, y aunque es fácilmente entendible para los profesionistas dedicados a la 
computación, no es un lenguaje que permita a los físicos expresar el comportamiento de un 
fluido o a los contadores organizar sus libros de balances. El lenguaje ensamblador requiere 
que el programador escriba una línea por cada instrucción que la máquina ejecutará, 
forzando al programador a pensar como la máquina. 
 
Una simple pregunta se hicieron los pioneros de la computación: Si fue posible construir un 
programa que traslade de notación simbólica a instrucciones binarias, para simplificar la 
programación ¿Qué impide la creación de un programa que traduzca de un lenguaje más 
cercano al pensamiento humano a lenguaje ensamblador?, la respuesta fue: Nada. A estos 
programas se les conoce como compiladores y a los lenguajes que ellos compilan se les 
conoce como lenguajes de programación de alto nivel. En un lenguaje de alto nivel el 
programador escribiría la expresión: 
 
A + B 
 
El compilador debería compilar la instrucción a lenguaje ensamblador: 
 
add A, B 
 
Y el ensamblador lo traduciría a : 
 
1000110010100000 
 
En la figura 1 se muestra la relación entre estos programas y lenguajes. 
 
 
 
 
Fig. 1 – Programa en C compilado al Lenguaje ensamblador y después ensamblado a lenguaje de máquina 
binaria. 
 
Los lenguajes de programación de alto nivel ofrecen diferentes beneficios: Primero, 
permiten al programador pensar en un lenguaje mas natural, usando palabras en ingles y 
notación algebraica.Más aún, los lenguajes se han diseñado de acuerdo a su uso inherente, 
así Fortran fue creado para cómputo científico, Cobol para procesamiento de datos de 
negocios, Lisp para manipulación simbólica, etc. 
 
La segunda ventaja es que se mejora la productividad del programador, por que para 
expresar una idea se escriben menos líneas en un lenguaje de alto nivel, en lugar de 
expresar la idea en lenguaje ensamblador. 
 
La ventaja final es que estos lenguajes de programación permiten a los programas ser 
independientes de la computadora en la cual fueron escritos, dado que los compiladores y 
ensambladores pueden trasladar los programas en lenguajes de alto nivel a instrucciones 
binarias de cualquier máquina. 
 
Estas tres ventajas son tan fuertes que actualmente poca programación se escribe en 
lenguaje ensamblador. Cuando un programador escribe un programa en un lenguaje de alto 
nivel, puede olvidarse de lo que hay por debajo, es decir, puede ignorar la notación del 
lenguaje ensamblador, y mejor aún, puede ignorar el código binario, en otras palabras, esta 
utilizando una abstracción. 
 
Como era natural, los programadores notaron que el reutilizar al software es más eficiente 
que iniciar con un programa desde cero. De aquí que los programadores hagan uso de 
varias rutinas que se encuentran en diferentes librerías. Una de las primeras librerías 
contenía rutinas de entrada y salida de datos, la cual incluía, por ejemplo, rutinas para 
controlar impresoras, que aseguraban que la impresora tuviera papel antes de iniciar la 
impresión. Tal software controlaba dispositivos de entrada y salida como discos 
magnéticos, cintas magnéticas y pantallas de video. 
 
Pronto se descubrió que los programas se ejecutaban en forma eficiente si existía otro 
programa encargado de supervisar su ejecución. Cuando terminaba una tarea, el programa 
supervisor iniciaba con la siguiente, evitando pérdidas de tiempo. Estos programas 
supervisores también incluían librerías con rutinas de entrada/salida, y son la base de los 
sistemas operativos actuales. Los sistemas operativos son programas que manejan los 
recursos de una computadora para el beneficio de los programas que corren en esa 
máquina. 
 
Puede notarse que desde el momento que se carga al sistema operativo, el usuario de 
computadoras trabaja sobre una abstracción, puesto que todos sus programas trabajan sobre 
una plataforma establecida, de la cual el programador puede ignorar los detalles que hay 
por debajo. 
 
Otra abstracción la encontramos en la clasificación del software. El software se clasifica 
por su uso, al software que proporciona servicios que son comúnmente útiles se le llama 
Software de Sistema, los sistemas operativos, compiladores y ensambladores son ejemplos 
de software de sistemas; son programas de interés para los programadores. En contraste, al 
software dedicado a resolver problemas específicos de los usuarios se le denomina Software 
de Aplicación. Por ejemplo, editores de textos, programas de dibujos, etc. En la figura 2 se 
muestra al software organizado como capas jerárquicas, mostrando el ámbito donde cada 
capa se desenvuelve. El usuario de computadoras sólo se concreta en aplicaciones e ignora 
al software del sistema. Mientras que el programador puede abarcar las dos capas más altas 
e ignorar lo que hay en el hardware. Por lo tanto, nuevamente tenemos abstracciones. 
 
Fig. 2 – Una vista simplificada del Hardware y Software como capas jerárquicas 
 
 
 
 
Fig. 3 – Un ejemplo de la clasificación del Software. 
 
 
 
La vista simplificada del software por capas genera algunos conflictos, por ejemplo en el 
caso de los compiladores, los compiladores son utilizados para producir programas, tanto 
aplicaciones como software de sistema. Sin embargo, cuando una aplicación se esta 
ejecutando, ya no requiere del compilador. Por lo que el software de aplicaciones no puede 
estar como una capa monolítica ubicada sobre el software de sistemas. Para ello se han 
dado otro tipo de clasificaciones, como la que se muestra en la figura 3, no obstante, en esta 
nueva clasificación para el software también se encuentran abstracciones. 
 
 
1.3 Abstracciones en hardware 
 
En hardware también encontramos abstracciones, un usuario de computadoras se olvida de 
las partes que componen a la computadora y la utiliza como un sistema conjunto, como una 
herramienta que le ayudará a resolver problemas diversos. En la figura 4 mostramos a una 
computadora típica de escritorio con sus diferentes elementos: Teclado, ratón, pantalla, 
bocinas y el gabinete, que internamente contiene mas hardware. 
 
 
 
Fig. 4 – Computadora típica de escritorio. 
 
 
Sin embargo usuarios mas avanzados podrían abrir el gabinete, para encontrar mas 
elementos de hardware: La tarjeta madre (una tarjeta verde con diferentes elementos 
conectados), el disco duro, la unidad de disco flexible, la unidad de disco compacto, la 
fuente de alimentación y los cables de conexiones. 
 
El ensamblador de computadoras puede olvidarse de lo que contiene cada uno de estos 
elementos y utilizarlos para ensamblar una computadora, es decir, el ensamblador de 
computadoras trabaja sobre otro conjunto de abstracciones. 
 
 
Pero podríamos ir observando con mayor detalle a los elementos que están dentro del 
gabinete, por ejemplo a la tarjeta madre, ésta contiene diferentes elementos: Al procesador 
(o CPU), la DRAM, la ROM, puertos, etc. En la figura 5 se muestra la organización típica 
de una tarjeta madre de una PC. 
 
 
Fig. 5 – Tarjeta madre de una PC. 
 
 
 
El procesador es la parte activa de la tarjeta madre, sigue las instrucciones de un programa 
al pie de la letra. Suma números, prueba números, activa señales de dispositivos de I/O, etc. 
Los programas se almacenan en memoria secundaria (disco magnético o disco compacto) y 
para su ejecución deben ser transferidos a memoria principal (la DRAM). 
 
No es el objetivo de esta sección explicar detalladamente el funcionamiento de los 
elementos que integran a la tarjeta madre, pero basta explorar un poco para encontrar mas 
detalles de funcionamiento, es decir, revisar un nivel jerárquico mas bajo. 
 
Como muestra, exploremos un poco al procesador (típicamente conocido como CPU). El 
procesador Pentium de Intel contiene las unidades funcionales siguientes: El camino de los 
datos -para enteros y punto flotante-, el control, la memoria caché –para instrucciones y 
datos-, y el control de los saltos. En la figura 6 se muestra la distribución es estos bloques 
funcionales. 
 
El área del chip es de 91 mm2 y contiene cerca de 3.3 millones de transistores; la memoria 
caché ocupa al menos 1 millón de transistores. 
 
 
 
 
Fig. 6 – Dentro del procesador Intel Pentium. 
 
Es conveniente notar que al hacer referencia a los bloques funcionales y no a las 
compuertas lógicas, o directamente al número de transistores, se están utilizando más 
abstracciones. 
 
Los circuitos integrados son una de las abstracciones mas importantes de la electrónica, por 
debajo de un circuito integrado se oculta todo el proceso que requiere para su fabricación, 
desde que se toma una barra de silicio hasta que se empaquetan los chips. En la figura 6 se 
muestra en forma representativa el proceso de manufactura de los chips. 
 
Y aún llegando al silicio encontramos algunas abstracciones que nos ocultan las 
propiedades físicas de este elemento o bien de las impurezas que se le agregan para formar 
los diferentes materiales. 
 
En conclusión, el desarrollo de hardware y software está lleno de abstracciones; y entre 
todas ellas existe una que es de interés para este curso (y en general para los desarrolladores 
de computadoras). La abstracción de interés es aquella en la que el hardware se relaciona 
con el software de bajo nivel y se denomina: Arquitectura de un repertorio de instrucciones 
o simplemente Arquitectura de una computadora. 
 
La arquitectura establece los principios sobre los cuales se diseña una computadora: Su 
repertoriode instrucciones, el tamaño de los datos, el número de registros, etc. Y sobre una 
misma arquitectura se estudiarán diferentes implementaciones que pueden variar en costo y 
rendimiento, pero que ejecutan el mismo software. 
 
 
Fig. 7 – Proceso de manufactura de los circuitos integrados. 
 
 
Además, como una abstracción, se representa a una computadora con cinco componentes 
clásicos: Entradas, salidas, memoria, camino de los datos y control, por lo general los 
últimos dos componentes se combinan y se les denomina procesador. 
 
Esta representación se muestra en la figura 8 y es una representación estándar, 
independientemente de la tecnología. Los diferentes elementos de una computadora actual 
o del pasado, caen dentro de alguna de estas categorías. 
 
 
Memoria
Entrada
Salida
Procesador
Control
Camino
de los
datos
 
Fig. 8 – Cinco componentes clásicos de una computadora. 
TAREA 1 
 
1.- Si la industria del transporte hubiera evolucionado al paso que la industria de la 
computación ¿Cuál sería el costo aproximado de un automóvil y cual sería su velocidad 
máxima?, investigar en Internet el costo y velocidad aproximada del primer automóvil y de 
la primera computadora electrónica (en la computadora consideremos el número de 
instrucciones por segundo) y de acuerdo a las características de las nuevas computadoras 
estimar las características que se deberían tener en el automóvil. 
 
2.- Explica con tus propias palabras que es una abstracción, y en un par de objetos de la 
vida diaria: automóvil, casa, televisión, etc., ilustra el uso de abstracciones. 
 
Los siguientes ejercicios se tomaron directamente del texto (se sugiere revisarlo para 
responder adecuadamente): 
 
3. Encontrar la palabra o frase de la lista siguiente que mejor corresponda a la descripción 
de las siguientes preguntas. Utilizar en la respuesta las letras a la izquierda de las palabras. 
Cada respuesta debe utilizarse sólo una vez. 
 
a) abstracción 
b) ensamblador 
c) número binario 
d) bit 
e) caché 
f) CPU (unidad central de proceso) 
g) chip 
h) compilador 
i) familia de computadores 
j) control 
k) camino de datos 
l) defecto 
m) dado 
n) DRAM (memoria dinámica de 
acceso aleatorio) 
o) implementación 
p) instrucción 
q) arquitectura del repertorio de 
instrucciones 
r) circuito integrado 
s) memoria 
t) sistema operativo 
u) procesador 
v) semiconductor 
w) supercomputador 
x) transistor 
y) VLSI (circuito integrado de muy 
alta escala) 
z) aprovechamiento (yield) 
 
[ ]. Abstracción especifica que el hardware proporciona al software de bajo nivel. 
[ ]. Parte activa del computador que sigue las instrucciones del programa al pie de la letra: 
suma números, examina números, etc. 
[ ]. Otro nombre para procesador. 
[ ]. Aproximación al diseño hardware o software. El sistema está formado por capas 
jerárquicas, en las que cada capa de nivel inferior oculta detalles de la capa de nivel 
superior. 
[ ]. Número en base 2. 
[ ]. Dígito binario. 
[ ]. Colección de implementaciones de la misma arquitectura del repertorio de 
instrucciones que están disponibles a la vez y varían en precio y rendimiento. 
[ ]. Componente del procesador que realiza operaciones aritméticas. 
[ ]. Componente del procesador que indica al camino de datos, memoria y dispositivos de 
E/S lo que deben hacer de acuerdo con las instrucciones del programa. 
[ ]. Hardware que obedece la abstracción de la arquitectura del repertorio de instrucciones. 
[ ]. Máquina de alto rendimiento que cuesta más de un millón de dólares. 
[ ]. Orden individual para un computador. 
[ ]. Circuito integrado normalmente utilizado para construir la memoria principal. 
[ ]. Integra desde docenas hasta cientos de transistores en un solo chip. 
[ ]. Integra desde cientos de miles hasta millones de transistores en un solo chip. 
[ ]. Localización de los programas cuando se están ejecutando, también contiene los datos 
que necesitan. 
[ ]. Defecto microscópico en una oblea. 
[ ]. Apodo para un dado o circuito integrado. 
[ ]. Conmutador «on-off» controlado por electricidad. 
[ ]. Porcentaje de dados buenos del número total de dados de la oblea. 
[ ]. Programa que gestiona los recursos del computador en beneficio de los programas que 
corren en esa máquina. 
[ ]. Programa que traduce una versión simbólica de una instrucción a la versión binaria. 
[ ]. Programa que traduce una notación de más alto nivel al lenguaje ensamblador. 
[ ]. Componente rectangular que se obtiene al trocear una oblea. 
[ ]. Memoria pequeña rápida que actúa como buffer para la memoria principal. 
[ ]. Sustancia que no conduce bien la electricidad. 
 
4. Utilizando las categorías de la tabla siguiente, clasificar los siguientes ejemplos. 
Utilizar en la respuesta las letras a la izquierda de las palabras. De forma distinta al 
ejercicio anterior, las respuestas de la tabla pueden utilizarse más de una vez. 
 
 
 
 
 
a) software de aplicaciones 
b) lenguaje de programación de alto 
nivel 
c) dispositivo de entrada 
d) circuito integrado 
e) mini computadora 
f) dispositivo de salida 
g) computador personal 
h) semiconductor 
i) supercomputador 
j) software del sistema 
 
 
 
[ ]. Apple 11. 
[ ]. Ensamblador. 
[ ]. Compilador. 
[ ]. Cray 1. 
[ ]. DRAM. 
[ ]. Fortran. 
[ ]. IBM PC. 
[ ]. Teclado. 
[ ]. Microprocesador. 
[ ]. Ratón. 
[ ]. Sistema operativo. 
[ ]. Pascal. 
[ ]. PDP-8. 
[ ]. Impresora. 
[ ]. Pantalla de tubo de rayos catódicos. 
[ ]. Silicio. 
[ ]. Hoja electrónica. 
[ ]. Editor de textos.

Continuar navegando

Materiales relacionados

259 pag.
162 pag.
DO-FIN-EE-MT-UC0111-20162

SIN SIGLA

User badge image

Mucha Aprendizaje

141 pag.
informa1

SIN SIGLA

User badge image

Elizabeth de los Santos

76 pag.
Manual de informática

User badge image

Cecilia Cabrera Vera