History of microprocessors

Definition

  • A microprocessor is a chip.
  • containing some control and logic circuits.
  • making arithmetic and logical decisions.
  • return arithmetic or logical output.

Word Processor

  • derivative of the word ‘process’.
    • carry out systematic operations.
    • data.

Where is it used?

app_microprocessor

HISTORICAL DEVELOPMENT OF THE MICROPROCESSORS

  • 4004 and 4040 devices – early 1970’s.
    • Intel 4 bits.
    • add and subtract with 4-bit data only at a time.
    • all its circuitry on a single chip.
    • powered one of the first portable electronic calculators named Busicom’.

4004

  • 8008 and 8080 CPU’s
    • Intel eight-bit.
    • Incorporated in Altair 8800.
    • personal computer revolution was born.

8008

Competition

  • 8085 microprocessor8085
    • Intel 8-bits
    • lots of hardware improvements.
    • To the software engineer, the 8085 same as the 8080
  • 6800 series
    • Motorola 8-bits
    • easier to program
  • 65xx family65xx
    • MOS Technologies 8-bits
    • easier to program
    • very inexpensive
  • Z80 chip
    • Zilog 8-bits
    • compatible with the 8080
    • lots of additional instructions
  • 1978, most personal computers – 6502 or Z80 chips, not the Intel offerings.

Now everything makes sense.

  • 8086 device, 1976 – 1978.
    • Intel 16-bits.
    • Not first 16-bits but the highest performance single-chip
    • memory was very expensive
      • Solution was high memory density.

8086

Competition

  • Z8000z8000
    • Zilog 16-bits
    • Better instruction set
  • 68000
    • Motorola 16-bits
    • Better instruction set
  • 16032 or 32016
    • National Semiconductor 16-bits
    • Better instruction set

Revolution

  • 8088, 1979
    • Intel 16-bits with data bus 8-bits
    • Cost reduced
    • minimal system with only 16 kilobytes of RAM and a set of cheap eight-bit peripheral devices.
    • IBM PC, 1980

8088

Upgrade

  • 8018680186
    • Intel 16-bits
    • Superior in hardware
    • Superior in software
    • Embedded applications
  • 80286
    • Intel 16-bits
    • allowed access to as much as 16 megabytes of memory.
    • lots of new instructions
    • bumped up the clock frequency
    • 10 times faster than the 8088
    • IBM PC/AT

80286

  • 80386
    • Intel 32-bits
    • complete compatibility with the previous 16-bit CPUs
    • maximum addressability to four gigabytes
    • added hardware debugging support for software
  • RISC (one cycle – instruction) vs 80386
    • Multiple fast instructions vs powerful instruction

80386

  • 80486
    • Intel 32-bits
    • FPU integrated
    • Pipelined instruction execution
    • was able to compete with RISC chips
  • RISC chips
    • Parallel execution
    • Better FPU

80486

  • Pentium Processor
    • Intel 32-bits
    • Better and complex hardware
    • Near RISC performance
  • Pentium PRO
    • Intel 32-bits
    • Servers
    • Multiprocessing
    • Instruction for pipelined architecture
    • Failure for MMX in standard chips….

pentium

  • Pentium II
    • Intel
    • Pentium PRO with MMX
    • Wrong idea
    • Celeron for low cost
    • Xeon for servers and high-end workstations

pentiumII

  • Pentium III
    • Intel
    • SIMD – high performance float point operation
    • Compete with high-end RISC CPUs.
    • More instructions

pentiumIII

  • Pentium IV
    • Intel
    • 2 GHz
    • a much higher clock frequency than its RISC
    • The code execution at same frequency is slower that Pentium III

pentiumIV

Algoritmos y Programas

Este material es tomado de “Conceptos Básicos” del profesor Fernando Berzal.

Algoritmo

Secuencia ordenada de pasos que resuelve un problema concreto.

Características

  • Corrección (sin errores).
  • Precisión (ausencia de ambigüedades).
  • Repetitividad (solución genérica de un problema dado).
  • Finitud (número finito de órdenes no implica finitud).
  • Eficiencia (temporal [tiempo necesario] y espacial [memoria utilizada])

Programa

Implementación de un algoritmo en un lenguaje de programación.

Programación

Conjunto ordenado de instrucciones que se dan al ordenador indicándole las operaciones o tareas que ha de realizar para resolver un problema.

Lenguajes de programación

Una instrucción es un conjunto de simbolos que representa una orden para el ordenador: la ejecuci6n de una operaci6n con datos.

Las instrucciones se escriben en un lenguaje de programación:

  • Se forman con símbolos tomados de un determinado repertorio (componentes léxicos).
  • Se construyen siguiendo unas reglas precisas (sintaxis).

Lenguaje de máquina

  • El único que entiende directamente la CPU del ordenador.
  • Depende del modelo de ordenador.
  • Repertorio de instrucciones reducido (operaciones muy elementales).
  • Muy dificil programar en el (en binario, con cadenas de ceros y unos).

Lenguaje ensamblador

  • Equivalente al lenguaje máquina, cada línea de código se traduce en una instrucción para la máquina.
  • Le asocia mnemónicos a las operaciones que entiende la CPU
  • Repertorio de instrucciones reducido (operaciones muy elementales)
  • Programas dificiles de entender

Lenguajes de alto nivel

  • Permiten que el programador exprese el procesamiento de datos de forma simb6lica, sin tener en cuenta los detalles especificos de la máquina.
  • Independientes del modelo de ordenador.
  • Proporcionan un mayor nivel de abstracción.

Ejemplos de lenguajes de programación de alto nivel

  • FORTRAN (FORmula TRANslation):
    • © 1957, IBM (John Backus).
    • Orientado a la resolución de problemas científicos y técnicos.
  • COBOL (COmmon Business Oriented Language):
    • © 1959, Codasyl (Committee on Data System Languages).
    • Aplicaciones comerciales de gestión.
  • LISP (LISt Processing):
    • © 1959, John McCarthy (MIT).
    • Procesamiento de datos no numericos (usado en IA).
  • BASIC (Beginner’s All-purpose Symbolic Instruction Code):
    • © 1964, John Kemeny & Thomas Kurtz (Darmouth College).
    • Lenguaje interactivo para principiantes.
  • Simula:
    • © 1967, Ole-Johan Dahl & Krysten Nygaard (Noruega).
    • Primer lenguaje de programación orientada a objetos.
  • Pascal:
    • © 1971, Niklaus Wirth.
    • Lenguaje estructurado diseñado para aprender a programar.
  • C:
    • © 1972, Denis Ritchie (Bell Labs).
    • Lenguaje pequeño, flexible y eficiente.
  • Smalltalk:
    • © 1972, Alan Kay (Xerox PARC).
    • Origen de los interfaces WIMP (Windows, Icons, Mouse & Pull-down menus).
  • PROLOG (PROgramming in Logic):
    • © 1972, Alain Colmerauer (Universidad de Marsella).
    • Basado en Lógica (usado en IA).
  • Ada:
    • © 1980, US Department of Defense.
    • Basado en Pascal, muy usado en aplicaciones militares.

Clasificación de los lenguajes de programación de alto nivel

Lenguajes imperativos:

Los programas indican al ordenador de forma inequívoca los pasos a seguir para la resolución de un problema.

  • Programación estructurada:

La estructura del texto del programa debe auxiliarnos para entender la funci6n que realiza: estrategia “divide y vencerás” (la resoluci6n de un problema se divide en tareas y, estas, en subtareas).

Ejemplos: C, Pascal, Fortran…

  • Programación orientada a objetos:

Estilo de programaci6n que basa la estructura de un programa en m6dulos deducidos de los tipos de objetos que manipula (en lugar de basarse en las tareas que el sistema debe realizar).

Ejemplos: Smalltalk, C++, Java, C#…

Lenguajes declarativos (funcionales y lógicos):

Los programas se implementan como conjuntos de funciones (o reglas lógicas) cuya evaluación nos dará el resultado deseado.

Ejemplos: LISP, PROLOG…

Traductores

Los traductores transforman programas escritos en un lenguaje de alto nivel en programas escritos en c6digo máquina:

Intérprete

Tipos de traductores

  • Compiladores

Generan un programa ejecutable a partir del código fuente:

Compiladores

  • Intérpretes

Van analizando, traduciendo y ejecutando las instrucciones del programa una a una. No se traduce una instrucci6n hasta que la ejecuci6n de la anterior haya finalizado.