
Ask HN: How come we don't have 1024 cores by now? - kristiandupont
In 2007, I wrote an article about concurrency (https:&#x2F;&#x2F;www.gamasutra.com&#x2F;view&#x2F;feature&#x2F;129998&#x2F;the_transition_to_concurrency.php) and about how Moore&#x27;s Law was coming to an end. That has happened but to my surprise, my brand new laptop still barely has 4 cpu&#x27;s. I was certain we would have started advancing &quot;horizontally&quot; instead but that never truly happened. How come?
======
hans1729
We do in GPUs, which is where thread-heavy computation is at these days.

------
PaulHoule
A few things.

Advances in computing are limited by memory bandwidth. Even if you could
accelerate a computation 10,000x by implementing it as an ASIC, you would need
to increase memory bandwidth 10,000x as well.

People are getting better at taking advantage of multiple cpus, but we have
limited ability to get parallelism for many applications that matter, such as
web browsing, so we aren't ready to break up those tasks to run on 1024 low-
performance but low-power CPUs.

You can get server machines with 64 cores on a "chip", even put two cores
together for 128. Those sell like hotcakes for cloud computing.

~~~
kristiandupont
According to activity monitor, I have around 2200 threads running at the
moment. Obviously most of those are idle but it still seems to me that we
should be able to utilize multiple cores even without switching to whole new
paradigms?

~~~
PaulHoule
It depends on the workload. If you can cut the work onto 1 millisecond chunks
that barely interact you can scale fine in this paradigm.

Threads are used both to schedule work across cores but also to manage waits
on i/o, a server will have threads running when it is waiting for a client and
a Windows or Linux or Mac has many servers running for local use.

Threads are not efficient for I/O scheduling (async/await or select or similar
apps are better, but harder to code for.). They are efficient enough for your
laptop to have 2000 of them.

