我想为将来的硬件练习编程代码。这些是什么?想到的两件主要事情是64位和多核。我还注意到缓存很重要,GPU有自己的技术,但现在我对任何图形编程都不感兴趣。
我还应该知道什么?
-edit-我知道其中很多都在现在,但很快所有的cpus都将是多核的,并且线程化将更加重要。我认为是endians(大与小),但发现它并不重要,并且已经有一个大的endian CPU来测试。
答案 0 :(得分:6)
如果您想深入了解具有完全64位支持的“主流”操作系统,我建议您开始针对Mac OS X“Snow Leopard”的测试版进行编码(代号为10.6)。其中一个重要的增强功能是Grand Central,它是开发人员为多核系统编写代码的“工具”。 Grand Central不仅应该在核心之间分配工作负载,还应该在GPU之间分配工作负载。
同样非常重要的是iPhone,Android等智能设备的爆炸式增长。我坚信一些即将上市的所谓“上网本”将依赖于Android和iPhone OS等操作系统,因此知道如何针对其SDK的代码,以及了解如何针对移动设备优化代码非常重要(例如,优化性能图形或其他方面,电池使用情况)。
答案 1 :(得分:6)
答案 2 :(得分:3)
我无法预知未来,但要研究的一个方面是类似于PS3中使用的CELL processor,而不是许多相同的通用核心,只有一个(尽管能够对称多线程) )加上许多更具特色的核心。
在一个简单的分析中,Cell处理器可以分为四个部分:外部输入和输出结构,主处理器称为Power Processing Element(PPE)(双向同步多线程Power ISA v.2.03兼容核心) ,8个全功能协处理器,称为协同处理元件(SPE),以及连接PPE,输入/输出元件和SPE的专用高带宽循环数据总线,称为元件互连总线或EIB。
答案 3 :(得分:2)
64位和多核是现在而不是未来。
关于未来: 量子计算或类似的东西?
答案 4 :(得分:2)
学习OpenCL怎么样?它是一种基于C的大规模并行处理语言。它与nVidia的CUDA类似,但与供应商无关。目前还没有重大的实现,但是很快就会看到一些。
对于64位,不要真的担心。除非你做的是低级别的东西(内核),否则编程实际上并没有什么不同。更高级别的框架(如Java和.NET)允许您在32位和64位计算机上运行代码。即使是C / C ++也允许你这样做(但不是那么透明)。
答案 5 :(得分:1)
我同意Oli的回答(+1)并且会补充说,除了64位环境之外,您还要考虑多核环境。该行业正在接近原始速度改进周期的结束。但我们看到越来越多的多核CPU。因此,并行或并发编程 - 这种方式很难实现 - 很快就会变得非常需要。
您如何为此做好准备并进行练习?我一直在问自己同样的问题。因此,在我看来,像ML,Haskell,LISP,Arc,Scheme这样的函数式语言是一个很好的开始因为真正的函数式语言通常没有副作用,因此非常“可并行化”。 Erlang是另一种有趣的语言。
我发现的其他有趣的发展包括
答案 6 :(得分:0)
当然这个问题很难回答,因为没有人知道未来的硬件会是什么样子(至少从长远来看),但多线程/并行编程很重要,而且在某些年份肯定会更加重要。
我还建议使用像CUDA / Stream这样的GPU计算,但这可能是一个问题,因为这很可能会在接下来的几年中发生很大变化。