次はFast Unaligned Cache Accessである(Photo20)。現在のSSE系の命令の最大の欠点は、データのAlignmentが要求されることである。プレゼンテーションにもある通り、SSE系命令は原則として16Bytes Boundaryに沿った形でメモリをアクセスする。なので、データがこの境界をまたぐ様な配置になっている場合、遅くなるのを覚悟でUnaligned命令を使うか、あらかじめデータの並べ替えを行ってからSSE命令を使うといった面倒さがあった。これに対し、NehalemではデータがUnaligned命令を高速化したことで、Unaligned命令を多用しても性能差が出ないようになった。これはSSE命令を使って、特に科学技術計算などを行わせる場合に大きく効果が出やすい。どちらかといえば、HPC用途を考慮した改良と言えよう。
最後がFaster Synchronization Primitivesである(Photo21)。これはもう単純に、LOCK prefixとかXCHG命令の処理を高速化したことで、複数Thread間の同期が高速化されるという話だ。
Photo21:例えばXCHGの場合Pentium 4は論外として、Conroe/PenrynだとLatencyは1.5 Cycle、Throughputは1 Cycleになっている。恐らくはNehalemではLatencyも1 Cycleにしたという話であろう。 |
もう一つ、忘れてはいけないのはSMTの搭載であろう(Photo22)。Pentium 4で搭載されたHyper-Threadingでおなじみの機構である。問題は、どの程度のリソースをSMT用に分けたかという話で、例えば同じくSMTを搭載するAtom Processorの場合、Register FileすらThread別に分けるといった構造になっているが(Pentium 4の場合、RAT(Register Alias TableはThread毎に搭載されていたが、Register Fileそのものは共通である)、現状ではまだこのあたりの詳細は未公開のままだ(Photo23)。