You are on page 1of 7

Organizacin Estructurada de la Computadora

Los circuitos elecrnicos de una computadora puden reconocer y ejecutar


directamente un set simple de instrucciones en las que se debern convertir todos los
programas antes de ser ejecutados. Estas instrucciones forman un lenguaje que
permite comunicarnos con la computadora. Este lenguaje se lo conoce como Lenguaje
Mquina, y es lo ms simple posible.
Dada la simplicidad de estos lenguajes resulta difcil y tedioso programar en
ellos. Esta observacin ha llevado, en el transcurso del tiempo, a estructurar las
computadoras en una serie de abstracciones. El problema puede ser atacado
fundamentalmente de dos maneras, ambos casos implican definir un nuevo set de
instrucciones que sea mas familiar para el programador que el set de instrucciones
mquina. Estas instrucciones constituyen un nuevo lenguaje L1, as como las
instrucciones construidas en hardware forman un lenguaje L0.
Uno de los mtodos de ejecutar un programa escrito en L1 es reemplazar
primero cada instruccin en L1 por la secuencia equivalente en L0. La computadora
ejecuta luego un nuevo programa L0 en lugar del viejo L1. Durante la ejecucin, ser
el nuevo programa generado en L0 el que est corriendo y est a cargo del control de
la computadora. Esto se denomina translation.
La otra tcnica es escribir un programa en L0 que toma al programa L1 como
dato de entrada, examina en orden cada instruccin ejecutando la secuencia
equivalente de L0 directamente. Esto no requiere la generacin de un nuevo programa
en L0. Esto se denomina interpretation y el programa que lo realiza se llama
intrprete.
Mas que pensar en trminos de traduccin o interpretacin, es a menudo mas
conveniente imaginar la existencia de una mquina virtual cuyo lenguaje sea L1. Si esa
mquina se puede construir en forma econmica, no habra necesidad de tener a L0.
En otras palabra, la gente podr escribir programas para la mquina virtual cmo si
esta realmente existiera.
Para que la traduccin o la interpretacin sea prctica L0 y L1 no deben ser muy
diferentes. Esto significa que L1, aunque mejor que L0, an estar lejos de ser el
lenguaje ideal para las aplicaciones. La solucin lgica es inventar un nuevo lenguaje
L2, con su set de instrucciones, que sea ms orientado a la gente y menos a la
mquina de lo que lo es L1. La creacin de una serie de nuevos lenguajes, cada uno
ms complejo que su predecesor, podr ir indefinidamente hasta que el ideal sea
alcanzado.
Podramos mencionar un nivel adicional, por debajo de L0, un device level
donde se trabaja con transistores.
El nivel 0, el Digital Logic Level, sera el verdadero lenguaje mquina, que
trabaja con compuertas con input y output digital (0s y 1s).
El nivel 1, el Microarchitecture Level, tendr un conjunto de registros y una
ALU, conectados con un data path a traves del cual fluyen los datos. En algunas
mquinas el data path es controlado por un microprograma, que ser el intrprete de
las intrucciones del nivel 2; en otras, el control se da por hardware. Las computadoras
del tipo RISC (Reduced Instruction Set Computer) no tienen nivel de
microprogramacin. En estas el nivel mquina convencional es llevado a cabo
directamente por la electrnica. Aunque inicialmente se pensaba que lo importante era
que las instrucciones se ejecuten rpidamente, se dieron cuenta que la clave para una
buena performance era que las instrucciones se empezaran, issued, rpidamente.
Cunto tarde la instruccin en terminar su ejecucin importar menos que cuntas
instrucciones puedo comenzar por segundo.
El nivel 2, llamado Instruction Set Architecture Level, que consiste en la
serie de instrucciones que sern interpretadas por el microprograma o el circuito de

hardware.
El nivel 3, llamado Operating System Machine Level, es en general un nivel
hbrido. Hay un set de instrucciones, una organizacin de memoria diferente, la
posibiladad de correr dos o ms programas de forma concurrente, y otras
caractersticas. Las nuevas operaciones incluidas en el nivel 3 sern llevadas a cabo por
el intrprete del nivel 2, llamado el sistema operativo. Aquellas instrucciones del nivel 3
idnticas a las del nivel 2 sern llevadas a cabo por el microprograma (o hardwired
control).
El nivel 4, llamado el Assembly Language Level, es en realidad una forma
simblica de los lenguajes subyacentes. Los programas en lenguaje ensamblador son
traducidos primero a nivel 2 o 3 y luego interpretados por la mquina virtual o real
adecuada. El programa que realiza la traduccin se denomina Assembler.
El nivel 5 consiste de lenguajes diseados para ser usados por los
programadores. Se los conoce como lenguajes de alto nivel. Los programas escritos
en estos lenguajes, generalmente se traducen a nivel 3 o 4 por traductores conocidos
como Compiladores, aunque en ocasiones son interpretados, como Java.
El nivel 6 consiste en un conjunto de programas diseados para mquinas
orientadas especficamente a ciertas aplicaciones. Todava estn desarrollo.
Los niveles 1, 2 y 3 no fueron diseados para uso directo del programador, sino
que fueron creados para que corran los intrpretes y traductores necesarios para
soportar los niveles superiores (se entienden en 0s y 1s). Los niveles 4 en adelante,
fueron pensados para los programadores de aplicaciones (se entienden con nombres
memnicos naturales para el programador). Los niveles 2 y 3 son siempre
interpretados, en cambio, los niveles iguales o mayores a 4 son usualmente, aunque no
siempre, traducidos.
Evolucin de las Mquinas Multinivel
Las primeras, remontndose a los 1940's, tenan solo dos niveles: el ISA (L2) en
el cual se realizaba la programacin y digital lgico (L0) donde eran ejecutados. Estos
eran complicados, difciles de construir y poco confiables.
En 1951, Wilkes sugiere la idea de disear una computadora en tres niveles, en
camino a simplificar drsticamente el Hardware. La mquina tendra un intrprete
propio, microporgramado, incambiable, cuya funcin seria ejecutar los programas del
nivel ISA. Ya en los 70's la idea de hacer que en nivel ISA sea interpretado por un
microprograma result dominante y los diseadores se dieron cuenta que podan
agregar nuevas instrucciones extendiendo el microprograma. Es decir, podan agregar
hardware programando (ej. Inc Reg A). La microprogramacin sustent el auge de las
arquitecturas CISC (Complex Instruction Set Computer). En esos tiempos, la memoria
era escasa, luego el inters por almacenar instrucciones poderosas.
Con la aparicin de las memorias semiconductoras se fue superando la cuestin
de capacidad y velocidad. Por otro lado, los microprogramas tubieron problemas de
velocidad, lo que los tornaron inviables. Finalmente, unos investigadores se dieron
cuenta que elminando el microprograma, reduciendo el set de instrucciones y haciendo
que el restante de las instrucciones se ejecuten directamente (hardwired control) se
poda aumentar la velocidad. Como conclusin de esto se produce un reeplanteo de las
arquitetcuras, surgiendo la filosofa RISC (Reduced Instruction Set Computer). Las
reglas de diseo RISC son sencillas: todas las instrucciones son ejecutadas
directamente por el hardware, nuna interpretadas; hay que maximizar la cantidad de
instrucciones que pueden ser iniciadas (issued); la sinstrucciones deberan ser fcil de
decodificar (de formato fijo y regular, con un pequeo nmero de campos); slo las
instrucciones Load y Store tendrn acceso a memoria; hay que proveer muchos
registros (los necesarios).

Adems, en esa poca, el programador tena que lidiar con la mquina


manualmente, lo cual induca a que la computadora estuviera mucho tiempo ociosa.
Alrededor de 1960, se trat de reducir este tiempo perdido automatizando la tarea de
operacin. Un programa llamado Sistema Operativo se mantena en la computadora
todo el tiempo de manera tal que el programador suministraba ciertas tarjetas de
control junto con su programa para ser interpretados.
En los aos siguientes los Sistemas Operativos se tornaron ms y ms
sofisticados, incorporando nuevas caractersticas al nivel ISA, hasta que empez a
tener la apariencia de un nuevo nivel. Alguna de las instrucciones del nuevo nivel
idnticas a las del nivel ISA, pero otras, particularmente instrucciones de Input/Output,
fueron completamente distintas. Las nuevas instrucciones son conocidas actualmente
comp System Call.
Generaciones
Las computadoras de la generacin cero eran mecnicas y relativamentes
simples. El estmulo por las computadoras electrnicas surgi con las Segunda Guerra
Mundial, el COLOSSUS fue la primer computadora electrnica digital. La primera
generacin (1945-1955), funcionaba con tubos al vaco. Es en esta poca que surge la
IAS machine de John Von Neumann. Una cosa que result evidente para Von Neumann
era que programar computadoras con un gran nmero de cables y llaves, tal cual era la
metodologa empleada en esa poca, adems de tedioso era inflexible. El imagin que
el programa podra ser almacenado en la memoria de la computadora en forma digital,
junto con el dato. Adems, que la aritmtica decimal podra reemplazarse por
aritmtica binaria. Esquemticamente este modelo sera:

La segunda generacin (1955-1965) se desarroll en funcin de los transistores


creados por Bell Labs. Aqu es cuando surge la PDP-1 que luego llev a la PDP-8, que
introdujo un nuevo concepto: el bus. Tambin surgi la 6600 de CDC, que tena varias
unidades funcionales que podan trabajar en paralelo; aunque utilizarla a su mximo
potencial requera una programacin cuidadosa, se poda lograr hasta 10 instrucciones
ejectuadas a la vez.
La tercera generacin (1965-1980) se di gracias a los circuitos integrados que
permitan docenas de transistores en un mismo chip. Esto permiti cosntruir
computadoras que eran ms pequeas, ms rpidas y ms baratas que sus
predecesoras. Es ac cuando surge la idea de familias de mquinas. Debido a la
incompatibilidad de los modelos 7094 y 1401, IBM decidi generar una lnea
System/360 tanto para uso cientfico como comercial. La 360 innov con
multiprogramming, tener ms de un programa en memoria a la vez, y la emulacin de
otras computadoras.
La cuarta generacin (1980 en adelante) se bas en los Very Large Scale
Integration. Gracias a los VLSI, los costos bajaron, y surgieron las computadoras
personales.
La Unidad Central de Proceso
La computadora, tal cual esta organizada hoy da, no difiere mucho del modelo
que concibi Von Neumann. Las principales diferencias es que usa Registros en ves de

un Acumulador. Los componentes estn unidos por u bus, que es una coleccin de
cables para transmitir datos de direcciones, datos y seales de control. Los buses
pueden ser externos al CPU, conectndolo a memoria y perifricos de I/O, e internos.
La Central Procesing Unit es el cerebro de la
computadora. Su funcin es ejecutar programas
almacenados
en
memoria,
buscando
instrucciones,
examinando
las
mismas
y
ejecutando una tras otra. Est compuesta de
distintas partes. La Unidad de Control es la
responsable de organizar las distintas tareas del
CPU, se encargar del fetch de instrucciones y la
decodificacin. La ALU realiza las operaciones
aritmticas necesarias en la ejecucin de
instrucciones.
El CPU contiene adems una pequea memoria rpida usada en el
almacenamiento de resultados temporarios y de cierta informacin de control. Esta
memoria consiste en un dado nmero de registros, cada uno con una cierta funcin. El
ms importante es el PC, Program Counter, que guardar la direccin de la prxima
instruccin. Otro registro importante es el IR, Instruction Register, el cual guarda la
instruccin que se trae de memoria para ser ejecutada. Hay dos categoras de
registros: los internos, que el software no ve y se usan para soperte del sistema; y los
generales que si los ve el software.
Al nivel del CPU podemos distinguir dos sistemas: el Data Path, parte pasiva, que
involucra registros, ALU y buses internos; y el Control Path, parte activa, que
determina la secuencias de accioneas a ejecutar sobre el Data Path.
Ejecucin de Instrucciones: El CPU ejecuta cada instruccin en una serie de pasos:
1.
Fetch: Bsca la prxima instruccin en memoria memoria y se carga en el IR (l
CPU dialoga solamente con memoria).
2.
Cambia el PC para apuntar a la prxima instruccin.
3.
Decode: Determina el tipo de instruccin de la que acaba de traer.
4.
Si la instruccin usa datos en la memoria, determina donde esta, clculo de la
direccin efectiva.
5.
Busca el dato, si lo hubiera, y lo transfiere a un registro interno.
6.
Execute: Ejecuta la instruccin.
7.
Almacena el resultado en el lugar adecuado (esto ser etapa Mem o WB).
8.
Vuelve al paso 1 para comenzar a procesar la prxima instruccin.
Esta secuencia es reconocida como Fetch-Decode-Execute Cycle.
Las instrucciones las podemos dividir en tres categoras: registro-memoria, registroregistro, memoria-memoria. Registro-memoria permite que palabras de memoria sean
transferidas, cargadas, en registros, los que podrn ser usados posteriormente como
operandos en la ALU. Las registro-registro normalmente buscan operandos en los
registros, los transfieren a la ALU, esta los opera y luego se realiza el almacenamiento
del resultado en un dado registro. Memoria-memoria, busca sus operandos en
memoria, realiza la operacin y luego retorna el resultado a memoria.
Memoria
Es un conjunto de celdas o locaciones con una direccin que est fijada
(address). La celda es la menor unidad a la que puedo direccionar. Si la direccin tiene
M bits, el mximo nmero de celdas resulta 2M. El nmero M tiene que ver con el
mximo nmero de celdas a direccionar directamente en memoria y es independiente
del nmero de bits por celda. En los ltimos aos se estandariz que una celda de 8

bits se define como byte. Los bytes, a su vez, se agrupan en palabras. En general las
intrucciones operan con palabras (conj. de byes).
La memoria se la refiere en al jerga como RAM, Random Access Memory (cada
vez es menos random). Cualquiera que sea la locacin a la que accede, el tiempo ser
el mismo, independientemente de los accesos previos. Otro tipo de acceso es el Acceso
Directo, este se diferencia del RAM, a pesar de que ambos buscan directamente la
locacin deseada, en el hecho que el tiempo de acceso depender de qu estoy
accediendo y qu contenido acced previamente. Un tercer tipo de acceso es el
secuencial, que recorre todas las locaciones hasta encontrar la deseada.
Una cuestin a considerar es con que granularidad se direcciona en la memoria,
tpicamanete, se direcciona al byte. Una direccin ser entonces un puntero a un byte
de memoria. Los bytes en memoria podrn ser numerados, direccionados dentro de la
palabra, de izquierda a derecha o viceversa.
address
0
4
8
12

Big Endian
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15

address
Little Endian
3 2 1 0
0
7 6 5 4
4
11 10 9 8
8
15 14 13 12
12

address
0
4
8
12
16

J
S
H
0
0

Big Endian
I M
M I T

address
Little Endian
M I J
0
T I M S
4
H
8
0 0 0 21
12
0 0 1 4
16

0
0

0
1

21
4

Transferencia de Big a Little


M I J 0 El byte 0 de big se
T I M S 4 direcciona al 0 de little, de
H 8 manera que el String se
mantiene ordenado, pero
21 0 0 0 12 ell valor numrico se ver
4 1 1 0 16 invertido.

Si se direcciona de izq. a derecha se trata de Big Endian; si en cambio, es de


derecha a izq. se trata de Little Endian. La complicacin surge en el momento en que
las computadoras dejan de estar aisladas y se comunican con diferente ordenamiento
al byte, esto llevar a una mezcla de datos.
La solucin no es simple, un modo sera que para la transmisin se usara una
forma considerada estndar, asumida por todas las mquinas. Esto resultar
innecesario en algunos casos, dado que las dos mquinas podran usar el mismo
ordenamiento, distinto al estndar. Otra solucin, ineficiente, sera incluir un
encabezamiento que indique el tipo de dato y cun largo es. Esto posibilita que el
Receptor realice la conversin necesaria.
Deteccin y Correccin de Errores
En los procesos de almacenamiento, transmisin, escritura de datos se pueden
producir errores. Con la deteccin de errores aseguramos la integracin de la
informacin (sirve para no seguir adelante en la ejecucin si sabe el dato es errneo);
con la correccin hay una tolerancia al fallo. Si se aplica deteccin o deteccin y
correccin depender de las circunstancias. Si los valores vlidos difieren en un solo
bit, no es posible la deteccin del error.
M D C Capacidad de deteccin de errores (D): uno menos de lo que no siempre
1 0 0 podr ser detectado.
2 1 0 Capacidad de correccin de errores (C): uno menors de lo que no siempre
3 2 0
podr ser corregido.
1 1
4 3 0 Distancia mnima de un cdigo (M): la menor cantidad de bits en los que
2 1 difieren dos datos vlidos.
M-1=D+C DC
Claramente, cuanto mayor sea la distancia mnima mayor ser la capacidad de
deteccin/correccin. La distancia de un cdigo se aumenta agregando bits

redundantes al dato.
Bit de Paridad, D=1
Se agrega un bit de paridad al dato para mantener la paridad con la que se
trabaja. Se puede trabajar con paridad par que es un dato compuesto por un nmero
par de 1s o con paridad impar que es un dato compuesto por un nmero impar de 1s.
Para la paridad par:
P=b1b2...bn
Para la paridad imapr:
P=(b1b2...bn)`
Cdigo Hamming, M=3, D=C=1 o D=2
La idea es agregar bits redundantes m a un dato de n bits tal que esos bits
redundantes se puedan construir en un puntero al bit errneo.
2mn+m+1
Asumiendo m bits redundantes se arma el dato compuesto, codeword,
numerando las posiciones desde 1 en adelante. Las posiciones potencia de dos se
reservan para los bits del cdigo, los de los datos se distribuyen en las otras.
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100
1
2
3
4
5
6
7
8
9
10
11
12
c0
c1
b0
c2
b1
b2
b3
c3
b4
b5
b6
b7

El conjunto de los distintos ci corresponden a la paridad par (o impar) sobre la


posicin el conjunto de bits en cuya posicin en binario interviene i. Se calculan en
funcin de los datos y se almacena el codeword resultante. Por ejemplo, para paridad
par se tendr:
c0 = b0 b1 b3 b4 b6 = {3, 5 , 7, 9, 11}
c1 = b0 b2 b3 b5 b6 = {3, 6, 7, 10, 11}
c2 = b1 b2 b3 b7 = {5, 6, 7, 12}
c3 = b4 b5 b6 b7 = {9, 10, 11, 12}
Al momento de recuperar el dato se recalculan los ci` y se construye un puntero
p={pi con pi=cici`}, si no hubo error el puntero ser cero, sino apuntar a la posicin
del error. Si el bit errado est en el dato, claramente afectar al cdigo para revelar su
posicin; si es un bit del cdigo, slo ese bit no coincidir.
El cdigo Hamming podr detectar 2 errores, ya que el puntero nunca ser cero
en ese caso (implicara que los errores se cancelan, cosa que es imposible). No podr
detectar 3 errores ni corregir los dos detectados.
Cdigo Hamming Extendido, M=4, D=3 o D=2 C=1
Idntico al cdigo Hamming, pero se agrega un bit de paridad al codeword. Se
darn as 3 casos:
No hay error: el bit de paridad es 0 y el puntero es 0.
Hay un bit en error: fall el bit de paridad, entonces reviso el puntero, si es cero
el error est en el mismo bit de paridad, si el puntero no es cero corrijo mi error
con Hamming.
Hay dos bit en error: el bit de paridad estar bien, pero el puntero ser distinto
de cero. En este caso informo, no corrijo.
Vertical Redundancy Checking (VRC)
Lo visto hasta ahora se refiere como Longitudinal Redundancy Checking, ya que
el codeword incrementa el ancho del dato. Un escenario donde se produzca una rfaga,
burst, de bits de error, es decir, una secuencia con un bit inicial y final cuyas posiciones
intermedias podran (o no) estar alteradas.
La idea sera organizar el bloque en k filas y n columnas; y agregar, al final una
fila extra con el checksum que se corresponde con la paridad de cada columna. Si el
burst tiene longitud n o menor ser detectado, ante longitudes mayores el resultado

ser incierto.
Combinando LRC y VRC se podra llegar a corregir el bt de error. VRC slo
detectara un nico burst.
Cyclic Redundancy Checking (CRC)
Se defini burst de error de longitud x. La idea es adems que la separacin entr
2 bursts de error deber ser x o ms bits sin error. El CRC tambin es conocido como
Polynomial Code. La cadena de bits se asocia a coeficientes de un polinomio de k
trminos (desde Xk-1 a X0). La divisin se desarrolla de la forma conocida salvo que la
resta se trabaja en modulo 2 (con xor) y las magnitudes del divisor y dividendo no
cuentan en la determinacin de si est o no contenido el divisor en el dividendo. Todo
lo que interesa es el n de bits del divisor el cual comienza con 1 sea igual al n de bits
del dividendo, el cual para la comparacin se requiere empiece con 1.
Transmisor y Receptor coinciden de antemano en un polinomio generador G(X)
de grado r con r+1 bits y la restriccin de que tanto el bit de mayor orden como menor
orden sea 1.
A partir de un frame M(X) de m bits, dato a transmitir, la idea es incorporar el
checksum al final del frame de manera tal que resulte divisible por G(X). Si en el
receptor al dividir por G(X) a este frame con checksum da un resto distinto de 0, se
detecta error de transmisin. En caso de producirse uno o varios errores de
transmisin, el frame recibido se ver como T(X)+E(X) donde el polinomio E(X) tendr
un 1 en aquellas posiciones que se produjo un error.
La deteccin del burst depender de si G(X) divide o no a E(X). Si G(X) es al
menos de dos bits (r=1), es claro que detecta un bit de error. Dado que la longitud de
E(X) es menor que la cantidad de bits de G(X), el resto ser distinto de 0 para
cualquier burst de error de longitud menor o igual a r.
La posibilidad de no detectar error depende de la coincidencia de las posiciones
internas de los r-1 bits, luego, la posibiladad de no ser detectado, asumiendo igual
probabilidad en las distintas posisiones es 2 -r+1. La posibilidad de detectaro es 1-2 -r+1,
se da con longitud de burst r+1.
El xor trata a los 0s ya los 1s por igual, a diferencia del AND y el OR, de aqu el a
analizar el caso de igual longitud, si el dividendo es igual a G(X) el resto ser cero y el
burst no se detecta.
Algoritmo CRC:
Si G(X) es de grado r agregar r 0s a la derecha de M(x), el cual contendr de tal
forma m+r bits.
Dividimos el polinomio nuevo (Xr.M(X)) por G(X) usando el esquema visto.
El resto (R(X)), que tendr un n bits (nr), constituye el checksum de M(X).
As, el Transmited Frame T(X)=M(X)R(X).

You might also like