Está en la página 1de 64

Arquitectura del

Computador
UNTELS 2019 - II
Maquina de von neumann

Según Von Neumann un computador debe de tener:


◦ Dispositivo de entrada: Instrucciones y operaciones
◦ Medio de almacenamiento (memoria): instrucciones operandos, resultados
◦ Unidad Aritmético lógica: ALU
◦ Dispositivo de salida
◦ Unidad de control: Señales de control
Sistemas computacionales
CPU (Unidad Central de Proceso)
◦ Lee instrucciones de la memoria de programa
◦ Interpreta su significado
◦ Ejecuta la operación
◦ Guarda resultado
◦ Reloj - Sistema secuencial

Bus de direcciones;
◦ Dirección para acceder a
una posición de memoria o E/S
Bus de datos
Bus de control
Niveles de abstracción en el diseño vlsi
Principio de funcionamiento de un microprocesador
El microprocesador ejecuta instrucciones almacenadas como números binarios
organizados secuencialmente en la memoria principal.
◦ Preselecciona (PreFetch): pre-lectura de la instrucción desde la memoria principal.
◦ Selecciona (Fetch): envío de la instrucción al decodificador.
◦ Decodificación (Decode) de la instrucción: determinar qué instrucción es y por
tanto qué se debe hacer.
◦ Lectura de operandos (si los hay)
◦ Ejecución (Execute): lanzamiento de las máquinas de estado que llevan a cabo el
procesamiento.
◦ Escritura (Store) de los resultados en la memoria principal o en los registros.
Cada una de estas fases se realiza en uno o varios ciclos de CPU
Operación de una CPU
Simplificando el Microprocesador
◦ Fetch Unit gets the next instruction from the cache.
◦ Decode Unit determines type of instruction.
◦ Instruction and data sent to Execution Unit.
◦ Write Unit stores result.
Proceso secuencial
Proceso secuencial de trabajo, una instrucción a la vez.
Pipelined Processing (486)
◦ Latency — elapsed time from start to completion of a particular task
◦ Throughput — how many tasks can be completed per unit of time
◦ Pipelining only improves throughput
◦ Each job still takes 4 cycles to complete
Microprocesador
EL bus de direcciones es de 16 bits, las direcciones van de 0000H
hasta FFFFH. La dirección del 8086 contiene 1M byte de memoria,
esto usando una dirección de 20 bits que selecciona la locación de
00000H a FFFFFH.

Memoria lógica del 8086


Abstraction, Layering, and Computers
App App App
Software
System software
ISA
Mem CPU I/O
Hardware
Transistors

Computers are complex, built in layers


◦ Several software layers: assembler, compiler, OS, applications
◦ Instruction set architecture (ISA)
◦ Several hardware layers: transistors, gates, CPU/Memory/IO
Review: Applications
App App App
System software

Mem CPU I/O

Applications (Firefox, iTunes, Skype, Word, Google)


◦ Run on hardware … but how?
Review: I/O
App App App
System software

Mem CPU I/O

Apps interact with us & each other via I/O (input/output)


◦ With us: display, sound, keyboard, mouse, touch-screen,
camera
◦ With each other: disk, network (wired or wireless)
◦ Most I/O proper is analog-digital and domain of EE
◦ I/O devices present rest of computer a digital interface (1s
and 0s)

CIS 501 | DR. JOE DEVIETTI | ISAS & SINGLE CYCLE 13


Review: OS
App App App
System software

Mem CPU I/O

I/O (& other services) provided by OS (operating system)


◦ A super-app with privileged access to all hardware
◦ Abstracts away a lot of the nastiness of hardware
◦ Virtualizes hardware to isolate programs from one another
◦ Each application is oblivious to presence of others
◦ Simplifies programming, makes system more robust and secure
◦ Privilege is key to this
◦ Commons OSes are Windows, Linux, MacOS
Review: ISA
App App App
System software

Mem CPU I/O

App/OS are software … execute on hardware


HW/SW interface is ISA (instruction set architecture)
◦ A “contract” between SW and HW
◦ Encourages compatibility, allows SW/HW to evolve independently
◦ Functional definition of HW storage locations & operations
◦ Storage locations: registers, memory
◦ Operations: add, multiply, branch, load, store, etc.
◦ Precise description of how to invoke & access them
◦ Instructions (bit-patterns hardware interprets as commands)
Review: LC4 ISA .DATA
App App App array .BLKW #100
sum .FILL #0
System software
.CODE
.FALIGN
Mem CPU I/O array_sum
CONST R5, #0
LC4: a toy ISA you know LEA R1, array
◦ 16-bit ISA (what does this mean?) LEA R2, sum
array_sum_loop
◦ 16-bit insns
LDR R3, R1, #0
◦ 8 registers (integer) LDR R4, R2, #0
◦ ~30 different insns ADD R4, R3, R4
◦ Simple OS support STR R4, R2, #0
ADD R1, R1, #1
ADD R5, R5, #1
Assembly language CMPI R5, #100
◦ Human-readable ISA representation BRn array_sum_loop
Preview: A Real ISA
App App App .data
array: .space 100
System software
sum: .word 0
.text
Mem CPU I/O
array_sum:
MIPS: example of real ISA li $5, 0
la $1, array
◦ 32/64-bit operations la $2, sum
◦ 32-bit insns array_sum_loop:
lw $3, 0($1)
◦ 64 registers lw $4, 0($2)
add $4, $3, $4
◦ 32 integer, 32 floating point sw $4, 0($2)
◦ ~100 different insns addi $1, $1, 1
addi $5, $5, 1
◦ Full OS support li $6, 100
Example code is MIPS, but blt $5, $6, array_sum_loop
all ISAs are similar at some level
Review: Program Compilation
int array[100], sum;
App App App void array_sum() {
System software for (int i=0; i<100;i++) {
sum += array[i];
Mem CPU I/O }
}

Program written in a “high-level” programming language


◦ C, C++, Java, C#
◦ Hierarchical, structured control: loops, functions, conditionals
◦ Hierarchical, structured data: scalars, arrays, pointers, structures
Compiler: translates program to assembly
◦ Parsing and straight-forward translation
◦ Compiler also optimizes
◦ Compiler itself another application … who compiled compiler?

CIS 501 | DR. JOE DEVIETTI | ISAS & SINGLE CYCLE 18


Review: Assembly Language
Machine code Assembly code
App App App
x9A00 CONST R5, #0
System software
x9200 CONST R1, array
xD320 HICONST R1, array
Mem CPU I/O x9464 CONST R2, sum
xD520 HICONST R2, sum
Assembly language x6640 LDR R3, R1, #0
x6880 LDR R4, R2, #0
◦ Human-readable representation x18C4 ADD R4, R3, R4
x7880 STR R4, R2, #0
Machine language x1261 ADD R1, R1, #1
◦ Machine-readable representation x1BA1 ADD R5, R5, #1
x2B64 CMPI R5, #100
◦ 1s and 0s (often displayed in “hex”)
x03F8 BRn array_sum_loop

Assembler
◦ Translates assembly to machine
240 Review: Insn Execution Model
App App App
The computer is just finite state machine
◦ Registers (few of them, but fast)
System software
◦ Memory (lots of memory, but slower)
◦ Program counter (next insn to execute)
Mem CPU I/O
◦ Sometimes called “instruction pointer”
A computer executes instructions
◦ Fetches next instruction from memory
Fetch ◦ Decodes it (figure out what it does)
Decode
◦ Reads its inputs (registers & memory)
Read Inputs
◦ Executes it (adds, multiply, etc.)
Execute
Write Output ◦ Write its outputs (registers & memory)
Next Insn ◦ Next insn (adjust the program counter)
Program is just “data in memory”
Instruction  Insn ◦ Makes computers programmable (“universal”)
Lenguaje de programación
Lenguaje de maquina:
◦ Es el lenguaje únicamente entendido por la computadora
◦ Es diferente para cada proceso pero es compatible para
actualizaciones
◦ Es de rápida ejecución y puede control cada componente en el
sistema
◦ Programación compleja y necesita comprender su configuración
Lenguaje ensamblador
◦ Fácil de programar
◦ Requiere de assembler para convertir a lenguaje de maquina
Jerarquía de diseño de la computadora
 Nivel de Diseño de software
 Nivel de lenguaje de aplicación
 Lenguaje de alto nivel
 Lenguaje ensamblador
 Lenguaje de Maquina
 Nivel de diseño de Hardware
 Nivel de transferencia de registros
 Nivel de compuertas
 Nivel de transistores
Lenguaje de programación
Lenguaje de alto nivel
◦ Resuelve todo los problemas sin prestar atención al CPU y la
configuración
◦ Fácil de escribir incluido el trabajo con cálculos de punto flotante.
◦ Difícil de controlar el hardware
◦ C++, Pascal, Basic, Python…
Lenguaje de programación
Lenguaje de maquina:

Lenguaje ensamblador

Lenguaje de alto nivel


Microprocesador 8086
El 8086 es un
microprocesador de 16 bits
Registros del 8086
Tienen 16 bits cada uno y son ocho:
◦ AX = Registro acumulador, dividido en AH y AL (8 bits cada uno).
◦ BX = Registro base, dividido en BH y BL.
◦ Es el registro base de propósito similar (se usa para direccionamiento indirecto)
◦ CX = Registro contador, dividido en CH y CL.
◦ Se utiliza como contador en bucles (instrucción LOOP), en operaciones con cadenas
(usando el prefijo REP) y en desplazamientos y rotaciones (usando el registro CL en
los dos últimos casos).
◦ DX = Registro de datos, dividido en DH y DL.
◦ Se utiliza junto con el registro AX en multiplicaciones y divisiones, en la instrucción
CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica
el número de puerto de entrada/salida).
◦ SP = Puntero de pila (no se puede subdividir).
Registros del 8086
BP = Puntero base (no se puede subdividir).
◦ Generalmente se utiliza para realizar direccionamiento indirecto
dentro de la pila.
SI = Puntero índice (no se puede subdividir).
• Sirve como puntero fuente para las operaciones con cadenas. También
sirve para realizar direccionamiento indirecto.
DI = Puntero destino (no se puede subdividir).
◦ Sirve como puntero destino para las operaciones con cadenas.
También sirve para realizar direccionamiento indirecto.
ALU
Es la encargada de realizar las operaciones aritméticas (suma, suma
con "arrastre", resta, resta con "préstamo" y comparaciones) y
lógicas (AND, OR, XOR y TEST). Las operaciones pueden ser de 16
bits o de 8 bits
Flags (indicadores)
Registro de indicadores (16 bits)
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Flag -- -- -- -- OF DF IF TF SF ZF 0 AF 0 PF 1 CF

oCF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (en caso de suma o
resta) desde el bit de orden más significativo del resultado.
oPF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un
número par de bits a 1.
oAF (Auxiliary carry Flag, bit 4): Si vale 1, indica que hubo "arrastre" o
"préstamo" del nibble (cuatro bits) menos significativo al nibble más
significativo.
oZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de la operación es
cero.
Registros de la unidad de interfaz con el bus:
El programador puede acceder a cinco registros de 16 bits cada
uno, siendo cuatro de ellos registros de segmento y el restante el
puntero de instrucción (IP).
Los registros de segmento se llaman:
CS: Registro de segmento de código.
DS: Registro de segmento de datos.
ES: Registro de segmento extra.
SS: Registro de segmento de pila.
Repertorio de instrucciones
El repertorio de instrucciones de los microprocesadores 8086 y
80286 son agrupados según el tipo de operación:
•De transferencia de datos.
•Aritméticas, lógicas, desplazamiento y rotación.
•De cadenas.
•De manipulación de bits.
•De control de programas.
•De control de máquina.
Repertorio de instrucciones
Las instrucciones de transferencia de datos consisten en copiar,
mover o intercambiar datos entre, registros o registro-memoria o
registro-puerto E/S:

oMOV (copiar), o OUT (sacar dato por puerto),


oXCHG (intercambiar), o IN (ingresar dato por puerto),
oPUSH (almacenar en pila), o XLAT (ingresar una tabla de
oPOP (cargar de pila), conversión).
oLEA (cargar dirección efectiva),
Repertorio de instrucciones
Las instrucciones aritméticas son operaciones de la ALU:
oADD (sumar), oINC (incrementa),
oADC (sumar con acarreo), oMUL (multiplicación sin signo),
oSUB (restar), oIMUL (multiplicación con
oSBB (restar con préstamo), signo),
oCMP (comparar), oDIV (división sin signo),
oDEC (decrementa), oIDIV (división con signo)
Repertorio de instrucciones
Las instrucciones lógicas son también operaciones de la ALU:
oNEG (complemento a dos), oLos desplazamientos SAL,SHL
oNOT (complemento a uno), (hacia la izquierda),
oAND (and bit a bit), oSAR, SHR (hacia la derecha)
oOR (or bit a bit), oLas rotaciones RCL, ROL
(hacia la izquierda),
oXOR (xor bit a bit). oRCR, ROR (hacia la derecha)
REPERTORIO DE INSTRUCCIONES
Las instrucciones de control de programa sirven para posicionarse
dentro de una programa o para llamar a subrutina):
•CALL (llamar subrutina),
•RET (retornar a programa principal),
• JMP (salto incondicional), LOOP (bucle).
•Los saltos condicionales forman una larga lista. Ej: JE, JNE, JG, JNG,
JCXZ, JZ, JNZ, JNC, JC, JPO, JPE, JP, JS.
EL 8086 tiene 4 segmentos de memoria:

Por ejemplo un programa puede requerir:


1000H bytes de memoria para el código
190H bytes de memoria para los datos
200H bytes de memoria para su pila
Sin segmento dicional
Formato de datos
Los formatos comunes de datos utilizados con la familia de
microprocesadores 8086-80486 son:
Los datos se presentan como ASCII, BCD, enteros con signo y sin
signo de 8 bits (byte) enteros con signo y sin signo d e32 bits (doble
palabra) y enteros sin signo y números reales con punto decimal,
flotante
Modos de direccionamiento
Los modos de direccionamiento de datos incluyen: registro,
inmediato, directo, indirecto por registro, base mas índice, relativo
por registro y relativo por base más índice.
Para los datos en memoria se usa el modo índice.
Los modos de direccionamiento de la pila de memoria : relativo al
programa, directo e indirecto.
Modos de direccionamiento
•El direccionamiento por registro opera solamente con registros: destino y
fuente son registros.
Ejemplo: MOV AX, BX
lo que está en BX se copia en AX.
Instrucción
MOV BX,CX
El registro destino cambiara
Direccionamiento inmediato
Los datos siguen inmediatamente al código hexadecimal de
operaciones en la memoria.
Modos de direccionamiento
•En el direccionamiento inmediato, el dato que va a ser manipulado se conoce
al momento de leer la instrucción y antes de ser ejecutada.
Ejemplo: MOV AX, 1234h
el dato 1234h se copia en AX.
Modos de direccionamiento
•El dato está en la memoria y se posiciona con el desplazamiento que se
encuentra en el registro puntero o base.
Ejemplo: MOV AX, [BX]
BX contiene el desplazamiento en el segmento de datos para ubicar el
dato que será copiado en AX.
Estructura de código ASM
.model small
.stack 100
.data
n1 db 0
n2 db 0
.code
mov ax,@data
mov ds,ax

mov ah,4ch
int 21h
end
LENGUAJE DE MÁQUINA
El lenguaje de máquina es el código binario que el microprocesador utiliza
para identificar instrucciones y controlar su funcionamiento.
Es el lenguaje mas básico, propio de cada computadora. Este código es una
cadena de unos y ceros (sistema binario)

En los procesadores Intel, la longitud de las


instrucciones del lenguaje de máquina puede
variar desde 1 hasta 13 bytes.
Para los procesadores de 16 bits la estructura de
las instrucciones en lenguaje de máquina varía
según el modo de direccionamiento.
LENGUAJE DE MÁQUINA
Para los Modos de Direccionamiento de Registro o los que
posicionan memoria, el formato es:
Lenguaje de máquina
Para el Modo de Direccionamiento Inmediato el formato es:

A veces el código de operación se escribe con más de un byte.


Lenguaje de máquina
Características generales:
Las instrucciones se "encajan" en alguno de los formatos disponibles
Los formatos son sistemáticos (campos de longitud y posición fijas)
El primero de los campos es el código de operación
Siguiente instrucción en la siguiente posición de memoria, salvo bifurcaciones
En vez de usar la operación pura se asignan diferentes códigos de operación para
diferentes modos de direccionamiento
La ubicación del resultado coincide con el operando destino
Ejemplo de instrucciones
Formato de instrucciones:
LENGUAJE DE MÁQUINA – FORMA BÁSICA
El código de operación elige la operación que realiza el microprocesador.
Generalmente es de un byte y contiene la siguiente información:

Código operación D W

Cuando D=1, el dato fluye del campo de R/M al campo de REG;


Cuando D=0, el dato fluye del campo de REG al campo de R/M.
Cuando W=1, el dato es de 16 bits;
cuando W=0, el dato es de 8 bits.
LENGUAJE DE MÁQUINA – FORMA BÁSICA

TABLA PARA EL CAMPO MOD


MOD función
00 Usa memoria sin desplazamiento (offset)
01 Usa memoria con un desplazamiento de 8 bits
con signo (offset)
10 Usa memoria con un desplazamiento de 16
bits con signo (offset)
11 El campo R/M es un registro. Sólo para el
modo de direccionamiento de registro.
LENGUAJE DE MÁQUINA – FORMA BÁSICA
LENGUAJE DE MÁQUINA – FORMA BÁSICA

TABLA PARA EL CAMPO REG

Código W=0 W=1


000 AL AX
001 CL CX
010 DL DX
011 BL BX
100 AH SP
101 CH BP
110 DH SI
111 BH DI
LENGUAJE DE MÁQUINA – FORMA BÁSICA

TABLA PARA EL CAMPO DE R/M Código Direccionamiento


000 DS:[BX+SI]
001 DS:[BX+DI]
010 SS:[BP+SI]
011 SS:[BP+DI]
100 DS:[SI]
101 DS:[DI]
110 SS:[BP]
111 DS:[BX]
Ejemplos
La instrucción:
◦ MOV BL, AL
◦ “Mueve el byte contenido en el registro fuente AL al registro destino BL”
Sol.
◦ Los primero 6 bits determinan el código de operación
◦ Código de operación = 100010
◦ El bit D indica si el registro que señala el campo REG del segundo byte es el operando
fuente o destino.
◦ D= 1
◦ El bit W indica si la operación es de 1 byte o 2 byte.
◦ W=0
Código de operación  10001010 = 8Ah
Para el segundo byte:
MOD: el segundo operando es también un registro
◦ MOD = 11
REG: El operando de registro es BL
◦ REG = 011
R/M: Debe especificar que el registro es AL
◦ R/M = 000
Por lo tanto, el segundo byte o byte de campo:
 11011000 = D8h

El código para MOV BL,AL  8A D8 h


Ejemplo 01: MOV DL,[DI]
1er byte: 10001010 = 8Ah, 2do byte: 00010101= 15h.

Ejemplo 02: código: 10001011 = 8Bh,


seguido del byte: 11101100 = ECh.
 MOV BP,SP

Ejemplo 03: MOV DL,[DI+1000h]


 1er byte: 8Ah, 2do byte: 95h, 00h, 10h.
o Se dispone de las siguientes variables, definidas en el segmento de datos:
o Cadena DB 0, 0, 0, 0
o Dato DW 0
o Nota: Cadena empieza en la posición de memoria 0h del DS y Dato en la posición
4h

o Cuál es el código en de las siguientes instrucciones del 80x86:


o MOV AL, BL:
o Byte 1: C.O.: 1000 10 - D: 1 - W: 0
o Byte 2: MOD:11 - REG: 000 - R/M:011
o Código en hexadecimal: 8A C3 h
MOV Dato, BX:
o Byte 1: OP. : 1000 10 - D: 0 - W: 1
o Byte 2: MOD:00 - REG:011 - R/M:110
Código en hexadecimal: 891E 0400h

MOV BX, Dato:


oByte1: C.O.: 1000 10 - D: 1 - W: 1
oByte2: MOD:00 - REG:011 - R/M:110
Código en hexadecimal: 8B1E 0400h
Cortex-M0 Block Diagram
Arm Cortex-M0 Microprocessor
Interrupt
Requests and
NMI JTAG/Serial-Wire
Nested Vector Debug Interface
Interrupt Processor Debug
Controller Core Subsystem
(NVIC)

Wakeup
Interrupt
Controller (WIC) Internal Bus System

Power
Management AHB-Lite
Interface Bus Interface

Memory and Peripherals


Cortex-M0 Registers
Register bank R0
R1
R2
R3
Low
R4 Registers

R5
General Purpose
Register
R6
R7
R8
R9
R10 High
Registers
R11
R12 MSP
Stack Pointer (SP) R13(banked) Main Stack Pointer

Link Register (LR) R14 PSP


Program Counter (PC) R15 Process Stack Pointer

Special registers Program Status


x PSR APSR EPSR IPSR
Registers (PSR)
Interrupt Mask Register PRIMASK Application Execution Interrupt
PSR PSR PSR
Stack Definition CONTROL
ASM for ARM PROCESSOR
Nomenclatura del lenguaje de maquina
Lenguaje de maquina
NEMONICO DEST, SR1, SR2
ADD     R0,  R1, R2

1110|00|0|0100|0|0001|0000|000000000010

ADDS     R4,    R6, #42


1110|00|1|0100|1|0110|0100|000000101010 

También podría gustarte