Я считаю, что причиной этого является компьютерная графика. При выполнении кода OpenGL или Direct3D SM использует память с прямым отображением (совместно используемую CUDA) для одной цели (например, атрибуты вершин) и ассоциативно-множественную память (кэш L1) для другой. Для графического конвейера архитекторы могут специально настроить, сколько памяти им нужно для таких вещей, как атрибуты вершин, на основе пределов пропускной способности вершин других единиц (например).
Размышляя об архитектурных решениях для графических процессоров (и, вообще говоря, о дизайне процессора), важно помнить, что многие решения в значительной степени экономичны. У GPU Computing есть дневная работа: игры и графика. Если бы не работа в этот день, вычисления на GPU не стали бы экономически жизнеспособными, а массовые параллельные вычисления вряд ли стали бы доступными для масс.
Практически каждая функция графического процессора для вычислений каким-то образом используется в графическом конвейере. Если это не так (подумайте о памяти ECC), то его необходимо финансировать за счет более высоких цен на продукты для рынков, которые его используют (например, HPC).