When you’re shopping for a new processor, it’s important to understand the processor speed. Processor speed is a measure of how quickly the processor can process information. Processor speed is important because it affects how fast your computer can run tasks. To calculate the processor speed on a multi-core processor, you need to know the number of cores the processor has. The number of cores is found on theprocessor manufacturer’s website or in your BIOS. You also need to know the clock speed of the core. The clock speed is how quickly the core can run tasks. To calculate the processor speed on a multi-coreprocessor, you also need to know how many threads each core has. Threads are used to run multiple tasks at once and are important because they help improve performance when your computer tries to do too many things at once. To find out how many threads each core has, you can use an online tool or look at your motherboard’s documentation.
Today’s Question & Answer session comes to us courtesy of SuperUser—a subdivision of Stack Exchange, a community-drive grouping of Q&A web sites.
The Question
SuperUser reader NReilingh was curious how to the processor speed for a multi-core system is actually calculated:
So what is the appropriate way to denote the total clock speed and, more importantly, is it even possible to use single-core speed nomenclature on a multi-core system?
I once got into a “Mac vs. PC” argument (which by the way is NOT the focus of this topic… that was back in middle school) with an acquaintance who insisted that Macs were only being advertised as 1Ghz machines because they were dual-processor G4s each running at 500MHz.
At the time I knew this to be hogwash for reasons I think are apparent to most people, but I just saw a comment on this website to the effect of “6 cores x 0.2GHz = 1.2Ghz” and that got me thinking again about whether there’s a real answer to this.
So, this is a more-or-less philosophical/deep technical question about the semantics of clock speed calculation. I see two possibilities:
Each core is in fact doing x calculations per second, thus the total number of calculations is x(cores). Clock speed is rather a count of the number of cycles the processor goes through in the space of a second, so as long as all cores are running at the same speed, the speed of each clock cycle stays the same no matter how many cores exist. In other words, Hz = (core1Hz+core2Hz+…)/cores.
The Answer
SuperUser contributors Mokubai helps clear things up. He writes:
Have something to add to the explanation? Sound off in the the comments. Want to read more answers from other tech-savvy Stack Exchange users? Check out the full discussion thread here.
If you have a task that is inherently linear and has to be done precisely step-by-step such as (a grossly simple program)
Then the task depends highly on the result of the previous pass and cannot run multiple copies of itself without corrupting the value of ‘a’ as each copy would be getting the value of ‘a’ at different times and writing it back differently. This restricts the task to a single thread and thus the task can only ever be running on a single core at any given time, if it were to run on multiple cores then the synchronisation corruption would happen. This limits it to 1/2 of the cpu power of a dual core system, or 1/4 in a quad core system.
Now take a task such as:
All of these lines are independent and could be split into 4 separate programs like the first and run at the same time, each one able to make effective use of the full power of one of the cores without any synchronisation problem, this is where Amdahl’s Law comes into it.
So if you have a single threaded application doing brute force calculations the single 12GHz processor would win hands down, if you can somehow make the task split into separate parts and multi-threaded then the 4 cores could come close to, but not quite reach, the same performance, as per Amdahl’s Law.
The main thing that a multi CPU system gives you is responsiveness. On a single core machine that is working hard the system can seem sluggish as most of the time could be being used by one task and the other tasks only run in short bursts in between the larger task, resulting in a system that seems sluggish or juddery. On a multi-core system the heavy task gets one core and all the other tasks play on the other cores, doing their jobs quickly and efficiently.
The argument of “6 cores x 0.2GHz = 1.2Ghz” is rubbish in every situation except where tasks are perfectly parallel and independant. There are a good number of tasks that are highly parallel, but they still require some form of synchronsation. Handbrake is a video trancoder that is very good at using all the CPUs available but it does require a core process to keep the other threads filled with data and collect the data that they are done with.
Each core is in fact doing x calculations per second, thus the total number of calculations is x(cores).
Each core is capable of doing x calculations per second, assuming the workload is suitable parallel, on a linear program all you have is 1 core.
Clock speed is rather a count of the number of cycles the processor goes through in the space of a second, so as long as all cores are running at the same speed, the speed of each clock cycle stays the same no matter how many cores exist. In other words, Hz = (core1Hz+core2Hz+…)/cores.
I think it is a fallacy to think that 4 x 3GHz = 12GHz, granted the maths works, but you’re comparing apples to oranges and the sums just aren’t right, GHz can’t simply be added together for every situation. I would change it to 4 x 3GHz = 4 x 3GHz.