0
点赞
收藏
分享

微信扫一扫

计算机组成原理入门了解


计算机的基本硬件

计算机三大件:cpu(中央处理器),内存,主板

cpu是一个超级精细的印刷电路板

计算机组成原理入门了解_性能


内存:编写的程序,打开的浏览器,运行的游戏都是要加载到内存中才能运行,包括程序读取的数据,计算得到的结果,因此内存越大加载的东西就越多。

计算机组成原理入门了解_时钟周期_02


主板:

cpu和内存都插在主板上,主板上有芯片组(控制数据传输流转,也就是从哪到哪)和总线(决定数据能传输多快),两者解决了CPU和内存之间的通讯问题

南桥芯片组(SourceBridge芯片组)控制和cpu的通信,其次它作为桥,来连接鼠标,键盘以及硬盘这些外部设备和cpu之间的通信。

为何没有北桥芯片组呢?因为北桥芯片组(连接cpu,内存,显卡之间的通信)移到了CPU内部

输入设备(鼠标,键盘)和硬盘(持久化存储数据)插在主板上

输出设备:显示器

显卡(GPU,图形处理器),一般主板都会内置显卡,现如今CPU集成了GPU芯片,GPU可以做各种计算工作,跑深度学习应用以及玩游戏,做图片渲染都需要它。

计算机组成原理入门了解_性能_03


蓝牙属于io设备吗?

蓝牙是一个协议,对计算机来说,里面对应的“蓝牙适配器”。你可以认为这个适配器是一个io设备,“蓝牙适配器”本身再通过蓝牙协议和蓝牙耳机之类进行通信。WiFi也同理都对应其适配器。

冯诺依曼体系

计算机组成原理入门了解_执行时间_04


控制器用来控制程序流程

运算器完成各种算术和逻辑运算

存储器用来存储数据和指令

任何一台计算机的任何一个部件都可以归到运算器,控制器,存储器,输入设备和输出设备中,而所有的现代计算机也都是基于这个基础架构来设计开发的

计算机的两个核心指标:性能和功耗

计算机和核心指标是性能和功耗。
什么是性能?
有两个指标,一个是响应时间(执行时间),另一个是吞吐率(带宽)
计算机的性能就像干体力劳动,所谓吞吐率指的是一定时间范围内处理多少事情,计算机里指的是处理的数据或执行的程序指令。让计算机“搬的更多”(服务器的网络带宽的性能指标就是吞吐率),所以提高吞吐率的做法可以找更多人搬,多加机器,多堆硬件,例如服务器采用8核,16核,人多力量大,并且缩短响应时间可以提高吞吐率。
性能 = 1/响应时间 执行程序时间花的越少,性能越好
CPU时钟(计算机计时单位)
realtime = Wall clock Time (运行程序整个过程中流逝掉的时间) 例:0.101s
usertime(用户态运行指令时间) + sys time(操作系统内核运行指令时间) = CPU Time 例:0.047s
例子中只有不到一半时间用在CPU上,为什么会造成这种情况呢?因为计算机可能同时运行多个程序,CPU不停地在各个程序之间切换,走掉的时间可能去运行别的程序了,也可能要从网络硬盘中去读取数据,要等它们把数据读出来,给到CPU和内存。
程序CPU执行时间 = CPU时钟周期数 * 时钟周期时间
除CPU外,时间这个性能指标还受到主板,内存这些其他相关硬件的影响,所以我们要对时间这个指标进行拆解。
晶振:可以当成CPU内部的电子表来使用,每次滴答,时钟周期时间,主频越高,表走的越快,CPU被逼得越快。
什么是主频呢?例如:Intell Core-i7-7700HQ 2.8GHZ 电脑主频,1s内可执行简单指令2.8G条,类似钟表的秒(滴答的频率)
超频:CPU内部的钟调快了,CPU越快,散热压力也越大,到极限就容易崩了
提升性能的方案:
1,缩短时钟周期时间,类似于打字速度,提升主频,换好的CPU,取决于硬件。
2,缩短CPU时钟周期数,*CPU时钟周期数 = 指令数(类似程序设计)CPI,CPI:一条指令需多少CPU Cycle 类似敲键盘数,所以可以选择减少CPI,现代CPU通过流水线技术,让一条指令需要的CPU Cycle尽可能地少,因此对于CPI的优化是重要一环,可以减少指令数,把挑战交给编译器,同样的代码编译成计算机指令时,就有各种不同的表达方式。
1978年到2000年,主频提升300倍,2000年到2019年主频只提升了三倍,可以如今提高CPU性能相比以前多么困难

功耗:CPU的“人体极限”

正是因为功耗问题,奔腾4主频未超过3.8GHz

CPU一般叫做超大规模集成电路,CPU计算其实就是让晶体管里面的“开关”不断去开闭,来组合完成各种运算和功能。

要想计算的快?1,在cpu中,同样的面积多放晶体管,增加密度(通过提供更复杂的电路支持更多的“指令”,也就会家很少运行同样程序的指令) 2,让晶体管开闭更快,提高主频

但是以上两种方法会增加功耗

功耗 = 1/2负载电容电压平方开关频率晶体管数量

同样的面积多放晶体管,晶体管早的越小,从28nm到7nm,变为原来的1/4。

功耗太多,CPU散热就跟不上,此时就需要降低电压,如果电压变为原来的1/5,则功耗变为1/25。(微软轻薄本就选择了把电压下降到0.25v的低电压CPU,使笔记本有更长的续航时间)

从奔腾4开始,Intel意识到提升性能不能再提升主频,开始推出Core Duo 多核CPU,提升吞吐率达到目的。

**阿姆达尔定律:**一个程序优化后,处理器并行运算,效率提高

优化后执行时间 = 受优化影响执行时间/加速倍数 + 不受影响的执行时间。

计算机组成原理入门了解_计算机组成原理_05


除了“摩尔定律”和“并行计算”外,在整个计算机组成层面还有几个原则性的性能提升方法

1,加速大概率事件,例如深度学习基本采用向量和矩阵计算,因此采用GPU(专门做这类事)会大大提高性能,现如今谷歌还推出了TPU。

2,通过流水线提高性能,把CPU指令执行过程细分。

3,通过预测提高性能,预测下一步该干什么,提前进行运算。

计算机组成原理该怎么学?

计算机组成原理分四大部分:

  1. 计算机基本组成
  2. 计算机的指令和计算
  3. 处理器设计
  4. 存储器和I/O设备

    首先是计算机基本组成,之前提到过的冯诺依曼体系的五大组件和性能和功耗。
    接着需要掌握计算机的指令和运算,需要明白我们编写的一行行程序是怎么在计算机里面跑起来的,详细了解运算器和控制器,其次就是浮点数,掌握浮点数能对数据的编码,存储和计算有一个从表到了的深入理解,尤其在AI火热的今天,浮点数是机器学习中重度使用的数据表示形式,掌握它更是非常有必要的。
    之后就深入到CPU的设计,搞明白为什么需要CPU时钟以及寄存器和内存是用什么样的硬件组成的之后最后来看整个计算机的数据通路是如何构造出来的。
    最后了解存储器的原理。
    学习时记住学会
    提问自己来串联知识点,例如我写的程序,是怎么从输入的代码变成运行的程序的,并得到最终的结果的。整个过程计算机层面到底经历哪些步骤,有·哪些地方可以优化。
    **写一些示例程序来验证知识点。**相比于死记硬背,一个有着明确性能对比的示例程序,会在脑海里留下更深刻的印象。
    和计算机硬件发展的历史做对照比如奔腾4和SPARC的失败和ARM的成功,能时刻提醒我们CPU指令集的繁与简,权衡性和功耗的重要性。
    入门必读书籍:计算机是怎样跑起来的 程序是怎样跑起来的 ,也可以听听北京大学免费公开课 Computer Organization
    深入学习书籍:深入理解计算机系统
    把地图背下来,积极读相关书籍,日积月累,不会就问。



举报

相关推荐

0 条评论