1945年,天才科学家冯·诺伊曼(von Neumann)提出了一种计算机设计和实现体系结构,为现代计算机奠定了理论基础。冯·诺伊曼(von Neumann)架构有几个主要部分:
下面将简要描述CPU,指令和控制单元的概念。除了冯·诺依曼体系结构之的电子产品中,并且相对知名。此时,CPU成本和散热成为一个大问题,主频率难以超过10GHz。为了获得更快的计算速度和更好的性能,芯片设计人员决定绕过主频率,采用人群策略,并向CPU添加多个内核。
核心是可以运行指令的独立单元。它包含上述ALU和寄存器,并配备了L1和L2高速缓存。多个内核共享L3缓存。

多核和缓存
上图是多核处理器的电路图。每个核心旁边的黑色圆圈是L1和L2缓存。可以看出,各种类型的Cache占用CPU很大的空间。


多处理器多核结构
高性能服务器通常可以支持多个处理器并提供更多的计算核心。支持单个CPU的服务器称为单路服务器,支持两个CPU的服务器称为两路服务器,支持四个CPU的服务器称为四路服务器。上图显示了英特尔的四向体系结构。系统支持四个CPU。如果每个CPU具有8核,则系统可以提供32核计算能力。
线程和进程
以上是所有计算机硬件知识,线程和进程是操作系统创建的用于控制这些硬件的软件概念。

线程和进程
进程具有单独的计算资源,例如内存空间。
线程(线程)是进程的子集。默认情况下,进程启动一个线程。您还可以通过多线程编程来启动多个线程,并且多个线程共享共享进程的资源。
在出现多核体系结构之前,CPU只能在特定时间执行特定程序,而不能并行化。就像人们在某一时刻只能做一件事一样,“吃火锅唱歌”是不可能的,因为这两种活动都占用了他们的嘴巴。如果您想做其他事情,则必须停止其中之一。
在多核体系结构出现之前,CPU只能在特定时间执行特定程序,并且不能并行化。就像人们在某一时刻只能做一件事一样,“吃火锅唱歌”是不可能的,因为这两种活动都占用了他们的嘴。如果您想做其他事情,则必须停止其中之一。

单核单线程
如前所述,CPU处理速度为纳秒级,并且速度非常快。因此,在单核时代,为了同时处理多个任务,CPU首先在吃东西时先“吃火锅”,然后“唱一首歌”。唱歌时,多线程以这种形式实现。单个CPU每次都会切换不同的线程任务,这将招致一些资源开销。在吃饭和唱歌之间,人们总是必须休息一下!在CPU上快速切换多个任务就像为用户同时执行多个任务一样。

以Web浏览器为例。当浏览器打开网页时,通常需要下载网页中的资料并将其呈现到漂亮的屏幕中。在单核方案中,时间被划分为不同的片段,并且一定的时间段只能用于渲染,缓存或下载中的一项任务。每个任务都有一个优先级,CPU首先执行高优先级的任务。例如,当浏览器打开一个新网页时,它需要尽快显示该网页。背景音乐下载相对较慢。您可以等待网站呈现后再下载,因此有时背景音乐比网页晚半分钟。

多核和多线程
多核体系结构为用户提供了可以独立计算的多个核,这也意味着计算机可以同时并行执行多个任务,即并行计算(并行计算)。然后,Web浏览器使用一个内核来渲染网页,另一个内核则缓存其他材料,第三个内核下载背景音乐。

使用htop查看CPU和内存利用率
上图是我的macOS性能监控软件(htop)。 Windows上的类似软件是任务管理器。图片绿色栏的上部显示了当前的8个CPU内核和内存利用率,绿色栏的下部是我启动的多个进程。蓝色的是我的Chrome浏览器的进程。我还启动了Photoshop等软件。
当多个内核处理同一任务时,很可能会使用同一数据,并且可能会发生数据读写问题。

线程安全问题
例如,如果执行操作i = i + 1,则如果两个线程在短时间内将一个加到变量i,则该变量应加两次。因为两个线程之间的时间太短,再加上前面提到的缓存机制,所以计算过程和临时结果仍在寄存器和L1缓存中,没有时间写入主内存。线程B读取较旧的数据,因此发生数据不一致。这种问题称为线程安全问题。通常需要使用锁来处理线程安全性问题。
本专栏将在以后的文章中分享多线程编程和线程安全的特定情况。
摘要
现代CPU通常使用高速缓存来解决CPU对主内存的读写速度慢的问题。使用多个内核执行并行计算以加快程序执行速度。并行计算通常需要多线程技术,而如何操作多线程则对程序员构成了挑战。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-373340-1.html
一般都是藏起来当祖国遭到毁灭打击核潜艇可以还击的一种威慑
物价也将更便宜