●16bytes指令fetch将提高功耗
CoreMA架构来自L1缓存的指令取出是16bytes模块,不过总的来说一次取出4条16bytes的命令有些偏窄。这个会成为性能瓶颈从而导致下行指令宽度的不足而影响性能。
指令的优化
实际上AMD公司也主张将命令存取部分的宽度提升两倍至32bytes。但是在Nehalem上并没有提升。对此RonakSinghal先生(PrincipalEngineer, Oregon CPU Architecture,Intel)做出了如下介绍:“我们没有提升存取单元的原因就是目前这还不是性能的瓶颈。如果准确得说就是提升也是相对的。因为提升会导致成本的增加以及功耗的增加。当然我们也进行了相关的讨论。认为进行提升之后性能提升比并不好。同时虽然性能提升了,但是性能功耗比并不满意。
指令存取部分的升级需要考虑到功耗与性能的比值,因此Nehalem选择的是降低功耗而不进行提升。对于32bytes的fetch单元,Intel觉得不必要,甚至会可能破坏功耗比。指令fetch宽度影响着CoreMA/Nehalem的软件最优化。如果指令长且多的话,那么执行效率就会下降。为此Intel公司在日本2006年6月举行的“HPCDeveloperConference”大会上进行了说明。
Intel公司准备将来通过指令的改变解决这个问题,比如将会通过Nehalem下一代的微处理器架构“SandyBridge实现的新的指令扩张由“IntelAdvanced Vector Extensions (IntelAVX)”变为“VEX(VectorExtension)”。如果SSE指令换为AVX指令,那么问题将会减轻。这样就可以在非硬件方面进行提升。
发送6条16byte指令会导致性能下降