Ngoài tất cả mọi thứ mà George đề cập, SPU thực sự được coi là bộ xử lý vector trực tuyến tốt hơn. Chúng hoạt động tốt nhất khi bạn có một thuật toán hoạt động trên các chuỗi dữ liệu số, có thể được cấp thông qua bộ nhớ hạn chế của SPU thông qua DMA, thay vì SPU nạp một đoạn bộ nhớ, cố gắng hoạt động trên nó, thấy rằng nó cần để theo một con trỏ đến một nơi nào đó bên ngoài bộ nhớ của nó, hãy tải rằng, tiếp tục, tìm một số khác, v.v.
Vì vậy, việc lập trình cho chúng không phải là một mô hình đơn giản về đồng thời và chủ đề; nó giống như tính toán số học hoặc tính toán khoa học hiệu suất cao. Nó cũng là truy cập bộ nhớ không đồng bộ được đưa đến một cực đoan. Ngoài ra, mọi bộ xử lý đều theo thứ tự với đường ống sâu, do đó, lập trình viên phải nhận thức rõ hơn về các mối nguy hiểm dữ liệu và các bong bóng lệnh và tất cả các tối ưu hóa vi mô mà chúng tôi được thông báo cho trình biên dịch "nên" xử lý cho chúng tôi (nhưng nó thực sự không). Những thứ như các nhánh bị lỗi, tải-hit-cửa hàng, nhớ cache, vv làm tổn thương nhiều hơn so với một bộ xử lý không theo thứ tự có thể sắp xếp thứ tự các hoạt động xung quanh để ẩn các độ trễ đó.
Ví dụ cụ thể, hãy xem blog của Mike Acton CellPerformance. Mike là người yêu thích sự hài lòng của cô trong chương trình kinh doanh, và anh ấy đã thực sự kiếm được những câu hỏi về vấn đề này.
Câu trả lời Glib: "đau đớn và đau khổ!" –