Como dijo Mark Harrison, el cuello de botella es una crítica tanto del modelo de programa almacenado que von Neumann propuso como de la forma en que los programadores en ese momento y ahora se han adaptado a pensar solo en esos términos.
La crítica subyacente es que el modelo de programación se basa en la transferencia constante de datos entre la memoria y la unidad de procesamiento. Tal configuración es un desperdicio ya que un buen porcentaje del tiempo, esa información no necesita ser transferida.
Las optimizaciones modernas de almacenamiento en caché, subprocesos múltiples y acceso a memoria (canal de comando de baja latencia, palabra crítica primero, etc.) han intentado esencialmente convertir la arquitectura general en algo menos von Neumann a través de la abstracción de hardware.
- ¿Cuándo podrán las computadoras leer el cerebro de un humano?
- ¿Cómo fue usar teclados de computadora antiguos?
- ¿Qué tan bueno es el programa de doble titulación CS en IIIT Hyderabad?
- ¿Cuáles son algunas clases abiertas en Caltech?
- ¿Cuáles son las diferencias entre subprocesos y subprocesos múltiples?
Los cachés ocultan la mayoría de los casos en los que los datos que no necesitan ser devueltos a la memoria, por ejemplo, si se escriben, se accede nuevamente y luego se descartan, no se escribirán innecesariamente. El subprocesamiento múltiple sirve para ocultar la naturaleza serializada de las tareas. Los controladores de memoria intentan agrupar los accesos para eliminar el desperdicio de accesos de una sola palabra a través de un amplio bus de datos.
Sin embargo, todas estas abstracciones de hardware no serían necesarias si la programación, incluida la arquitectura subyacente del compilador y el procesador, no evolucionara bajo el modelo serializado de carga, almacenamiento y cálculo. Las GPU y el hardware de funciones fijas (procesadores de imagen, etc.), por ejemplo, representan otros modelos informáticos donde los datos viajan con las instrucciones previstas y no hay una separación fija y larga entre los recursos informáticos y la memoria; Ambos están estrechamente unidos.
La forma en que uno puede adaptar dichos conceptos a la informática general sigue siendo un tema de investigación y, hasta ahora, no creo que nadie haya encontrado una buena solución para ello.