这个我一定要怒答!
当年在IBM 的CellBE上 (就是PS3上那块)做了不少图像处理、视频编解码的工作。这个奇葩的异构体系结构有如下几个特性:
- 虽然号称一个芯片上有9个核,但是只有一个是通用核,普通程序只能在这个核上跑,没法和x86一样直接多线程!
- 另外的8个运算核只有一种模式那就是128位的向量运算,只能跑一些及其精简的指令,需要在C程序中嵌入伪汇编来编程。啊?加减乘除运算符?在运算核上放多了那个会被开除吧!
- 通用核与运算核并不共享内存空间, 他们之间所有的数据共享和同步都必须完全手工管理,想要传数据得自己调用硬件DMA,然后自己同步!
- 因为代码全部展开能最大增加优化潜力,基本一切函数都被变成了宏!
- 要想发挥性能一定把程序并行、向量化。用trick,gotcha一堆!人能看懂的程序都不是好程序!
- 8个运算核上跑的程序不能用gdb debug,唯一靠谱的调试手段就是printf,但是因为运算核上printf也是通过DMA跑去通用核打印到终端,所以不同核之间的printf并不能保证同步!
- 只