本次课程的目的是为了让同学对计算机底层有个概括性的了解,重点是弄清楚cpu和内存之间的关系
一、CPU是怎么来的
CPU的制作过程
英特尔CPU制造过程 一堆沙子到一颗CPU的全过程,,,好看视频
沙子脱氧--》石英--》二氧化硅-》提纯-》硅锭-》切割-》晶圆-》涂抹光刻胶-》光刻-》蚀刻-》清除光刻胶-》电镀-》抛光-》镀铜-》测试-》切片-》封装
计算机的核心在于找到一种数字,并且找到一种方式让这些数字进行运算
如算盘和机械计算机,以算盘为例,首先找到一个珠子代表多少,并且规定以几进制进行运算
后来人们发现2进制可以转化为10进制,并且发现可是使用电路来代表0和1,1代表5v高电平,0代表0符低电平。通电和不通电两种状态就产生了人类历史上的一个重要的工具--晶体管。
最开始还不是使用晶体管,一开始使用的是---正空管。正空管的工作原理类似于我们以前的电灯泡,当通电的时候就会发射电子到我们的接收节点上,我们就会判断是高电位,否则为0。但是真空管的缺点是容易坏。(一通电一断电来来回回,马上就会烧掉)。--直到发现二极管。
硅(本身不导电)-》加入特殊元素-》P半导体 N半导体-》PN节-》二极管-》场效应晶体管-》逻辑开关。(通电代表1,断电代表0)
半导体:单项导通性
晶体管是如何工作的:晶体管是如何工作的?,科技,科普,好看视频
我们可以通过对逻辑开关的改造成 ,逻辑与,或,异或,与非,或非,异或非等门,然后将他们当成最基本元素不断的搭建就会形成了加法器,在计算机当中一切的计算的基础就来源于加法器。
二、CPU的组成
上边我们讲了 原始的计算机的计算模型,这个模型有一个缺点就是不能对我们的数据进行存储,包括一些临时数据。这种计算是也是基于人力输入,存储的。于是人们开始使用内存,没有内存它是实现不了自动计算的。内存才是真真正正的放我们程序(指令)的地方。
曾经我们要向给计算机输入数据进行预算,我们只能输入0和1这两个数字,输出是以纸带的形式进行输出,在纸带上打眼的地方就代表着数字1,在纸带上没有打眼的地方就是0,但是有一次呀人们发现电脑没有问题,但就是输出不对,后来人们发现原来是一个小飞虫堵住了纸袋上的一个眼导致了错误的发生。小飞虫在英文里边叫做(bug),后来人们把出现的问题就叫做bug.
同学们一定要弄清楚,cpu的核心其实就我们的内存当中拿指令和数据进行计算。
但是CPU对数据的执行是非常快的,由于摩尔定律的存在(集成电路上可以容纳的晶体管数目在大约每经过18个月便会增加一倍。换言之,处理器的性能每隔两年翻一倍),我们计算机性能的瓶颈不在是我们cup的计算能力,而是我们将数据从内存加载入cup当中的时间。这个时间大概差了有200倍左右,所以我们要对我们需要进一步的去开发数据的读取速度。于是我们引入了Registers:寄存器和cache:高速缓冲存取器。
我们可以看一下下图当中的存储器的层次结构以及cpu到各个存储其的时间周期
我们来看下一张图,就是我们整个计算机的底层架构图
CPU和内存,是计算机的核心
cpu通过总线读取内存当中的程序(指令)和数据
cpu当中必须掌握的知识点:
PC:指令计数器:这里面存储的是下一条指令的地址(指令存在我们的内存当中) Registers:寄存器:计算机从内存够当中拿到的数据存储在我们的寄存器当中。 ALU:算数逻辑单元:根据指令来计算数据,并将计算的结果放回到内存当中去。 cache:高速缓冲存取器:当我们去在内存当中去读取数据的时候我们会发现很慢,这个时候我们就会使用缓存
三、线程的调度
首先我们要先弄清楚线程这个概念:线程是cpu执行的基本单位。cpu的主要功能就是计算,而线程则需要将数据从内存当中取出来并且传送给cpu进行执行。
所谓的线程调度就是说,假设现在有很多的线程需要执行,分别是线程1,线程2,线程3,,,,当cpu要执行线程1的时候,cpu会将该线程的数据存储到寄存器当中去,指令存储到指令寄存器当中去。当一个时钟周期内并未完成该线程的计算,那么cpu会将该线程的临时数据存储进cache当中去,然后执行下一个线程。