What is meant by "cores" in microprocessor terminology?

Submitted by metaperl on Tue, 07/04/2006 - 3:01pm.

This post is somewhat off-topic, but I think it relates to Haskell enough to post here, so please indulge me.

I was reading an article on Erlang. In the section entitled Scalable Is the New Fast, it was said:

These days, you’re much less likely to get a chip that’s twice as fast, but you may get one with twice as many cores.

So my question is: what is a core and how does it affect hardware performance?

And to bring this post into Haskell context, is there some way for Haskell programs to execute faster as the machine it runs on gains cores?

Submitted by Edward Kmett on Wed, 07/05/2006 - 4:10pm.

Software Transactional Memory is a good step in that direction. It scales better to multiple processors (and hence multiple cores) than traditional locks.

Submitted by Paul Johnson on Wed, 08/23/2006 - 3:46pm.

To answer the question, a "core" is basically a CPU. AMD and Intel have recently been putting two cores in a single package, either by wiring two actual chips into it, or by fabricating two cores on a single chip. Most people are predicting that Moore's Law is about to start applying to cores, so expect 64 core machines in around 10 years time.

This is all back to the future for the oldies amongst us. When I was at Uni Prof. Ian Barron was pushing his "transputer", a revolutionary chip built for concurrency and interprocess communication. His thesis was that the traditional single CPU architecture was pretty much maxed out (at 20MHz!) and hence future advances would come from linking together multiple CPUs. The idea was killed not by the fact that he was wrong about the limits of conventional CPUs, but by the difficulty of programming highly parallel machines. This problem is still not solved for general purpose computing.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.