1. 常量内存只是全局内存的虚拟地址形式,硬件上并没有特殊的常量内存块。
2. 常量内存使用16位地址进行访问,这能使访问更快,但也限制了其大小为64KB。
2. 常量内存具有高速缓存,在计算能力为1.x的设备上全局内存没有高速缓存,而常量内存具有。更高级的设备上两者都有高速缓存。
3. 常量内存支持将单个值广播到线程束中每个线程。
4. 分析虚拟汇编代码可知,常量内存在编译后被字面值代替,因此对常量内存的访问实际上并没有读内存这个动作,而是直接代替 以字面值,因此访问常量内存比全局内存快。以数组形式声明变量可防止编译后常量被字面值代替,此时与全局内存的访问速度是相同的。
5. 在计算能力为1.x的设备上,对于数据不太集中或数据重用率不高的情况,尽量不要使用常量内存。因为缓存击中率不高反而会减慢速度。