Параллельные программы проще писать для тысяч потоков, чем для десятков потоков. Графические процессоры имеют тысячи потоков, с аппаратным планированием потоков и балансировкой нагрузки. Хотя современные графические процессоры подходят главным образом для параллельных небольших ядер, у них есть инструменты, которые делают такое программирование тривиальным. Cell имеет только несколько процессоров порядка 10 с в пользовательских конфигурациях. (Производные Cell, используемые в суперкомпьютерах, пересекают линию и имеют сотни процессоров.)
ИМХО одной из самых больших проблем с Cell было отсутствие кеша инструкций. (Я громко спорил об этом с архитекторами Cell на самолете с конференции MICRO в Барселоне в 2005 году. Хотя они и не соглашались со мной, я слышал то же самое от пользователей компьютеров supersuper. - У GPU такая же проблема, хотя они жалуются. Но вставка кода в память команд фиксированного размера - это боль. Добавьте оператор IF, и производительность может упасть с обрыва, потому что вы должны начать использовать оверлеи. Управлять структурами данных намного проще, чем избегать добавления кода для исправления ошибок в конце цикла разработки.
У GPU изначально были те же проблемы, что и у ячеек - ни кешей, ни I, ни D.
Но у графических процессоров было больше потоков, параллелизм данных намного лучше, чем у Cell, что они поглотили этот рынок. Оставляя Cell только заблокированным в консоли пользователям, и кодам, которые были более сложными, чем GPU, но менее сложными, чем код CPU. Сжатый в середине.
И, тем временем, графические процессоры добавляют I $ и D $. Таким образом, их становится легче программировать.