بله ایجاد میکنه .
یکی از روش های افزایش Cache Hit اینه که داده های که بیشتر استفاده میشن رو کنار هم تعریف کنید .
با توجه به ساختاری که اینجا تعریف کردید ، و اگر فرض کنیم که Cache Line اندازش 64 بایت باشه . مثلا اگه شما اول متغییر b اول بخواهید تغییر بدید ، از آدرس b تا 64 بایت به بعد میره داخل Cache . پس در این صورت وقتی که میخواید مقدار f رو تغییر بدید دیگه لازم نیست که سیستم دوباره اون رو بریزه توی Cache . چون درحال حاضر توی Cache هست .
و حالا اگه شما بخواهید a رو تغییر بدید ، چون از آدرس b تا 64 بایت به بعد داخل Cache بارگذاری شده ، و چون a داخل این آدرس نبوده ، پس باید از آدرس a به بعد دوباره داخل Cache ریخته میشه . پس بهتر بود اولین متغییری که قرار بود بارگزاری بشه ( برای خوندن/نوشتن ) متغییر a بود .
چون با این کار ۲ متغییر بعدی هم داخل Cache بارگزاری میشدن . این مثال سادش بود . برای ساختار هایی که اندازه های بزرگتری دارند باید بیشتر دقت کنی . و یه نکنه دیگه هم که خیلی مهمه اینه که متغییر هات رو همیشه Align کن .
درکل میشه گفت که داده هایی که بیشتر استفاده میشن و یا پشت سر هم استفاده میشن رو کنار هم تعریف کن . طوری که با بارگزاری اولین متغییر مورد نظر متغییر های بعدی هم توی Cache قرار بگیرن .
با رعایت کردن قوانین Cache و Align کردن های مناسب میتونید سرعت اجرای برنامه رو خیلی خیلی زیاد کنید .