Hacker News new | past | comments | ask | show | jobs | submit login

Why not have a 'pin-to-cache' functionality then.



What would it do when you pin more things than your cache can hold? Trigger an interrupt? It basically becomes another memory layer you'd need to manage.


The higher levels of the stack, be it hardware or software, need to make sure that never happens.

That’s how GPUs are doing that. Each thread group can use a limited amount of SRAM, programs declare in advance how many bytes they need. Then in runtime the scheduler who dispatches tasks to cores enforces that limit by never dispatching too many thread groups on each core.


Well duh. How is using SRAM going to be any different when you run out of that?


I was not here arguing in favor of explicitly tiered memory. The implied answer to your original question, "why not have a pin to cache functionality?" is that it's effectively the same as having another OS managed memory layer, which is bad since it complicates the architecture. I'll take some cache misses over having to manage it explicitly.


Not only that, if you had enough cache to fit everything then there wouldn't be cache misses, and if you didn't, cache misses are pretty unavoidable.

It's like the existing APIs for pining things in memory so they can't get paged out. They have very specific uses and normal programs generally don't use them and shouldn't.


Much of the cache "management" can be done with specialist load/store instructions that skip the cache rather than being OS managed like a mapping.


They certainly have this. A lot of embedded boot loaders run entirely from cache until they can bring main memory up and check it.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: