Tanto hardware como software van de la mano a la hora de optimizar una determinada arquitectura computacional. En mi opinión no tiene sentido tratarlos por separado. APIs como Direct3D/OpenGL/Vulkan no se desarrollan al margen de Nvidia/AMD, y éstos no implementan innovaciones hardware sin colaborar estrechamente con ellas.
Un importante cuello de botella de la Arquitectura Von Neumann actual radica en la transferencia de datos entre sus componentes. Y a ello se han dedicado los esfuerzos de la nueva generación, aprovechando las nuevas oportunidades que ofrecen los SSD cuya disponibilidad a precios razonables es mucho más favorable de la que era en 2013. Igualmente, los avances en transmisión y algoritmos de compresión de datos han evolucionado de manera notable en estos últimos 6 años, impulsados por el auge del cloud computing en el ámbito empresarial y de investigación.
Dicho esto, no importa cuán rápido se desarrolle el hardware ni cuán potente sea, la eficiencia de software es una necesidad crucial para lograr ofrecer una mejor eficiencia, así como ayudar a establecer un modelo de desarrollo más sostenible. Con un software eficiente, un sistema puede ejecutar más instancias por unidad de tiempo, porque el consumo medio de recursos será menor. Por lo tanto, en una arquitectura hardware proporcionada, la productividad y eficiencia alcanzada por el sistema será mayor si el software es eficiente. Un ejemplo es la implementación de módulos de memoria persistente (PMem) en datacenters, que no sería posible sin una interfaz de software adecuada, ni con una adecuada virtualización del SO.
Tampoco tiene sentido hablar sólo de rendimiento. Además del rendimiento, hay otros atributos clave adicionales, como ya comenté: seguridad, adaptabilidad, escalabilidad, disponibilidad, facilidad de uso, consumo, y restricciones de peso y tamaño. Entre estos atributos, el rendimiento no suele ser el único motivo de preocupación. Cuando otro atributo se vuelve más crítico que el rendimiento, es muy probable que éste se sacrifique en favor del atributo más crítico, siempre y cuando el software cumpla con los requisitos de rendimiento predefinidos. De hecho, lograr la mayor parte de los atributos mencionados anteriormente traerán más o menos impacto en el rendimiento. Por ejemplo, si la seguridad es más crítica, entonces se añadiría un módulo de cifrado a la arquitectura, con una penalización del rendimiento.
Así pues, en situaciones prácticas, la optimización del rendimiento está permitida si y solo si otros atributos de calidad que se requieren no se ven comprometidos. Este principio inviolable generalmente hace que la optimización del rendimiento sea difícil y costosa, es decir no sostenible.
Sin embargo, estos problemas de rendimiento puntualmente se pueden resolver con fuerza bruta. Un hardware robusto tendrá más tolerancia a ineficiencias, con un coste aceptable. Por ejemplo, en el caso del SSD de PS5, para solventar problemas de latencia se ha optado por un SSD de gama alta de 12 canales, de manera que la cola de comandos de ejecución enviadas al SSD no se sature; de manera adicional se ha implementado un sistema de 6 niveles de prioridad frente a los 4 soportados por el estándar NVMe.
Para suplir en PC la ausencia de esos 6 niveles de prioridad en los SSD comerciales, bastaría con uno cuyo rendimiento sea un 20% superior a los 5,5 GB/s del montado por PS5 + acceso de bajo nivel al controlador NVMe
Es decir, con fuerza bruta + software podemos paliar ciertas carencias a nivel de arquitectura.