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

Does the age affect how I, as a programmer, should read it?



Literally, yes.

As example, the north bridge isn't as explicit today as the document makes it seem. A lot of functionality that used to be reserved for the north bridge is now being tucked away into the CPUs or motherboards themselves.

Still, worth reading.


Tbh, this paper is a bit much, unless you have a lot of time on your hands for it, and also the necessary understanding of CPU architecture to really grok it.

I think there are better blog posts out there that explain the concepts. "Cache locality" "memory cost of context switching" are some terms to put in search engines. Maybe add "thread local storage" in there too.

The big takeaway from this paper though, at least when I first read it, and the concept has risen to prominence in the years since- backed up by benchmarks- that Big O isn't really the end of the argument when it comes to performance.

The way CPUs work is that its extremely fast to rip through contiguous datasets. Jumping around to random memory addresses is way slower. A corollary to that is that jumping between threads is very slow for the same reasons- loading and unloading random chunks of memory. There are a lot of details around the specifics of why though- different cache levels and their latencies, and what happens when there is a cache miss, etc..

This lead HFT type programs to favor linear arrays to store things, and pinning threads to CPU cores, amongst other things, but that's the gist of it.


Yes, because the advice is necessarily hardware dependent.


This is why I think this document was too detailed and should have omitted low-level details. The way you optimize your code hasn't really changed since 2007, but the hardware churn since then triggers people to say "well akshually the northbridge..."


Yes and no. A lot of the concepts about memory management and how memory functions are still the same or similar. It's a good baseline to start with, and then look at how things have changed since then (they certainly have changed, but most of the paper still applies).


Perhaps yes. Multiples cores are now much more a thing than they were in 2007; that at least could be a change in emphasis. OSes may do things differently in terms of how they implement memory mapping. And so on.




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

Search: