Al estudiar el curso para principiantes sobre interfaz de hardware / software y sistemas operativos, a menudo surge el tema de si sería mejor reemplazar algunas partes de hardware con software y viceversa. No puedo hacer la conexión.
Al estudiar el curso para principiantes sobre interfaz de hardware / software y sistemas operativos, a menudo surge el tema de si sería mejor reemplazar algunas partes de hardware con software y viceversa. No puedo hacer la conexión.
Respuestas:
Creo que la conexión fundamental que faltan otras respuestas es esta:
Dada una computadora de propósito general (por ejemplo, una CPU), uno puede programarla para realizar casi cualquier cálculo que hayamos definido. Sin embargo, el hardware especializado puede funcionar mejor o no proporcionar ningún valor.
(esta respuesta se centra en el procesamiento de escritorio y utiliza ejemplos de ese dominio)
Si tienes la edad suficiente para recordar los juegos de PC a mediados y finales de la década de 1990, probablemente recuerdes los juegos FPS como Quake . Comenzó siendo "software renderizado", lo que significa que la CPU realizó los cálculos necesarios para representar los gráficos. Mientras tanto, la CPU también tenía que realizar procesamiento de entrada, procesamiento de audio, procesamiento de IA, etc. Era muy exigente con los recursos de la CPU. Además, el procesamiento de gráficos no es adecuado para una CPU convencional (entonces o ahora). Tiende a ser una tarea muy paralela, que requiere muchos más núcleos que incluso una CPU moderna de alta gama (8).
Movimos el procesamiento de gráficos del software al hardware: ingrese el 3dfx Voodoo y Nvidia TNT (ahora GeForce ). Estas eran tarjetas gráficas especializadas que descargaban el procesamiento de la CPU a la GPU. Esto no solo extendió la carga de trabajo, proporcionando más recursos informáticos para hacer la misma cantidad de trabajo, sino que las tarjetas gráficas eran hardware especializado que podía renderizar gráficos 3D mucho más rápido y con más funciones que la CPU.
Avance rápido a la era moderna, y se requieren gráficos sin CPU en el escritorio. Incluso el sistema operativo no puede funcionar sin una GPU. Es tan importante que las CPU realmente integren GPU ahora. 1
Cuando el DVD era completamente nuevo, podía instalar una unidad de DVD en su computadora de escritorio. Sin embargo, las CPU del día no eran lo suficientemente potentes como para decodificar las transmisiones de audio y video DVD sin tartamudear. Al principio, se requería una placa PCI especializada para realizar la decodificación. Este fue un hardware especializado que fue construido específicamente para decodificar el formato DVD y nada más. Al igual que con los gráficos 3D, no solo proporcionó más recursos informáticos, sino que se diseñó a medida para la tarea, lo que facilitó la reproducción de DVD.
A medida que las CPU se volvieron mucho más potentes, se hizo posible decodificar los DVD "en software", que significa "en una computadora de uso general". Incluso con un procesador menos eficiente, tenía suficiente velocidad bruta y optimizaciones de canalización para que la reproducción de DVD funcionara según las expectativas de los usuarios.
Ahora tenemos CPU cientos o incluso miles de veces más potentes 2 que teníamos cuando se introdujeron los DVD. Cuando apareció Blu-ray, nunca necesitábamos hardware especializado, porque el hardware de uso general era más que lo suficientemente potente como para manejar la tarea.
Las CPU Intel modernas tienen instrucciones especializadas para la codificación y decodificación H.264 . Esto es parte de una tendencia en la que las CPU de uso general están adquiriendo funciones especializadas, todas en el mismo chip. No necesitamos una placa PCI Express separada para decodificar H.264 de manera eficiente como con los DVD desde el principio, porque las CPU contienen circuitos similares.
1 GPU se refiere a un procesador diseñado específicamente para realizar cálculos gráficos. Las tarjetas gráficas 2D más antiguas no eran GPU: eran simplemente framebuffers con DAC para hablar con el monitor. La diferencia es que las GPU contienen procesadores especializados que se destacan en ciertos tipos de cálculos y, a medida que pasó el tiempo, ahora son realmente programables (sombreadores). El hardware de gráficos siempre ha contenido los circuitos especializados necesarios para convertir los datos en un framebuffer a un formato que pueda emitirse a través de un cable (VGA, DVI, HDMI, DisplayPort) y que un monitor pueda entender. Eso es irrelevante para la discusión sobre la descarga de los cálculos a hardware especializado.
2 DVD-Video se lanzó en 1997, en un momento en que el Pentium 2 también se lanzó recientemente. Este era un momento en que las CPU aumentaban rápidamente de potencia: se podía considerar una nueva computadora P2 con un decodificador de DVD, o instalar una en una P1 un poco más antigua. Compare eso con una generación moderna 6 Core i7 usando la lista de MIPS de Wikipedia , y una CPU moderna es entre 590 y 1,690 veces más rápida. Esto se debe en parte a la velocidad del reloj, pero también al cambio a múltiples núcleos como estándar, así como a las CPU modernas que hacen mucho más trabajo por núcleo por tic de reloj. También es relevante que a medida que avanza la tecnología, Intel (que domina el mercado de las computadoras de escritorio y los servidores x86) agrega instrucciones especializadas para ayudar a acelerar las operaciones que los usuarios de computadoras de escritorio desean realizar (por ejemplo, decodificación de video).
Me sorprende que nadie haya mencionado todavía uno de los ejemplos más evidentes: la radio definida por software.
Si llevara un teléfono inteligente actual en el tiempo unos 50 años y se lo mostrara a un ingeniero competente desde mediados de la década de 1960, él podría comprender la mayor parte. ¿Que una supercomputadora se puede reducir a algo que cabe en su bolsillo? Cheque. ¿Que puede tener el equivalente de un televisor en color de calidad ultra alta en el paquete? Cheque. ¿Que es mucho más rápido, tiene mucho más almacenamiento, etc., que las computadoras de la época? Cheque. ¿Qué software se ha escrito que puede realizar funciones tan complejas? Cheque.
Pero dígale a ese ingeniero competente que, por cierto, este paquete contiene un conjunto de transmisores y receptores sensibles extremadamente eficientes: un transceptor digital de amplio espectro que puede transmitir y recibir simultáneamente en múltiples canales, comunicándose con una torre de infraestructura que puede estar a millas de distancia ; otro transceptor digital que comunica datos de alta velocidad con una estación base en algún lugar del edificio; otro transceptor digital que se comunica con dispositivos portátiles de baja potencia; y otro receptor que capta una señal débil de un satélite en órbita intermedia ... te llamaría mentiroso.
Te llamaría mentiroso porque sabe que los receptores de tan alta sensibilidad no pueden construirse sin una multitud de circuitos sintonizados, que filtran las estaciones vecinas y seleccionan la señal de interés. Y que tales circuitos requieren partes con tamaños que se definen más por la física que por la tecnología, como condensadores e inductores.
Entonces tendría que explicar que en una radio moderna, la mayor parte de eso se hace en software. Que después de que la señal entrante de la antena se convierta a una frecuencia intermedia y se amplifique un poco, luego se muestrea mediante un convertidor analógico a digital; y el procesamiento posterior tiene lugar en un procesador de señal digital. Toda esa sintonía, ese filtrado, que solía requerir toneladas de hardware en una radio de alta gama de la vieja escuela, puede describirse en forma de ecuaciones matemáticas; y si eso se puede hacer, el DSP puede ejecutar esas ecuaciones en tiempo real.
Este, creo, es uno de los ejemplos más evidentes de software que reemplaza hardware. Como resultado, llevamos teléfonos inteligentes en nuestros bolsillos que, incluso para un ingeniero competente de la década de 1960, sería similar a un truco de magia.
En comparación con esto, la idea de que la lógica simple de un abridor de puerta de garaje, una báscula de baño electrónica o un control remoto de TV hoy en día se implementa utilizando un microcontrolador de uso general y un software en lugar de hardware personalizado casi parece trivial (y ciertamente sería mucho más comprensible para nuestro hipotético ingeniero de la década de 1960 que la radio definida por software).
Considere este circuito:
Es un Flip Flop, también conocido como Multivibrador Biestable. Se puede reemplazar con este código:
static bool toggle;
if (toggle == true)
{
lblTop.BackColor = Color.Black;
lblBottom.back Color = Color.Red;
}
else
{
lblTop.BackColor = Color.Red;
lblBottom.BackColor = Color.Black;
}
toggle = !toggle;
Significa exactamente cómo suena.
Un ejemplo particularmente famoso es la unidad de disco II diseñada por Steve Wozniak para Apple II:
La principal innovación fue hacer que el controlador sea compacto mediante el uso de software, mientras que los competidores dependían del hardware. Como lo recuerda Bill Fernández, entonces técnico electrónico de Apple, "la ventaja clave del diseño [de Wozniak] [era] que usaba solo seis chips en lugar de los habituales 60 a 70
Otro ejemplo con el que probablemente estés más familiarizado: los emuladores. Reemplazan conjuntos completos de hardware (y software) completamente en software. CPU, varios chips de control, incluso dispositivos de almacenamiento.
Ahora no puede eliminar todo el hardware, eventualmente necesita algo para ejecutar el software. Pero, en general, cualquier tarea lógica que pueda implementar en hardware también puede implementarse en software (el rendimiento puede no ser idéntico, puede ser más lento, más rápido o en diferentes situaciones, dependiendo del hardware subyacente y la implementación).
Otro campo en el que esto es cierto son los sintetizadores.
Los primeros sintetizadores eran hardware 100% analógico que generaba formas de onda directamente y luego las modificaba a través de circuitos (filtros, amplificadores, etc.). Era posible sintetizar digitalmente el sonido, pero requería recursos informáticos que la persona promedio no podía pagar (un mainframe real y un convertidor personalizado de digital a analógico).
A medida que mejoró la fabricación de chips, los sintetizadores cambiaron de chips analógicos puros a chips sintetizadores controlados por señales digitales pero que seguían generando señales analógicas, y luego a síntesis digital pura (reproducción de muestras, síntesis FM , síntesis aditiva verdadera, etc.).
Hoy en día, los procesadores son lo suficientemente baratos y rápidos como para permitir a los programadores crear versiones informáticas de sintetizadores analógicos clásicos que duplican exactamente el comportamiento de los circuitos originales al simular su comportamiento en tiempo real; de hecho, los teléfonos y tabletas ahora son capaces de funcionar lo suficientemente rápido como para ejecuta estas recreaciones; El Korg iMS-20 es un ejemplo.
Tanto los sintetizadores clásicos como los nuevos están disponibles como complementos VST o AU para programas de audio digital como Ableton Live, Logic o Cubase, y estos proporcionan el acceso a los sintetizadores a personas que de otra manera no tendrían espacio o dinero para poder usar ellos.
Editar: en este punto también debería mencionar VCVRack , que simula la síntesis modular analógica en tiempo real. Un gran paso adelante de los tiempos de renderización de varias horas por unos segundos de música.
>:*3
.
En otros tiempos, el corte era bastante claro. La mayoría de las cosas que necesitaban una ejecución rápida tenían que implementarse en hardware. Tomemos, por ejemplo, un multivibrador que genera una frecuencia. No hace mucho tiempo, necesitabas un par de transistores, condensadores y, finalmente, un cuarzo para generar una frecuencia (fija). Ahora hay microcontroladores baratos que cuestan solo unos pocos centavos más o menos. Como son tan rápidos, puede usarlos fácilmente para crear un multivibrador. Y además, puede controlar fácilmente a través del software qué frecuencia generar y dónde solía necesitar soldar hardware diferente. Sin embargo, al pasar por una cierta frecuencia (pero ahora bastante alta) aún necesitaría hardware puro. Como puede ver, hay una línea entre ambos, pero la parte que puede resolver con el software está creciendo (exponencialmente).
Editar en realidad "El software puede reemplazar el hardware" no es realmente correcto. Es solo el hecho de que el hardware se volvió tan poderoso que puedes usarlo para ejecutar software que emula hardware. Entonces, en lugar de algunos transistores simples pero estáticamente soldados, usa millones de transistores que entienden el software. Por lo tanto, el término debería ser "El hardware ahora puede entender el software".
Una comparación entre el juego arcade Tank (circa 1976) y el juego de consola doméstica Combat (1977) ofrece un buen ejemplo de cómo el software podría reemplazar el hardware incluso hace 40 años.
El juego arcade Tank (circa 1976) permitió a dos jugadores conducir alrededor de tanques y dispararse el uno al otro. No incluía ningún tipo de procesador, sino que contaba con contadores de hardware para realizar un seguimiento de las posiciones horizontal y vertical del haz de electrones, tanques y disparos, así como las puntuaciones del jugador, los ángulos de rotación, el tiempo transcurrido. Tenía una lógica cableada para generar los datos de mapa de bits asociados con las puntuaciones, las formas del tanque de los jugadores y el fondo.
El sistema de computadora de video Atari 2600 (una consola de juegos para el hogar alrededor de 1977) incluía hardware para rastrear las posiciones horizontales (¡pero no verticales!) De dos objetos de mapa de bits y cuatro generadores de pulso de ancho variable, mantener y registrar un nivel bajo de 20 bits de ancho -Resolución del patrón gráfico del campo de juego, así como dos patrones de 8 bits de alta resolución, colores de cierre para los jugadores, fondo y campo de juego, y detectar colisiones entre los diversos objetos. También incluía un temporizador programable de uso general, pero el hardware tenía poco más que lo anterior. No obstante, a pesar de que el hardware es mucho más simple que el del juego Tank, el cartucho de cartucho ROM 2K Combat permite que el 2600 juegue el mismo juego básico pero con muchas otras características (una variedad de vehículos y fondos, tiros de rebote, etc.) porque puede reemplazar la mayor parte de la máquina arcade ' s hardware con software. Curiosamente, a pesar de que el Atari 2600 es probablemente la segunda plataforma de hardware más simple de cualquier sistema de videojuego para el hogar basado en microprocesadores vendido comercialmente, está tan bien diseñado para facilitar la sustitución del hardware por software que, cuando se programa correctamente, puede circular alrededor de muchos de sus competidores
La frase "el software puede reemplazar el hardware" es una advertencia para no intentar resolver problemas con el hardware a menos que haya ventajas muy claras. El software es 10x-50x más barato de desarrollar y casi infinitamente más barato de producir por unidad que el hardware. Hacer X en hardware no será una solución ganadora a menos que X realmente no se pueda hacer de manera eficiente en software.
El matiz se ha abordado bien, pero creo que es posible el obstáculo para OP, es que es muy imposible reemplazar el hardware con el software. El "hardware" siempre implica una cantidad significativamente menor de "hardware" que la solución de "software".
La diferencia es que la lógica de un proceso / algoritmo / cálculo se puede mover entre hardware y software. Se han dado muchos ejemplos, por lo que no daré más detalles.
En las primeras computadoras con memoria virtual, tenía que hacer que una tarea cambiara por una falta de TLB para cargar una nueva entrada de página. Una pieza de software del sistema operativo encontraría el proceso correcto y recorrería las tablas de páginas, encontraría la entrada correcta y la escribiría en el TLB. Antes de volver al proceso original para continuar.
Ahora, la mayoría de las CPU usan hardware para hacer el proceso, leer la tabla de páginas, recorrer las tablas de páginas y actualizar el TLB.
Ambos métodos deben usar el software para manejar las fallas de la página, pero como TLB omite fácilmente las fallas de la página, el hardware sigue superando al software.
En generel, si tiene un procedimiento simple que necesita manejar repetidamente, encontrará un reemplazo de hardware. Si tiene una solución de hardware compleja con un flujo de control complicado, puede simplificar el hardware mediante el uso de software.
Hay muchos casos en los que el software puede reemplazar el hardware y viceversa.
Un ejemplo clásico de esto es una tabla de búsqueda matemática. En lugar de calcular los resultados a expresiones comunes cada vez, se almacenan internamente en su coprocesador matemático y simplemente se mencionan cuando es necesario.
La mayoría probablemente ya esté familiarizada con los filtros de audio y el software que puede imitar instrumentos y dispositivos reales como pedales o amplificadores.
Se usará cualquier hardware que pueda crearse virtualmente, si es más rápido y / o más barato que el equivalente físico.
En contabilidad, ahora se puede enviar una copia impresa de una factura (por ejemplo) electrónicamente, y el software está comenzando a manejar la recepción de este tipo de papeleo y su procesamiento cada vez más. Es un excelente ejemplo de hardware reemplazado por software.