linux基础篇之vmware workstation计算机体系结构(中)

    那什么是前端总线?大家应该听过南桥或者北桥设备是吧?南桥叫south bridge,北桥叫 north bridge,南桥离CPU远一点,CPU要不停的跟内存打交道,那因此内存和CPU之间是不是要有总线进行相连,而且中间需要一个控制器,那么因此,北桥是高速的控制总线,南桥是低速的控制总线,什么是低速,我们敲一下键盘,速度再怎么快,一秒钟内能敲几次,能理解么,我们说设备是在一定频率下进行工作的,那些需要大量数据传输而且需要工作在比较高的频率下的、快速实现数据交换的,我们都称为都在北桥。南桥要慢得多,而且大量的IO设备都在南桥上,北桥早期是用来连接内存的,而南桥是连接各种外围设备的IO是硬盘、键盘、鼠标、显示器等等,都在南桥上,而这些设备经过南桥汇总以后,通过同一根线北桥再转给CPU。能理解了吗?OK,它是这样子的,当然,现在的结构可能发生了变化了。北桥不是用来控制内存的,内存直接跟CPU相连,不再需要控制器。这样速度可能会更快,而北桥只负责连接南桥,负责连接南桥以及其他的总线的控制。而且像现在的显卡处理大量数据的时候,显存里边儿,尤其要表现一些图像处理或者3d渲染的时候,它可能需要的数据量也非常大,对不对?很可能VGA芯片直接做到北桥上,但是各位应该知道,对于一些文件服务器来讲,比如说我是个WEB服务器,这个WEB服务器大家应该知道,每个人请求的时候他都要请求一个页面,这个页面要打开就称为叫网页,对不对?这个网页实际上是一个文件是吧?存储的很多做过网页的,那一个人访问一个WEB服务器没问题,要是100万人同时访问外部服务器什么概念?假如这个文件是1k,100万个1k是多少?想过吗?况且一个网页有图片,只有十万个人在访问,后边90万都在这等着,是不是有这种可能吗?所以IO设备可能会变得。刚才说过,硬盘是接到南桥上的,对不对?那如果把它接到北桥上呢?OK,我们让它工作的更高的频率下就在北桥上,但是各位应该知道,我们现在的硬盘是机械式硬盘,通过各种旋转的那个弹片儿来完成的,对吧?但是有一种比较快,固态硬盘,事实上现在很多服务器就是通过这种机制,直接接到北桥上,通过接固态硬盘来完成快速的磁盘IO的,那各位应该知道,我们CPU还有所谓的主频,多少多少赫兹,多少多少g赫兹。是不是,赫兹是什么频率?频率指的是什么?就是单位时间内某个事件所发生的周期数是不是?我们可以把它理解成叫频率,那频率是用来干什么的?还回到我们的加法器,各位想象一下,刚才我说过,我把加数和被加数都通过同一根儿线来输入,
那刚才我们也提到过,所谓这里要输入为一,就意味着,这个开关闭合是不是就行了?你闭合多久呢?如果我输入加数,需要一秒钟输入,被加数需要一秒钟,计算输出需要一秒钟,这整个计算是不是需要三秒钟啊?一个周期三秒钟才能完成。或者说一个运算三秒钟才能完成,那各位想象一下,是怎么能够让它的运算速度更快?假如我的这个开关是手动的,工作频率速度比较慢,五秒钟输入一个加数,五秒钟输入被加数。而计算速度非常快,它在零点一秒钟就能完成,快的多,而对于计算机来讲,对电来讲,每秒钟30万公里,那就意味着电闭合之后,瞬间就能到达,那所以,如果这个开关的速度能够非常非常快的话,那就意味着它的加数的和被加数的输入、计算结果的输出的速度就非常快了。能理解吧,所以我们期望有一种机制,他的工作速度非常的快,能够快速完成开关闭合,完成一次数据的调整,是这样子吧,什么速度能够快到这种地步呢?
大家知道赫兹,1k赫兹等于1000赫兹是吧?1M赫兹等于十的六次方,1g赫兹等于十的九次方赫兹,一秒钟要完成十的九次方次变化,十的九次方有多大?那什么样的设备才能有这么快的速度呢?谁能够搬开关搬这么快呢?这就需要一种特殊的电气设备叫晶体管。这种电气设备能够快速的在一秒钟之内完成多次的状态转换。

    我们的CPU,它的工作频率是1g赫兹,但是我的内存工作频率却是1M赫兹,CPU开关速度非常快,而内存速度又非常慢,那怎么办?速度不协调,假设CPU在1秒钟之内可以向内存要十次数据,而内存在一秒钟之内,只能输出一次数据,你说到底这个速度以谁为准?是不是肯定是以慢的为准,那就意味着老牛拉个火车,是不是,大概就是这种概念?这很麻烦的,那怎么办?让内存快点不就是了吗?但内存的制造工艺决定了它只能这么快,更快的也行,成本要高的多的多。你会发现,技术的发展是在不断折中的过程。那计算机到底该如何折中?快的设备造价高,那怎么办?让它小一点儿不就是了吗?只用一点点,在快和慢的之间放一个中间设备,CPU不是有缓存吗?一级缓存,二级缓存,三级缓存。缓存的级别越数字越小,就意味着它距离CPU越近,越近速度就越快,造价就越高,因此,越大它就越贵,我们知道,一个计算机的CPU主频越高,就意味着计算机越快,对吗?那怎么能够让它快点呢?如果你的缓存大的话,就意味着计算机整体性能可能会好一点,是不是这道理,所以你买一个CPU的时候,你会发现它的主频其实是一样的,内部也是一样的,一个是1M缓存,一个是4M缓存,但是两个设备的价格会差两倍不止,这里边这个缓存本身的造价是非常高的,甚至于比CPU的其他设备运算器都高,而我们一级缓存之上还有一层缓存,之前我说过,叫寄存器,能理解吗?寄存器可以以CPU相同的频率进行,而一级缓存要慢的多了,一级缓存又分成指令缓存和数据缓存。
然后有二级缓存,二级缓存比一级缓存要慢,但是比内存要快,所以它是层层进化的,内存的数据先到二级缓存,然后再到一级,那各位想象一下,缓存要想工作,由于缓存是小于内存的,一级缓存是小于二级缓存的,那缓存要想工作,
它必须要遵循到一个基本前提,这个基本前提是什么呢?叫程序的局部性原理。各位听说过吗?
其实我们的程序是遵循局部性原理的。什么叫局部性原理?它有它指两个方面,包括时间上的局部性和空间上的局部性,所谓时间上的局部性,指的是我刚刚访问的数据,过一会儿可能还会再访问,所以把它缓存下来。最近访问的数,刚刚访问的数据,在最近可能还再一次被访问,所以你缓存下来才有意义。第二,叫空间上的局部性,什么叫空间上局部性呢?如果访问了一个数据,离这个数据非常近的数据,可能马上就会被访问到,所以我们载入一个数据时候把这些数据周围的那些数据都进行缓存,不用再到内存里边,能理解不?这就叫程序的局部性原理。事实上,经过研究发现,程序确实是遵循这个规律的,
     当然了,大家也知道,我们的程序员有高级程序员和低级程序员之分,对不对?为什么有些程序员开发的程序?它运行起来就是那么快,懂局部性原理,了解计算机的计算器、内存、缓存的工作原理,所以作为程序员来讲,也必须要理解这个东西。对CPU来讲,它的缓存也在一定程度上,或者在很大程度上,决定了CPU的性能的对不对?我们的计算机的硬件芯片,它的各种功能是通过我们针脚上有电没电来完成的。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值