Estructura de la computadora

Desde el nacimiento de la primera computadora hasta el presente, las computadoras han demostrado una gran productividad en informática, comunicaciones, transporte, entretenimiento, etc. Entonces, ¿qué le da la capacidad? Lo siguiente es mi comprensión personal de las computadoras.

En el campo de las computadoras, dos grandes pioneros tienen que mencionar, uno de Turing y otro de Von Neumann. Turing resolvió cómo realizar la tarea. Divide la tarea en flujo de datos y flujo de control, y el flujo de datos obtiene el resultado final bajo la guía del flujo de control. Esto todavía es aplicable en el proyecto de solución actual: el flujo de datos es nuestra estructura de datos de uso común y el flujo de control es el algoritmo. Feng Neumann propuso que la estructura informática de los operadores, registros y autobuses de alta velocidad tiene una influencia de largo alcance, y las computadoras hasta ahora no pueden escapar de esta arquitectura. La GPU, CPU, DSP y otro hardware inteligente son mejoras y optimizaciones para uno o más de ellos.

Con el desarrollo de tecnologías relacionadas con semiconductores, la velocidad de cómputo de la computadora y la capacidad de velocidad de almacenamiento han experimentado enormes cambios. La mágica ley de Moore (cuando el precio no cambia, el número de componentes que pueden acomodarse en el circuito integrado se duplicará cada 18-24 meses, y el rendimiento se duplicará) La ley Hoy en día, el procesador aritmético ya puede alcanzar la velocidad de cómputo GHz multinúcleo. En teoría, el procesador central puede ejecutar 10 ^ {10}órdenes de magnitud por segundo . Esta velocidad de procesamiento supera con creces la velocidad de procesamiento de las personas. Esta es una de las raíces del poder de la computadora.

Si la computadora quiere reflejar su propio valor, debe desarrollar el software correspondiente. Entonces, ¿cómo se ejecutan los programas de software normales en una computadora?

La capa inferior de la computadora solo reconoce 0 y 1 dígitos. La unidad central de computación codifica un conjunto de instrucciones de acuerdo con los requisitos. El sistema operativo proporciona API de acuerdo con las instrucciones. Los desarrolladores del entorno de compilación encapsulan estas API para obtener SDK. Luego, los desarrolladores de software pueden desarrollar software basado en los SDK. Mirando hacia arriba desde la computadora hay una capa de empaque. Y el proceso de ejecución de la computadora es exactamente el reverso de estos procesos.

Por lo tanto, en primer lugar, los desarrolladores de software deben traducir las tareas en código, que es el proceso de edición, lo que implica un diseño razonable de estructuras de datos (alta cohesión y bajo acoplamiento de clases), selección de algoritmos (complejidad de espacio y tiempo), etc.

En segundo lugar, el software editado requiere que se compile el entorno de desarrollo. En esto, la precompilación del programa también está involucrada (la macro se reemplaza en lenguaje c). El entorno de desarrollo necesita traducir el código de acuerdo con el archivo como unidad básica y traducirlo al lenguaje ensamblador. Después de compilar cada archivo, se obtiene el archivo de destino correspondiente. .

De nuevo, enlace. La compilación se lleva a cabo con el archivo como unidad básica. El archivo de destino compilado puede contener variables o funciones nombradas por otros archivos. En este proceso, cada archivo debe estar vinculado (en el sistema Linux, se completa con un archivo make). El enlace final se forma Archivo ejecutable Cuando la biblioteca dinámica se carga estáticamente, el código de la biblioteca dinámica se copia en el archivo ejecutable, y el archivo ejecutable final es relativamente grande; cuando se realiza la carga dinámica, solo se registra aquí la dirección de la función, y el archivo ejecutable formado es pequeño, lo que ocupa menos memoria Es la forma más popular en la actualidad. Sin embargo, la carga dinámica necesita ingresar a la función de carga de la biblioteca dinámica, lo que puede aumentar el tiempo de llamada. Después de este paso, hemos completado un procedimiento.

El resto es la parte de ejecución. El proceso de implementación se explica en detalle a continuación.

Entonces, ¿cómo se convierte un programa en un proceso?

Primero, cargue el programa haciendo doble clic en el icono u otros métodos (iniciando el registro o cargando otros procesos). En este momento, el sistema operativo crea un bloque de control de proceso para el proceso y lo coloca en la cola de tareas de la CPU. En este momento, el programa ingresa al estado listo y espera a que la CPU se ejecute. El orden de ejecución del proceso puede referirse a mi otro artículo Programación de tareas. Si el programa se carga en la memoria depende del sistema operativo. La carga aquí se basa en la posición del espacio 4G de la memoria virtual (la posición es fija) para asignar la dirección a la dirección física real. Para obtener más información, consulte la administración de la memoria de mi otro blog.

En segundo lugar, cuando se cumplen las condiciones del proceso, la CPU ejecutará el proceso y el proceso pasará al estado de ejecución. En este momento, el registro de control encontrará el código y los datos correspondientes de acuerdo con la dirección y lo colocará en el registro designado u otra caché avanzada. El operador realizará operaciones desde estos registros y colocará los resultados en otro registro especificado. Este ciclo se ejecuta.

En tercer lugar, cuando no se cumplen las condiciones del proceso o un proceso más avanzado se adelanta a la CPU, el proceso actual se guardará en el estado de bloqueo hasta la próxima vez que se cumplan las condiciones, la CPU se ejecuta. En este momento, los datos del proceso en la memoria pueden colocarse en el área SWAP del disco en el sistema operativo (el sistema de Windows a menudo se llama memoria virtual, que en realidad es inexacto).

Finalmente, cuando el proceso finaliza la ejecución o encuentra un estado de terminación forzada, el proceso ingresa al estado finalizado. En este momento, los datos relacionados con el proceso se eliminarán de la memoria. Todo el proceso termina.

En este punto, el proceso del lenguaje humano al código de la máquina se completa con el proceso de realización. Específica para aplicaciones específicas, la computadora puede implementar cálculos rápidos de modelos complejos y control en tiempo real de sistemas a gran escala de acuerdo con esta estructura. Sin embargo, estos modelos y sistemas son calculados por humanos de acuerdo con ciertas reglas: lo que las computadoras hacen bien es la transmisión de datos. La inteligencia artificial de hoy quiere que la computadora complete reglas auto designadas (big data) o que generalice la computadora de acuerdo con ciertas reglas (aprendizaje profundo) para completar la tarea. ¿Se puede hacer bajo el marco existente? El reconocimiento de voz y el reconocimiento de imágenes han mejorado mucha precisión bajo la capacitación del aprendizaje profundo. ¿Se puede ampliar en otros aspectos?

 

Publicado 42 artículos originales · elogiado 4 · 10,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/wangyhwyh753/article/details/89455335
Recomendado
Clasificación