2010年12月28日 星期二

超過 16KB 的記憶體配置後,造成程式緩慢之因素的猜測。

Shady 之前曾說過,
當配置的記憶體容量超過 16KB 時,
不管是出自 Linux 本身之函式、別人之函式或 Shady 的,
都將有很高的 tick 值出現。
而此情形有可能大於 4KB 記憶體配置就會出現,
只是 Shady 還未有稍大於 4KB 的測試就是了...XD

現在 Shady 最大的懷疑是" cache 堵塞"為主要原因,
因為不管是出自別人之函式或 Shady 的,
都有不當使用過多和未適時使用 lvxl、stvxl、dcbf等指令,
而這些指令都是將 cache line 標記為"最近最少使用"或"無效化",
所以目前 Shady 正在實驗這些指令的特性和它們在程式中的順序,
以更改配置的記憶體容量超過 16KB 時所造成的大失速。

當然主要的原因可能不在此處,
但目前也只能朝這方向猜測,
因為都已經用組語撰寫了,
甚至還避免使用微碼指令。
所以除了這個方向,
Shady 實在是想不出還會有啥其它的原因...囧rz

沒有留言:

張貼留言