1978年intel设计的x86,8086CPU有4万个晶体管,主频为5MHZ,最高8MHz(每秒五千赫兹)

有16个寄存器,在计算的时候几乎所有的寄存器都得到, 这16个寄存器就相当于一个计算单元。

那时候没有线程这个概念,有个中断概念,让寄存器(CPU)停止执行代码并且保存状态。

CPU的主频越快意味着处理一条指令的速度更快

8086的电压为5V,功率未知 ,制作工艺3 μm (0.001微米=1纳米)

dos系统不存在线程,多任务概念,只存在中断

那时候没有这么人性化的Windows, 用的dos窗口,敲一条半天,看代码也不方便。

1985年 11 月 20 日微软Windows1.0问世

支持到2001年最后一天为止,可以用鼠标操作,不支持窗口缩放
支持到2001年最后一天为止,可以用鼠标操作,不支持窗口缩放

鼠标1968年12月9日在美国加州旧金山面世,申请专利时的名字为显示系统X-Y位置指示器。


1987 年 12 月 9 日Windows2.0问世

还引入了更复杂的键盘快捷键,引入了最小化,最大化概念
还引入了更复杂的键盘快捷键,引入了最小化,最大化概念

1990年5月22日 Windows3.0问世

首次支持256色SVGA模式,加入纸牌游戏
首次支持256色SVGA模式,加入纸牌游戏

DOS时代终结,在这之前微软只是给DOS系统写图形界面的,9X系列都是披着DOS的外套

名词 日期 形容
Windows NT 1993年 由微软和IBM联合研制,采用先进的NT核心技术,面向服务器
Windows 95 1995年8月24日 第一个不要求先安装DOS的32位操作系统
Windows 98 1998年6月25日 对Win95功能的增强
Windows 98 SE 1999年5月5日 对WIn98的增强
Windows ME 2000年9月14日 要增加的功能包括系统恢复、UPnP即插即用、自动更新
Windows 2000 1999年12月19日 先占式多任务、可中断的、面向商业环境的图形化操作系统
Windows XP 2001年10月 XP是experience的缩写
Windows Vista 2005年7月22日 OEM版本,内置Windows Defender
Windows 8 2012年10月26日 提供更佳的屏幕触控支持,自带平板模式
Windows 10 2015年7月29日 新增应用商店,Win8服务增强版

95年到底发生了什么,让Windows95可以一边拷贝文件,又可以浏览网页。

一个系统的出现必然要兼容N年前的CPU,95的最低要求是80486SX(386的升级版)

1985年:英特80386微处理器,支持多任务,同时运行多种程序,工作频率为12.5MHz-40MHZ。

1989年: 英特80486微处理器,工作频率为25MHz-50MHZ。

80386在一个计算单元的情况下如何实现多任务的?

原来线程的状态概念在单个计算单元就出现了
原来线程的状态概念在单个计算单元就出现了

把不同程序的指令,CPU状态,栈存起来放在不同的内存地址,要执行的时候就加载到CPU里面。

这是一种障眼法的多任务,只要速度够快,木头人你就看不出,计算效率并没有真正提高。

(虚假的多任务: 如果我不看网页,拷贝文件就会更快)

真正的多任务应该是多个CPU同时工作,操作不同的内存地址,不存在中断。

(真正的多任务:如果我不看网页,拷贝文件最快也就这样)

多核心(计算单元)的Intel CPU是什么时候出现的呢?


核心

CPU的工艺始终是有限的,把晶体做到原子大小, 性能就达到瓶颈了。过去90年一下提升10倍性能,

那是因此制程是微米级别的,现在已经提升到纳米级别。现在都是挤牙膏,提升0.2,最多1倍。

1 微米 = 1000 纳米

1Ghz = 1000Mhz

9400F每秒2.9Ghz(2900Khz), 8086每秒 5Khz,相比8086提升了440倍。但是9400是6核心。

也就是比8086强了2640倍(理论上来说),9400F还是14纳米,8086是3000纳米。

3000÷(6×14) = 35, 比8086小了35倍。

回顾intel80系列(5MHZ-50MHZ)到奔腾系列(60MHz-200MHz)到至强(100MHz-400MHZ),

Core(800MHz-1333Mhz),到现在奔腾至强酷睿系列都能达到2GHZ了。


多核心的出现一是为了有卖点,二是性能的真实需要。

第一个双核心的CPU据说是IBM的POWER4,

2005年Intel Pentium D 处理器首次将两个单核处理器做到一个CPU里面卖。被称为胶水双核。

没想到多核心居然是这么个东西,多核心对于多程序的需求出现(我想应该是必然结果)。

9400F的核心
9400F的核心
8750h的核心
8750h的核心

同样是6核心为啥8750h的CPU比9400多一倍呢, 那是因为8750h把一个物理CPU分成了两个虚拟CPU。

12个线程和6线程的性能相比,9400F在单任务模式运行下会比8750H快上1倍的计算速度,

更不用说9400F主频比8750H高出0.7GHZ。这种把虚拟化CPU就是一种噱头,性能反而降低了。

可以在BIOS关闭HYper/Theading Technolgy 功能,很多虚拟化软件是要用这个功能的,不建议关闭。

下次看CPU的时候不要光顾着看12线程,48线程,这些东西都是虚的,看核心数,主频,热量功耗。

多核心的CPU是如何协作运行程序的呢?

显然一个简单的Hello World是不可能分给好几个CPU运算的。最常见的应该是图像,音频

这些东西的计算可能显示不一。例如玩游戏的时候,卡顿,延迟,这都是因为单个CPU过量发热,

计算效率下降,导致画面与操作不同步。

CPU只是计算工具,要多核心协同运作取决于系统和编写的代码效率。

鲁大师的温度取的是哪个CPU的温度呢?

取的并不是平均温度,而是直接取的中央处理器温度
取的并不是平均温度,而是直接取的中央处理器温度

中央处理器和6个计算核心的关系

Central Processing Unit,缩写:CPU)中央处理器是一个工厂,计算核心只是工厂里面的机器。


线程

网上经常听到线程撕裂者,X核心X线程。写代码的时候把函数地址放到线程函数里面就可以了。

这两个线程的概念明显是两个不同的概念。

在CPU介绍的概念

CPU跟内存通信的过程被称为线程。6核心6线程指6个核心可以同时跟6块内存地址执行指令。

6核心12线程指的是把1个核心虚拟成2个核心, 这样就有12个核心对12块内存地址执行指令。

我的电脑感觉,虚拟CPU至少要保证2.5GHZ的运行,也就是一个普通核心要有5GHZ的速度,

把单核虚拟成两个CPU才有它的意义,要不然执行大程序时候,处理速度是能感觉出来的。

因为虚拟CPU技术并没有真正提升计算的速度,只是把空余的计算量利用起来。

在代码里面的概念

代码把程序变成系统进程。在任务管理器里面,点击其中一个进程里面的线程结束它。

进程依然会存在,点击一些特定的线程的时候会发现对应的进程也会结束。

这里面的线程概念就相当于一个While(true), 把线程扔给操作系统,操作系统把任务分配 给CPU。

想象中的分配是这样的: 6个核心,1个进程就交给0号核心跑,2个进程就交给0,1核心, 以此类推。

但这样有个问题,有的线程1秒钟跑一次,有的线程1个小时跑一次,明显分配不公平。

使用Aida64查看9400f的6个核心的温度发现他们的差值并不是很大,说明做功是有分配的。

在WIN10资源监视器里面,一个线程PID对应的CPU编号不断在变化。

WIN10对多核的优化,一个线程每个核心都有计算的机会,但并不是轮流执行一遍。

(如果轮流执行一遍还要这多核心干啥), 其他系统对CPU的优化我就不知道了。

还记得网上的联发科x20,号称十核处理器,跑分王,因为核心过度发热,实际使用起来很差。

被调侃’一核有难,十核围观’。

没有对CPU进行优化的后果
没有对CPU进行优化的后果

是系统优化了CPU性能,还是CPU自带优化呢?

CPU显然不能自己控制自己执行代码,因此这是系统该做的事情。


进程

程序正在占用系统资源的别称,指程序的运行过程。

杀死进程等于终结程序在寄存器,内存中的所有占用。

子进程:特点是共享父进程的某些资源,像什么守护进程,保证父进程不被篡改。


显卡

只知道显卡是玩游戏的,越好的显卡玩游戏就越爽,广告商宣传给我的逻辑。

想起8086哪有什么显卡,8bit的像素进行设置色彩,前景,背景,高亮,闪烁。

总的来说只有3个bit给你设置颜色,1+1+2+4 = 8,也就是说只能显示8种颜色。

汇编写个显示字母,把字母放到固定的显存位置,通过CPU改写显存的内存数据实现。

8086的显存是A0000H~BFFFFH,一屏为80×25=2000个,2个字节加上8页

4000*8 = 32000字节 = 31.25KB, 8086显存至少需要这么大。


显卡的发展历史回顾–之一 | 知乎

看了这篇文章我才知道显示器是如何通过显卡快速显示字符的。

文字显卡

CPU把字符位置和字符编号传给显卡,显卡里面有张码表,相当于驱动,就这样把图片显示出来。

但是映射有个问题,就是显示一个超级大的A怎么办,文字显卡做不到高清显示.

当然也可以通过显示很多的字符和空格实现

像素显卡

虽然也是通过映射实现,但是这明显对显卡处理图形的计算能力有了非常大要求。

需要更大的显存,更快的计算速度。也同时要求CPU的计算能力。

IBM公司于1981年上市的第一个彩色图形卡,CGA, Color Graphics Adapter,支持显示16色

它用4比特控制一个像素的显示,剩余4个比特控制颜色显示。


想起我家1998年才买的康佳大头彩色电视机,用到2019,那分辨率现在是无法直视,800X600。


随着CPU的发展,人们对显示要求的提高,制造更高分辨率,显示3D带有阴影的图片。

显卡如何用2D的图片显示出3D效果呢, 通过渲染,在周边像素进行修补,这又需要显卡

非常大的计算能力,处理这些东西我称为GPU(图形处理器),它已经不在是单一的映射了,

而是有算法的处理器。这是NVIDIA和AMD提出来的概念GPU。

NVIDIA公司在1999年发布 Geforce256图形处理芯片时首先提出GPU的概念,

GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时。


GPU如何跟AI扯上关系?

人脸识别也是被视为AI的,取点组合起来,CPU把图片发给GPU,要求得到这张图片的唯一特征。

GPU梭哈一下,特征码返回给CPU,CPU一比较找到了数据库里面的张三。

突然发现GPU可以这么用!

我把1000本书给它,要求它学完后写一本书出来,首先拆分词,然后词映射,这个词后面该接什么,

如何断句。从1000本书图像里面找,找到最符合的结果,然后出书,这个计算是傻瓜式的,但是其

计算量难以想象,每写一个字都要遍历1000本书,这个字后面应该接什么,出现什么最合理。

假设写本2万字的书,一本书算十万字,100000字(图像)×1000×20000 还要排序分析,加个指数。


我理解的GPU人工智能没有创新能力,只是模仿。GPU可以用于一些死逻辑,人工驾驶,天气预测,

行星轨迹。用在人类的感情相信就如同黑客帝国一样,还是需要人的感情来帮助GPU来升级算法。


10.24,自行车洲里去横龙路上拍摄