1
00:00:00,000 --> 00:00:05,180
Cores, cores, cores. Whether you're an Intel fan or an AMD diehard,

2
00:00:05,180 --> 00:00:08,280
both of the big PC chip makers are trying to sell you

3
00:00:08,280 --> 00:00:11,360
on the idea that you need as many cores as possible.

4
00:00:11,360 --> 00:00:14,920
But wait a second, why can't we just have CPUs

5
00:00:14,920 --> 00:00:18,480
that have one lone super powerful core?

6
00:00:18,480 --> 00:00:22,040
Wouldn't that be a lot more straightforward? I mean, think about it.

7
00:00:22,040 --> 00:00:27,880
Those old school parallel ports that we used to use for printers carried lots of data streams at once,

8
00:00:27,960 --> 00:00:34,200
but they were actually very slow. Meanwhile, USB ports only handle one data stream

9
00:00:34,200 --> 00:00:39,600
at a time, but they're very fast. Couldn't we just apply that same idea to CPUs?

10
00:00:39,600 --> 00:00:44,560
To answer, we spoke with Eric Jihon, Intel's CPU SOC architecture lead,

11
00:00:44,560 --> 00:00:49,720
and we'd like to thank him along with Thomas Hannaford and Ben Benson for helping us out with this episode.

12
00:00:49,720 --> 00:00:53,320
As it turns out, a single core is certainly capable

13
00:00:53,320 --> 00:00:57,320
of juggling multiple programs at one time. This is done by scheduling,

14
00:00:57,320 --> 00:01:01,760
where each clock cycle of the CPU, and there are billions of those per second,

15
00:01:01,760 --> 00:01:06,840
is assigned to execute instructions from a certain program or multiple programs.

16
00:01:06,840 --> 00:01:12,760
Scheduling can be done by the operating system, or more optimally, it can be handled by the CPU's hardware.

17
00:01:12,760 --> 00:01:16,120
For example, simultaneous multi-threading or SMT

18
00:01:16,120 --> 00:01:21,000
has been with us since the early 2000s and actually makes your operating system see

19
00:01:21,000 --> 00:01:24,760
one physical core as two logical cores.

20
00:01:24,800 --> 00:01:28,160
With SMT then, the operating system will always make sure

21
00:01:28,160 --> 00:01:31,440
that each physical core has two instruction threads

22
00:01:31,440 --> 00:01:36,960
to work on so that if a single thread stalls, because the CPU has to wait for additional data,

23
00:01:36,960 --> 00:01:40,600
the CPU core can still work on the other thread.

24
00:01:40,600 --> 00:01:45,520
But even with SMT, scheduling still has inefficiencies.

25
00:01:45,520 --> 00:01:49,440
Each core can still handle only so many instructions per clock cycle,

26
00:01:49,440 --> 00:01:53,240
and if you're trying to run a ton of programs or processes,

27
00:01:53,240 --> 00:02:00,080
the whole scheduling paradigm can become overwhelmed, meaning that adding a second or third or fourth core

28
00:02:00,080 --> 00:02:05,760
can help remove the reliance on the scheduler and allow the CPU to actually do more work.

29
00:02:05,760 --> 00:02:09,280
But the fact that scheduling is an imperfect solution

30
00:02:09,280 --> 00:02:12,720
isn't the only reason that we can't just have one big core.

31
00:02:12,720 --> 00:02:16,240
You also have to think about how much CPUs cost.

32
00:02:16,240 --> 00:02:19,240
Higher end chips are already expensive enough,

33
00:02:19,240 --> 00:02:23,360
but if you tried to consolidate a modern, say, eight core chip

34
00:02:23,360 --> 00:02:27,640
into one big core, the price tag would be even higher.

35
00:02:27,640 --> 00:02:34,000
You see, in modern CPU fabrication, if you have one core that's bad due to a manufacturing defect,

36
00:02:34,000 --> 00:02:40,080
you can just disable it at the factory and then sell that chip as a model with fewer cores.

37
00:02:40,080 --> 00:02:43,440
But if you had one massive core and it was defective,

38
00:02:43,440 --> 00:02:49,600
you'd have to throw the whole thing away, meaning more waste and higher costs for the consumer.

39
00:02:49,600 --> 00:02:52,960
There's also the consideration of how you link up a CPU

40
00:02:52,960 --> 00:02:56,640
to the rest of your PC. A multi-core CPU is set up

41
00:02:56,640 --> 00:03:00,040
so that each core has its own connection or fabric.

42
00:03:00,040 --> 00:03:04,680
That gives it access to memory. As you make these fabrics wider and faster,

43
00:03:04,680 --> 00:03:09,240
it becomes more and more difficult to make a fabric that has the same signal integrity

44
00:03:09,240 --> 00:03:12,280
as the smaller ones that were designed for multi-core chips.

45
00:03:12,280 --> 00:03:16,120
But beyond all of these concerns regarding the CPU itself,

46
00:03:16,120 --> 00:03:20,440
the way we use computers these days really tilts the equation in favor

47
00:03:20,440 --> 00:03:26,720
of having multi-core processors. Although back in the days of Windows 95 and even XP,

48
00:03:26,720 --> 00:03:31,800
you could get away with a single core CPU. Modern versions of Windows are often running

49
00:03:31,800 --> 00:03:35,920
hundreds of processes and thousands of threads at once.

50
00:03:35,920 --> 00:03:39,080
And because PCs are such general-purpose machines

51
00:03:39,080 --> 00:03:44,560
that need to be able to adapt to a wide variety of workloads, it's better to have multiple cores

52
00:03:44,560 --> 00:03:48,880
rather than just hoping that your applications will be optimized enough to take advantage

53
00:03:48,880 --> 00:03:53,240
of one big single core, especially as it's becoming more and more common

54
00:03:53,240 --> 00:03:58,720
for programs and even games to actually be able to take advantage of more than one core.

55
00:03:58,720 --> 00:04:01,960
But there's one alternative that we didn't really talk about.

56
00:04:01,960 --> 00:04:05,240
If you want one huge core, you could just forget about CPUs

57
00:04:05,240 --> 00:04:09,680
and go cut open an avocado. That would solve your problem.

58
00:04:09,680 --> 00:04:14,480
And you wouldn't be hungry anymore. Thanks for watching. Leave a like or a dislike depending how you felt.

59
00:04:14,480 --> 00:04:19,080
Check out our other videos and leave a comment if you have a suggestion for a future fast as possible.
