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

I was planning on same thing, until I estimated how much faster modern PC was at single threaded compilation tasks compared to my old one, and how it impacted my productivity. I should of upgraded earlier.



What did you move from and then to? As near as I can tell IPC haven't increased that much in the last little bit. Or was your CPU pretty old?


I thought so also, but decade of small improvements do accumulate to a large number. Something like 20% improvement 4 times would be doubling the IPC, but single threaded compilation is where I got more than that.

The after purchase testing was even better than expected. i7 920 compiled a specific compilation unit in 14 seconds. 3900x in 3.5 seconds. And that was before any tuning, I had done some bios tuning for i7 920, while 3900x I just limited the power to make it quieter. The IPC is more than double, the larger caches are probably the thing that pushes IPC beyond expectations. (I got more cores to improve scaling of multithreaded code.) Both times were recompilations where there was enough ram to have all the files cached and the the folders used where on ssd:s with modern CPU used nvme and older one SATA. Even if the nvme matters that upgrade wouldn't of been possible without getting modern MB. The make system was make, and what I used was LLVM tutorial code in single file that included many LLVM headers. The software wasn't upgraded between those runs, just moved disks from old system to new system and copied the data.

I did look before the purchase if there was IPC improvements that would of made more sense to buy new than buy some Westmere 6 core to upgrade my system. Results made it clear to me that getting any cheap new CPU would of been preferable over wasting time with getting the westmere. The IPC improvements for compilation were way higher than average IPC improvements.

But even sandy bridge was weak enough in the benchmarks that it would of made sense to upgrade from that. Before purchase I just looked from phoronix benchmarks/open benchmarking database a compilation benchmark that had worst CPU scaling for more cores and used that as approximation for single threaded compilation.

My own results were much larger than what I assumed it would of been based on comparing the sandy bridge to modern CPU:s and then multiplying that with clock speed advantage and IPC advantage of sandy bridge vs i7 920.

Oh, when I got i7 920 I decided not to upgrade until I got 8 cores. Then it was AVX-512 happened I knew I must have that so that I could play around optimizing code with it, Intel just could get it's 10nm very soon so that I could get those 8 core AVX-512 parts in reasonable price and power envelope. I just did the math, and realized wasted time because slow CPU would cost me more over next 2 years than upgrading.


The i7 920 is a dozen years old (2008). No explanation required. I was thinking there wasn't much of an IPC increase over the last half dozen years or so, but there's absolutely been one over that long. Though really it's funny how little it's still increased - in 1996 we were just getting Pentiums at 150 MHz, and I don't think anyone would argue those are anywhere near comparable.


If we split the cycle time in two components, one is transistor and one is interconnect. Interconnect delay per length increases as much as the length decreases in each shrink. The transistor delay halves. That halving got transistor delay below the interconnection delay, so doubling that got huge improvements. Also for IPC there is diminishing returns, and easily available improvements got eaten early, and everyone is chasing diminishing returns. The Pentium PRO brought OoO and went from 2 to 3 decode and from 2 to 4 micro-ops/second. Core 2 went from 1 to 2 FP pipelines. Everyone is hitting the same issues, O(n^2) power and die costs for some structures widening things, but smaller fraction of code getting improved by widening. But it isn't all, it also increases latency which is either lower clocks or increased branch missprediction penalty.

Improving CPU:s has become harder simply because all the easier things have been done, and cost of improving one metric often causes worsening another thing slightly.

edit: Just to add, it isn't impossible to improve, but it's just has become harder. And this knowledge was part of reason why until I saw actual benchmarks I wasn't too interested in upgrading. I just found out the one thing I cared had gotten much better during that period.




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

Search: