Hacer Cosas Con Ordenadores

Este artículo es parte de una serie, acceder al índice de la serie.

Ahora que entendemos cómo una computadora puede “recordar” tanto dentro como fuera (RAM y, por ejemplo, CDs, respectivamente), podemos pasar a cómo un equipo procesa lo que “recuerda”. Si bien es útil recordar cosas es más útil si podemos hacer cosas con lo que se “recuerda” (información almacenada en la computadora).

El procesador primario es el usuario, que está dirigiendo la computadora y sus actividades, pero el dispositivo computacional principal se llama la CPU (unidad central de procesamiento) y es un chip en la placa base de la computadora. La CPU está detrás de todo lo que la computadora hace, desde la pantalla hasta los periféricos. Aunque el ratón o monitor puede procesar su propia información, es la CPU la que dirige su actividad, ya que el usuario dirige así la CPU.

Hay varios tipos de CPU de diferentes fabricantes como Motorola, AMD e Intel. Dado que cada chip tiene una arquitectura ligeramente diferente (un término que cubriremos más adelante) nos vemos obligados simplemente por el alcance a elegir uno para nuestro viaje en el mundo de la asamblea. También es importante que decidamos qué sistema operativo (que se explicará en un artículo posterior) vamos a programar bajo. He elegido un chip Intel de 32 bits que ejecuta el sistema operativo Linux. Si desea duplicar lo que está escrito aquí de lo que sugiero utilizar Ubuntu o similares.

Al ser un microchip en una placa de circuito, la CPU está formada por transistores y clavijas que conectan la CPU al resto de la máquina. Pero, ¿qué constituye el interior de una CPU? Un montón de transistores obviamente. Así que tenemos que abordarlo conceptualmente. La CPU tiene un montón de circuitos de apoyo para procesar y almacenar los comandos y la memoria de instrucciones. Una manera de describir o pensar en estas cosas es tomar sus partes más importantes y centrarse en ellos principalmente. Lo esencial de una CPU se puede resumir en “registros” y “banderas”. Las banderas son para otro artículo.

Los registros constituyen el banco de trabajo de la CPU. Almacenan información en un lugar conveniente y fácilmente accesible, y algunos comandos de almacenamiento o comandos de lectura que luego se realizan por el ordenador. Así que usted puede inferir, no todos los registros son los mismos, aunque todos ellos almacenan información. Algunos tienen propósitos especializados.

Para conseguir que la CPU “haga” cualquier cosa tiene que ser instruida. Al igual que una secuencia binaria puede representar un número o una letra para nosotros, esa misma secuencia a una CPU puede representar una determinada instrucción a realizar. Estas secuencias, cuando se usan como tales, se denominan “instrucciones de máquina”. Por ejemplo, una instrucción puede ser agregar dos registros juntos y colocar el resultado en el segundo registro.

Pero ¿de dónde obtiene la CPU estas instrucciones? Bueno, de lo que … esperar … memoria, por supuesto! Una de las cosas que une la CPU al resto de la “computadora” es, y esto es una simplificación, los “pines de dirección” y los “pines de datos.” Una CPU puede leer datos de una dirección e incluso escribir datos en una dirección (cambiando el contenido en la dirección). El siguiente diagrama puede ayudar a ilustrar:

cpu_memory_revised

La CPU coloca un código de dirección en los pines de dirección y lee el resultado en los pines de datos. Del mismo modo, la CPU puede poner un código de dirección en los pines de dirección, luego datos en los pines de datos, y que los datos se escribirán (registrados) en esa dirección en la memoria. Esto es una simplificación de lo que se conoce como el bus de datos. El bus de datos también incluye periféricos que tienen “direcciones de E / S”. Es cómo el equipo total habla a sí mismo. Esto, por supuesto, todavía se realiza a través de voltajes en el circuito.

En general, la CPU es guiada por una secuencia de instrucciones que lee de memoria. Esta secuencia se conoce como un “programa”. Estas instrucciones, no importa cuan remontada podamos mover conceptualmente, son lo que componen un programa para que la computadora “corra”. Un programa de computadora, como usted puede ver, también se compone de los datos, siendo uno y cero ellos mismos.

Punteros y Ticks

La CPU funciona literalmente como un reloj. Hay un subsistema conocido como reloj del sistema. A través de alguna magia de la ingeniería electromagnética todos los transistores, et al, dentro de la CPU sincronizar sus operaciones con cada “tick” (pulso) del reloj. Solía tomar, hace mucho tiempo ;-), varios ciclos de reloj para completar una sola operación, pero en estos días un ciclo de reloj puede producir 2 o incluso 4 u 8 instrucciones a la vez en paralelo.

Simplificado, en cada ciclo de reloj, la CPU busca y ejecuta una instrucción desde la memoria. ¿Cómo sabe qué instrucción debe buscarse en todas las direcciones de la memoria? Ahí es donde el “puntero de instrucción” entra en juego. El puntero de instrucción “señala” (contiene la dirección) a la siguiente instrucción que se va a buscar. Una vez que se ejecuta esa instrucción, entonces contiene la dirección de la siguiente instrucción.

Diseño arquitectónico

Incluso con una CPU Intel de 32 bits hay muchos fabricantes y tipos. El tipo de chip que estamos utilizando a veces se denomina “Intel Compatible x86 CPU”. Sólo eso solo tiene muchos chips compatibles, tales como: 8086, 80286, 80386 … Pentium Pro, Pentium MMX … Pentium Xeon, Petium Core, etc. ¡Uf! Y pienso, antes de que Apple cambiara al procesador de Intel que tenían la línea de PowerPC (un procesador principalmente de RISC). Desde el punto de vista de un programador esto sólo nos afecta en la forma de qué registros están disponibles, qué banderas se voltean, cuál es el “conjunto de instrucciones” del procesador y cualquier subconjunto como una unidad lógica aritmética. Todos estos detalles combinados se conocen como “arquitectura” de los chips. La arquitectura también se utiliza para hablar del diseño del chip en sí, pero la definición anterior se utilizará aquí.

Muchos chips están diseñados para ser “compatibles hacia atrás”, lo que significa que todavía pueden funcionar con juegos de instrucciones antiguos o previamente aceptables cuando se comparan con la edad del chip. Sin embargo, los chips no son compatibles con “forward”: una instrucción especializada en un chip más reciente no funcionará en una “generación” de chip más antigua.

Como los avances se hacen en hardware de chip, ya sea que 32 bits en 64 bits, o tamaño de caché, o cualquier otra cosa que generalmente puede estar seguro de que las instrucciones, a veces con pequeñas modificaciones, seguirá funcionando.

Microarquitectura

Una CPU puede tener una particular “arquitectura”, es familia o linaje, pero siempre tiene una “microarquitectura”. La microarquitectura consiste en las tuercas, pernos y electrodos microscópicos que funcionan en segundo plano para hacer que la arquitectura funcione. Los diseñadores de fichas no cambian la arquitectura, como añadir un registro, sin razón. Sin embargo, pueden cambiar lo que apoya la arquitectura, la microarquitectura, para mejor.

Los tipos de cosas maleables y significativas son amplias y siempre especializadas. El más amplio y quizás el más importante es el calor. CPU de emitir una gran cantidad de desperdicio de calor generado por la electricidad, para simplificar, corriendo a través de él. Este calor puede ser un problema ya que no sólo es capaz de dañar los componentes del compañero, sino también de autodestrucción. Los disipadores de calor, el gel térmico y los ventiladores ayudan a disipar esto, pero averiguar cómo reducir el consumo de energía de un chip es un aspecto importante de la “microarquitectura”.

Otro esfuerzo en el mundo de la microarquitectura es aumentar el procesamiento del procesador. En otras palabras, haga que “vaya más rápido”. Las formas de hacer que más instrucciones pasen más rápido son usualmente arcanas y esotéricas. La mayoría de ellos implican hacer que el procesador y el bus de datos funcionen más rápido juntos. Algunos ejemplos de las técnicas y tecnologías implicadas incluyen algunos que usted puede haber oído antes: Caché L1 y L2, hyper pipelining, y más.

Los cambios menores en la arquitectura de un chip se les asignan nombres en clave como “Yonah” o “Katmai”. Los cambios principales en una microarquitectura de chips se les asignan nombres en clave como “Core” o “NetBurst”.

Lo que todo esto significa para usted, realmente, como un programador por encima de la media (puedo soñar no puedo?) Es … no mucho. Debido a que se toman grandes medidas para preservar la arquitectura de un chip a pesar de su microarquitectura, puede estar seguro de que sus programas se ejecutarán simplemente en cualquier chip de la familia de arquitecturas deseadas.

Conclusión

Es importante recordar que la CPU está hecha de transistores. Millones de ellos. Un código de instrucción no es un número o carácter (aunque puede ser representado de esa manera), sino una secuencia de estados del switch que terminan invirtiendo cientos de miles de otros conmutadores. Después de todo, la CPU sigue siendo una máquina.

Este artículo es parte de una serie, acceder al índice de la serie.

Si usted aprecia mis tutoriales y su sabiduría, por favor considere apoyarme en Patreon.

Sin embargo, si un compromiso mensual es un poco demasiado necesitado para usted, podría considerar comprarme una taza de café.

photo credit: Dad’s computer via photopin (license)

También te podría gustar...

Deja un comentario

A %d blogueros les gusta esto: