olly29 :
Hey guys,
I recently got a new computer containing a Asus strix Z270G motherboard and an i7-7700 (non-k version). I notice it is a quad core.
Basically, I have no idea about how cores work and I want to find out if enabling all 4 cores will give me better performance?
How would I go about seeing how many cores my processor is utilising at the moment and if so, how to enable the other cores?
Thanks guys !
One at a time:
1. How do they work? What are they?
First, here's a picture of them:
See those boxes? Each of those is a core, on top of a processor's main chip.
A core is basically a mini-processor that is wired in to work with the others and share a memory pool. The easiest possible way to think of it is like a highway - your frequency is like the speed of the cars, your cores are like the number of lanes. The objective, in a perfect world, being to get as many cars through in as short a period of time as possible.
Two solutions, obviously. Faster cars, or more lanes, or ideally both. AMD has typically been on the "more lanes" side of processor design for solving this problem, while Intel has typically focused on "higher speed".
Processors have a lot of constraints in how they can be built, like heat, and just fundamental space constraints. Transistors run into space constants for a single die.... so your option is to add more die! This is what a core is. Think of it sort of like a brain hemisphere to the processor being the brain. Running parallel die can also help speed some applications with specific properties (discussed below) by enabling them to do two or three or four things at the same time.
2. The cores should be enabled basically by default. Performance will vary.
What you get out of a multi-core processor is based on how an application utilizes something called threads (think of them as lines of action, like say, a water bucket brigade) . Each core can deal with handling usually a single thread at a time (or 2 for hyperthreaded procs such as yours). However, if an application doesn't set up these brigades for each core (the threads) then it has nothing to do, and therefore there will be no performance increase.
An example would be old games. You could have a billion cores and a single core processor, and provided their other qualities were the same, there'd be no difference - because those extra lanes of traffic are empty - the software has no idea they exist, and even if it does, it has no code designed to use them.
Where multiple cores shine is in applications where different work needs to be done at similar times, such as when compiling code or rendering video in a video editing application. This is because these apps are not only designed to use all the lanes, but additionally, they can.
So your answer there: Depends what you run. Some games and programs are
multi-threaded; they use multiple processor cores. Those will benefit from more cores being available. Anything else won't.
3. You can see your processor load in apps (basic) like Task Manager [windows] or something like HWMonitor. CPUZ is another app that can analyze which cores are being used and by how much.
4. Other cores: As said prior, they are typically enabled by default. It's more dependent on if your applications have any cars to pump through those extra lanes, they're usually already open, but can be left unused if an application doesn't support it.
An IRL example, supposing you care to read any further
A really basic example of this is what you may sometimes find with poorly coded applications.
From my experience in writing Visual Basic apps, poorly, I can illustrate an example.
In visual basic, you have the GUI thread (so, the set of instructions that handles drawing the window and adding controls and showing text and whatnot). If you run something intensive, say, heavy file encryption, the application will go not responding or fail to show changes, unless you run it in a separate thread.
This is because you are occupying your only thread, the GUI thread, with these operations, so it is struggling to get its usual task of showing the controls and window done.
What you can do to avoid this is create a second thread, and run things on that. Now your GUI thread can focus solely on making the window and GUI changes, while your other thread is being pushed through another one of these cores (or sometimes the same, depending on how optimization works out) so everything remains snappy and responsive.
Notice, however, that it is a conscious choice on part of the developer to implement this properly. As I mostly program for personal use, I rarely do. So my apps freeze a lot. \_(-_-)_/