从0开始的计组生活
希望可以和大家一起学习并分享一下自己的一些学习所得吧
和在座的各位大二计算机学子一起进步
当然还有其他非大二的卷王们有先进意识的学子们一起进步
首先介绍一下目前计算应用的分类和它们的特性
个人计算机 大家都在用 就不细讲了
服务器 高端服务器–>超级计算机:内存为terabyte级,一般简写为TB
嵌入式计算机 数量最多的一种计算机,藏在各个地方(呀哈哈)一般运行预定义的一组或一个应用程序
目前我们已经过渡到了后PC时代了
代替PC的是PMD
猜猜PMD指的是什么
没错就是personal mobile device 个人移动设备
我们俗话所说的手机
代替服务器的是cloud computing 云计算
依赖于称为仓储规模计算机的巨型数据中心
现在我们追求软件即服务
不在本地上运行我们的代码
不知道大家和我一样在学习的过程中会看见一些缩略的大写首字母组成的专有名词
而且不知道它指的是什么
这里先列举一些可能会用到的(后面会慢慢补充
RAM:随机访问存储器,Random Access Memory
CPU:中央处理单元,Central Process Unit
很重要!!!
后面会经常出现
我们知道计算机主要靠硬件间的相互配合实现一些指令
而我们又不可能直接去动硬件(毕竟要直接去进行一个纳米级的操作 实在是有点逆天
这个时候就会有系统软件来帮助我们
提供基本的指令接口,让我们通过应用软件进行调用
从而实现我们的需求
系统软件有两种必须品存在:编译程序和操作系统
操作系统就是另一门课了,简单来说就是硬件和用户之间的桥梁
编译程序呢,看看你的vs,idea,pycharm,嗯就是它们。将高级语言编译成系统能理解的指令,满足我们的需求
编译过程中就会有从高级语言到硬件语言的变化:
这个就是抽象的一个例子
高级语言 先编译成 汇编语言 然后再编译成 二进制语言
这样有很多好处:
1.程序员可以更自然的进行编程,架构
2.提高程序员的生产率
3.提高了程序相对于计算机的独立性:我们可以将高级编程语言在各个计算机上进行编译,并且运行,只要它有编译的工具,她就能成为任何你想要的形状
这里只是简要的概念入门昂
要深入学习的话还要参考之后的笔记
在软件之后,就是硬件
对于硬件它需要:
完成四个基本功能:输入数据、输出数据、处理数据、储存数据
故计算机由5个完成输入、输出、处理、存储数据功能的部件组成
也就是处理器、数据通路、存储器、输入、输出
计算机有两个关键部件:输入设备、输出设备
显示器:利用晶体管控制电流,利用像素成像(像素矩阵
触摸屏:替代键盘鼠标,人的手指做为导体使屏幕的电场发生变化,进而导致电容的变化
机箱:
(1. 集成电路:芯片,包含处理器 那块大绿板
(2. 中央处理单元:大脑
(3. 数据通路:负责算术运算(各种与或非门叠加态,进行数据处理
(4. 内存:由DRAM(动态随机访问存储器 dynamic)芯片组成
处理器内部使用的是缓存(cache),小而快,采用的是SRAM(静态随机访问存储器 static)
硬件和底层软件之间的接口:指令集体系结构,一般由操作系统封装,程序员使用应用二进制接口
易失性存储器(主存储器):关掉电源即去世(你的word文档
非易失性存储器(二级存储器):关掉电源还没逝(DVD机,被刻录了
闪存和磁盘都是属于二级存储器
联网的优点:
(1. 通信:高速交换信息
(2. 资源共享:有些I/O设备可以由网络上的计算机共享,不必每台计算机都配备
(3. 远距离访问:用户可以远离计算机使用
局域网:一定地理位置
广域网:区域很广的网
基本了解一些概念
晶体管:受电流控制的开关
集成电路:由晶体管组成的芯片
超大规模集成电路:VLSI(very large-scale integrated circuit)
制造过程:从硅(半导体)开始,通过化学方法可以对硅添加某些材料,将其细微的区域转化为以下三种类型之一
从硅锭开始,一根很大的棒子,切片变成晶圆,加工成晶体管、导体和绝缘体
其中会有细微瑕疵使得部分电路损坏,因此通过切分,淘汰有瑕疵的晶圆,从而得到成品,衍生出一个概念:成品率
合格的芯片要进行封装,连接到I/O的引脚上
这个经常与两个概念挂钩:吞吐率、响应时间
形象理解就是:更换处理器,降低响应时间也增加了吞吐率,而增加处理器,增加的只是吞吐率
一般来说,吞吐率是服务器更加关注的方面,响应时间是个人计算机更关注的方面
讨论性能时,我们从个人计算机的角度来说,为了使性能最大化,我们通常会让执行时间(响应时间)最小化
因此可以有以下式子:性能 = 1/执行时间
我们描述一台计算机x速度是另一台计算机y的n倍快时,通常指的是:性能x / 性能y = n
也可以说是:执行时间y / 执行时间x = n
为了引入CPU性能公式,我们需要知道以下概念:
CPU执行时间:简称CPU时间,执行某一任务时在CPU上花费的时间(不包含I/O设备
用户CPU时间:在程序本身所花费的时间
系统CPU时间:为执行程序而花费在操作系统上的时间
然后在我们日常购买电脑时,我们经常会听到CPU是多少多少赫兹,也就是它的频率,这个呢与时钟周期挂钩,因为计算机都是用时钟来去动硬件中的各种事件,一个周期做什么事情,几个周期完成这件事情
时钟周期:为计算机一个时钟周期的时间,通常是处理器的时钟,一般为常数
时钟长度:每个时钟周期持续的时间长度
时钟频率:时钟周期的倒数
接下来引入==本章重要考点:CPU性能公式==
一个程序的 C P U 执行时间 = 一个程序的 C P U 时钟周期数 × 时钟周期时间( 1.6.1 一个程序的CPU执行时间 = 一个程序的CPU时钟周期数 × 时钟周期时间 (1.6.1 一个程序的CPU执行时间=一个程序的CPU时钟周期数×时钟周期时间(1.6.1
一个程序的 C P U 执行时间 = 一个程序的 C P U 时钟周期数 / 时钟频率( 1.6.2 一个程序的CPU执行时间 = 一个程序的CPU时钟周期数 / 时钟频率(1.6.2 一个程序的CPU执行时间=一个程序的CPU时钟周期数/时钟频率(1.6.2
这个很好理解,毕竟 总时间 = 需要的周期 × 一个周期的时间 嘛
然后再引入一个概念
CPI:每条指令的时钟周期数
然后我们可以将一个程序的CPU时钟周期数拆分成,这个程序所包含的指令总数,以及每条指令所需要的时钟周期数。
也就是 指令数 × CPI = CPU时钟周期数
代入上式 1.6.1
可得:
C
P
U
时间
=
指令数
×
C
P
I
×
时钟周期时间
CPU时间 = 指令数 × CPI ×时钟周期时间
CPU时间=指令数×CPI×时钟周期时间
同理可得1.6.2的变式。
当然CPI只是一个理想情况,因为不可能所有指令所需的时钟周期数一致嘛,因此通常情况下
C P U 时钟周期数 = ∑ i = 1 n ( C P I i × C i ) CPU时钟周期数 = \sum_{i=1}^n (CPI_i × C_i) CPU时钟周期数=i=1∑n(CPIi×Ci)
功耗 正比于 1/2 × 负载电容 × 电压2 × 开关频率
由于频率的迭代速度(指数级)过快,导致功耗越来越大,趋于功耗比的极限,因此决定采用多处理器,来降低单处理器下的频率过高问题。
拓展:Intel Core i7 基准
很值得一看,其中有另一个重要的计算性能的公式:
MIPS:每秒百万条指令
M
I
P
S
=
指令数
/
(
执行时间
×
1
0
6
)
MIPS = 指令数/(执行时间 × 10^6)
MIPS=指令数/(执行时间×106)
ok 不知不觉已经读完了《计算机组成与设计》的第一节了,好像是有一点累,不过如果在自己有所收获的同时也能为你提供我的学习成果,并且让你也有所收货的话,那么我的努力就有意义!
感谢你的收看。
让我们从0开始,走向1,在计算机的进制里踏踏实实累加,直至在最高位上写上自己属于自己的那个1