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问世
鼠标1968年12月9日在美国加州旧金山面世,申请专利时的名字为显示系统X-Y位置指示器。
1987 年 12 月 9 日Windows2.0问世
1990年5月22日 Windows3.0问世
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里面卖。被称为胶水双核。
没想到多核心居然是这么个东西,多核心对于多程序的需求出现(我想应该是必然结果)。
同样是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显然不能自己控制自己执行代码,因此这是系统该做的事情。
进程
程序正在占用系统资源的别称,指程序的运行过程。
杀死进程等于终结程序在寄存器,内存中的所有占用。
子进程:特点是共享父进程的某些资源,像什么守护进程,保证父进程不被篡改。
显卡
只知道显卡是玩游戏的,越好的显卡玩游戏就越爽,广告商宣传给我的逻辑。
想起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来升级算法。