Expertos en software ignoraron la economía del hardware
... o "Moore tenía razón y ambos estaban equivocados"
Lo más importante que se pasó por alto en este debate fue el impacto de la tecnología y la economía de fabricación de CPU, impulsada por la reducción de los tamaños de los transistores como se expresa en la Ley de Moore (no es sorprendente como si supieran mucho sobre el hardware de la CPU, estos tipos estudiaron y debatieron sobre el software, no Fabricación de CPU o economía). Los costos fijos de fabricación que se amortizan sobre las CPU (por ejemplo, diseño ISA, diseño de CPU e instalaciones de producción de CPU) han crecido rápidamente, aumentando así el valor de las economías de escala; con los costos por unidad de CPU (en términos de "inversión por dinero" y "inversión por vatio"), el costo de una CPU no necesita amortizarse en una selección tan amplia de funciones para proporcionar valor, por lo que la computación en productos con función fija ha explotado; Los presupuestos de transistores de CPU han crecido exponencialmente,
1. La escala de CPU gana sobre la diversidad de CPU
La importancia de las economías de escala ha hecho que los beneficios de un ISA / CPU dirigido a un mercado más grande (por lo tanto, más amplio) supere los beneficios potenciales de las opciones de diseño que reducen el mercado para un ISA / CPU. Los sistemas operativos pueden abarcar porciones cada vez más grandes del mercado por ISA / CPU compatible, por lo que hay poca necesidad (o incluso ninguna) de ejercicios de transferencia para permitir que prospere un ecosistema de sistema operativo. Los dominios con problemas Los objetivos de ISA y CPU tienden a ser tan amplios que se superponen en su mayoría, por lo que para cualquier software más allá de un compilador, el tamaño de los ejercicios de portabilidad también ha disminuido. Podría decirse que tanto Torvalds como Tanenbaumsobrestimó la parte del diseño y la implementación del núcleo que ahora debe ser ISA o incluso específica de la CPU. Como describió Tanenbaum, los núcleos modernos del sistema operativo resumen las distinciones entre CPU e ISA. Sin embargo, el código específico de CPU / ISA en los sistemas operativos modernos es mucho más pequeño que un microkernel. En lugar de implementar el manejo / programación de interrupciones, gestión de memoria, comunicación y E / S, estos bits no portátiles abordan solo una pequeña fracción de la implementación de esos servicios, y la gran mayoría de la arquitectura de incluso estas funciones centrales del sistema operativo es portátil.
2. El código abierto ganó la batalla, pero perdió la guerra
Más beneficios por el dinero significa que una mayor parte de la informática se realiza mediante productos de función fija, donde la capacidad de modificar el producto no es parte de la propuesta de valor para el cliente. Ahora, irónicamente, el código abierto ha florecido en estos dispositivos de función fija, pero la mayoría de las veces, los beneficios de esas libertades se realizan más por aquellos que fabrican los productos que por los usuarios finales (lo que en realidad era cierto en el mercado del software incluso en aquel entonces: Microsoft era un gran consumidor de software de código abierto, pero sus clientes no lo eran). Del mismo modo, se podría argumentar que el código abierto ha tenido más dificultades en el espacio de escritorio de uso general que en cualquier otro lugar, pero a medida que la informática web y en la nube ha crecido, la informática de escritorio se ha utilizado cada vez más para un propósito más limitado (principalmente con un navegador) con las funciones restantes ejecutándose en la nube (irónicamente, principalmente en plataformas de código abierto). En resumen: el código abierto realmente posee el espacio informático de propósito general, pero el mercado se ha vuelto más sofisticado; El empaque de productos informáticos con menos frecuencia se detiene en la función de propósito general, pero continúa junto con el producto destinado a funciones fijas, donde gran parte de la ventaja de la informática de código abierto está en conflicto con los objetivos del producto.
3. 2 n Crecimiento significa k Los ahorros fijos no son importantes
El crecimiento exponencial de los presupuestos de transistores ha traído consigo la constatación de que el costo del presupuesto de transistores de una arquitectura CISC es casi completamente fijo. La ventaja estratégica de RISC fue que movió la complejidad del conjunto de instrucciones de la CPU al compilador (sin duda, en parte motivado por el hecho de que los escritores de compiladores se beneficiaron mucho menos de los ISA complejos que los desarrolladores humanos que codifican en ensamblador, pero los compiladores podrían razonar mucho más fácilmente) matemáticamente sobre, y por lo tanto explotar, un ISA más simple); los ahorros de transistores resultantes podrían aplicarse para mejorar el rendimiento de la CPU. La advertencia era que el ahorro en el presupuesto del transistor de un ISA más simple era mayormente fijo (y la sobrecarga en el diseño del compilador también era mayormente fija). Si bien este impacto fijo fue una gran parte del presupuesto en el día, Como uno puede imaginar, solo se necesitan unas pocas rondas de crecimiento exponencial para que el impacto se vuelva trivial. Este impacto en rápida disminución, combinado con la importancia cada vez mayor antes mencionada de la monocultura de la CPU, significó una oportunidad muy pequeña para que cualquier ISA nueva se establezca. Incluso cuando los nuevos ISA tuvieron éxito, los ISA modernos "RISC" no son los ISA ortogonales descritos por la estrategia RISC, ya que el crecimiento continuo en los presupuestos de transistores y la aplicabilidad más amplia del procesamiento SIMD en particular ha alentado la adopción de nuevas instrucciones ajustadas para funciones específicas. Este impacto en rápida disminución, combinado con la importancia cada vez mayor antes mencionada de la monocultura de la CPU, significó una oportunidad muy pequeña para que cualquier ISA nueva se establezca. Incluso cuando los nuevos ISA tuvieron éxito, los ISA modernos "RISC" no son los ISA ortogonales descritos por la estrategia RISC, ya que el crecimiento continuo en los presupuestos de transistores y la aplicabilidad más amplia del procesamiento SIMD en particular ha alentado la adopción de nuevas instrucciones ajustadas para funciones específicas. Este impacto en rápida disminución, combinado con la importancia cada vez mayor antes mencionada de la monocultura de la CPU, significó una oportunidad muy pequeña para que cualquier ISA nueva se establezca. Incluso cuando los nuevos ISA tuvieron éxito, los ISA modernos "RISC" no son los ISA ortogonales descritos por la estrategia RISC, ya que el crecimiento continuo en los presupuestos de transistores y la aplicabilidad más amplia del procesamiento SIMD en particular ha alentado la adopción de nuevas instrucciones ajustadas para funciones específicas.
4. Simple: separación de preocupaciones. Complejo: Separación del espacio de direcciones.
El kernel moderno de Linux (junto con la mayoría de los otros kernels) se ajusta a la definición más bien suelta de un macrokernel y no a la definición más bien que estrecha de un microkernel. Dicho esto, con su arquitectura de controlador, módulos cargados dinámicamente y optimizaciones de multiprocesamiento que hacen que las comunicaciones en el espacio del núcleo se parezcan cada vez más al mensaje de un microkernel, su estructura se asemeja más a un diseño de microkernel (tal como lo encarna Minix) que al diseño de macrokernel (tal como lo encarna el diseño de Linux en el momento de la discusión). Al igual que un diseño de microkernel, el kernel de Linux proporciona comunicación generalizada, programación, manejo de interrupciones y administración de memoria para todos los demás componentes del sistema operativo; sus componentes tienden a tener un código distinto y estructuras de datos. Mientras que los módulos se cargan dinámicamente, Las piezas de código portátil poco acopladas, que se comunican a través de interfaces fijas, no emplean una propiedad restante de los microkernels: no son procesos de espacio de usuario. Al final, la Ley de Moore aseguró que los problemas motivados por problemas de hardware como la portabilidad (una preocupación de Tanenbaum) y el rendimiento (una preocupación de Torvalds) disminuyeron, pero los problemas de desarrollo de software adquirieron una importancia capital. El resto de las ventajas no realizadas que podría proporcionar una separación de espacios de direcciones se ve compensada por el equipaje adicional impuesto al software del sistema operativo debido a las limitaciones de diseño y la mayor complejidad de las interfaces de componentes. s La ley aseguró que los problemas motivados por problemas de hardware como la portabilidad (una preocupación de Tanenbaum) y el rendimiento (una preocupación de Torvalds) disminuyeron, pero los problemas de desarrollo de software adquirieron una importancia capital. El resto de las ventajas no realizadas que podría proporcionar una separación de espacios de direcciones se ve compensada por el equipaje adicional impuesto al software del sistema operativo debido a las limitaciones de diseño y la mayor complejidad de las interfaces de componentes. s La ley aseguró que los problemas motivados por problemas de hardware como la portabilidad (una preocupación de Tanenbaum) y el rendimiento (una preocupación de Torvalds) disminuyeron, pero los problemas de desarrollo de software adquirieron una importancia capital. El resto de las ventajas no realizadas que podría proporcionar una separación de espacios de direcciones se ve compensada por el equipaje adicional impuesto al software del sistema operativo debido a las limitaciones de diseño y la mayor complejidad de las interfaces de componentes.
Curiosamente, lo que ha sido una tendencia fuerte es la aparición del hipervisor, que al igual que los microkernels, abstrae el hardware. Algunos afirman que los hipervisores son microkernels. Sin embargo, la arquitectura del hipervisor es diferente, ya que las responsabilidades destinadas a ser propiedad de los microkernels son manejadas por los núcleos "invitados" sentados encima, con hipervisores multiplexados entre ellos, y la abstracción del hipervisor no es un espacio genérico de mensajes y direcciones de memoria, sino predominantemente una emulación de hardware real.
En conclusión: el futuro favorece a quienes adoptan una semántica menos estricta
* .. o "los tontos apestan al predecir el futuro"
En la práctica, gran parte de lo correcto / incorrecto en el debate es una cuestión de semántica (y eso fue parte de lo que Torvalds estaba discutiendo y en mi humilde opinión Tanenbaum no pudo apreciarlo completamente). Es difícil hacer definiciones precisas sobre el futuro porque hay muchos factores fuera del argumento que pueden entrar en juego; una semántica más flexible significa que tus predicciones son un objetivo más grande en el tablero de dardos que el del otro tipo, lo que te da mejores probabilidades. Si ignora la semántica, los argumentos presentados por Torvalds y Tanenbaum eran correctos sobre muchas cosas y erróneos sobre muy poco.
tl; dr
La mayoría de los ISA no se ajustan a la definición semántica de RISC, pero aprovechan la mayoría de las ventajas de diseño que eran distintivas de las CPU RISC en ese momento; la cantidad de SO que es específica de la CPU es menor de lo que Tanenbaum esperaba, y mucho menos de Torvalds; el código abierto domina la computación de propósito general, pero los consumidores de ese mercado ahora son principalmente aquellos que empaquetan la computación en productos con funciones más fijas donde gran parte del beneficio del software de código abierto no se realiza; separar la función del sistema operativo en los espacios de direcciones no demostró ser beneficioso, pero separar la función del sistema operativo en el hardware "virtual" sí. Si quiere afirmar que sus predicciones demostraron ser correctas, deje la mayor cantidad de espacio semántico de maniobras posible, al igual que el Sr. Torvalds.
PD Una observación irónica final: Linus Torvalds es uno de los defensores más firmes de mantener tanta funcionalidad nueva como sea posible en el espacio de usuario y fuera del kernel de Linux.