我想为未来的硬件练习编程代码。这些是什么?想到的两个主要事物是 64 位和多核。我还注意到缓存很重要,GPU 有自己的技术,但现在我对任何图形编程都不感兴趣。
我还应该知道什么?
-edit- 我知道现在有很多这样的,但很快所有的 cpu 都将是多核的,线程将变得更加重要。我考虑了字节序(大字节序与小字节序),但发现这并不重要,并且已经有一个大字节序 CPU 可供测试。
如果您想深入了解完全支持 64 位的“主流”操作系统,我建议您开始针对 Mac OS X“Snow Leopard”(10.6 的代号)测试版进行编码。其中一项重大改进是 Grand Central,它是开发人员为多核系统编写代码的“设施”。Grand Central 不仅应该在核心之间分配工作负载,还应该将工作负载分配给 GPU。
同样重要的是智能设备的爆炸式增长,如 iPhone、Android 等。我坚信一些即将到来的所谓“上网本”将依赖于 Android 和 iPhone OS 等操作系统,因此知道如何针对它们进行编码SDK,并且知道如何为移动设备优化代码非常重要(例如优化性能图形或其他,电池使用)。
我无法预测未来,但要研究的一个方面是类似于 PS3 中使用的CELL 处理器,其中没有许多相同的通用内核,只有一个(虽然能够对称多线程)加上许多内核更具体的目的。
在一个简单的分析中,Cell 处理器可以分为四个组件:外部输入和输出结构、称为电源处理元件 (PPE) 的主处理器(一个双向同步多线程 Power ISA v.2.03 兼容内核)、八个完全- 称为协同处理元件或 SPE 的功能性协处理器,以及连接 PPE、输入/输出元件和 SPE 的专用高带宽循环数据总线,称为元件互连总线或 EIB。
CUDA和OpenCL的相似之处在于您将通用代码和高性能计算分成单独的部分,这些部分可以在不同的硬件和语言/api 上运行。
64 位和多核是现在而不是未来。
关于未来:量子计算或类似的东西?
当然这个问题很难回答,因为没有人知道未来的硬件会是什么样子(至少从长远来看),但是多线程/并行编程很重要,而且在未来几年肯定会更加重要。
我还建议使用像 CUDA/Stream 这样的 GPU 计算,但这可能是一个问题,因为这很可能会在未来几年发生很大变化。