计算机底层和计算机原理!!!!
研究计算机硬件在底层是怎末运行的!
计算机硬件能识别的数据
用低电平表示0 用高电平表示1
皮卡丘使高电压!
计算机传递数据是用的电信号!!!
针脚是用来接受电信号的
1 计算机的发展
1.1 什么是计算机系统
计算机系统=硬件和软件!两个部分
硬件:计算机的实体部分看得见摸得到的部分
软件:看得见摸不着的 比如微信微博操作系统这些
硬件是物理基础--给出计算机系统的天花板在哪 而软件又可以让硬件发挥到什么程度!
软件
1.2 硬件的发展
电子管:【逻辑元件】用来处理电信号的最小单元!
只能识别0101,输入的时候就是要0101
体积变小了,但是是手动焊接的,不可靠
就是把晶体管、电容等高密度的集合在一起!
这个是可靠一点的
微处理器:intel
机器字长的提升会直接影响机器cpu的性能的!
16进制的加法 再8080上要运行两次 但在8086上只需要一次!
逻辑元件的集成度越来越高,元件越来越小,速度越来越快,功耗越来越低!
1.3 软件的发展
编程语言
机器语言--汇编语言--高级编程语言
编程语言是否方便好用直接决定了软件的世界是否足够丰富!
总结
2 计算机系统层次结构
2.1 计算机硬件的基本组成
现代计算机结构其实就是早期冯诺依曼结构的优化!
之前是说一句做一句 告诉一个指令然后做一个指令!
存储程序 一口气告诉计算器
0101二进制的数
运算器的中转进存储器
控制器:通过电信号来协调部件的工作,也负责解析存储器里的程序指令
逻辑等效:同一个功能既可以软件或者硬件完成!软件(成本和效率都低,硬件反之!)
冯特点:
以运算器为中心!!
数据传送也要运算器帮忙,本来运算器是用来数据处理的,这样就会导致效率降低!
本来采购部门可以直接给 仓储部门 加工之后放回到仓储 销售直接从仓储那 现在都要经过生产加工部门的帮忙 所以效率会降低!!!
解决方案:现代的计算机结构(以存储器为中心)
运算器和控制器十分紧密!
大规模集成电路出现以后 这两个通常是在一个芯片上的!
整合了这两个部件的芯片就是cpu
副存就是机械硬盘、固态硬盘
注意:主机只包含主存!!!
平时的app在副存!
当app启动的时候才进入主存
总结
2.2 各个硬件的工作原理
内部细节和如何运作的
主存储器
存储体是由存储元件构成 存放01
寄存器 也是存放数据的
类比菜鸟驿站:
cpu可以写也可以读!
存储体:
电容可以存储电荷 所以一个电容可以存储一个二进制的比特位 但不重要 只需要知道一个存储单元存储1bit就好!
MAR和MDR 与存储体的关系
字和字节!!!
运算器
X可能有多多个,但是1个就可以运算了
ALU是核心部件!!!实现算数运算和逻辑元素!
控制器
cu就是那个霸道总裁
计算机的工作过程
编码存入主存:
这些指令都是存储在存储体中的!
第一条指令:
第二条指令:
当取数指令 完成之后pc的值就会加一 也就是说这时运行下一条指令!
第二次的 操作码 是乘法 指令!
X和MQ存储的数进行相乘的操作!
如果进行乘商运算 操作数就放在乘商寄存器里!
b的值现在在乘胜寄存器MQ里【乘法运算的后一位(低位!)】
然后把a的值放入通用寄存器x里【乘法运算的高位!】
然后cu通过控制线告诉ALU(算数逻辑单元)让他进行乘法运算
运算的结果放在ACC里!
看出是乘法指令之后就会不同!
第三条
每一条指令结束之后 运算结果都在ACC里?
把后边的那个操作数 直接放在相应的乘商寄存器【做乘法】或x里【做累加的时候】
第四条
CU告诉存储体 我要进行的是存数的操作!
第五条
后边的就是操作系统的指令了
总结
cpu可以区分是指令还是数 然后指令放在IR里 数放在x或者MQ里 最后cu发送指令ALU 让ALU 进行运算!!!
存储体的概念弄清楚!字 字节 B b
2 只是放入不同的为止而已
4 有的计算机可以只是多个地址码 后面会将
5 在程序运行之前 指令和数据都会先存到主存里面!
2.3 计算机系统的多级层次结构
计算机系统的层次结构
微指令是对指令的分解!
汇编语言--虚拟机器 不能直接识别汇编语言!汇编语言和机器语言是一一对应的!
汇编语言 只是更便于人理解而已 和机器语言相比没有本质的区别 依然是低级语言!
高级语言--c+、java、python
虚拟:(看起来机器好像直接能理解 但不是!!!)
三种级别的语言
机器语言程序才是可以让cpu运行的程序!
编译:一次 生成exe文件 效率高【手写翻译】
解释:翻译一句立即执行 效率低【同声传译】
C,C++是编译语言 而java python是解释型语言!
作用都是:把高级语言转换成低级语言!
总结
注意编译程序和解释程序的区别!
计算机体系结构vs计算机组成原理
3 计算机性能指标
3.1 存储器的性能指标
MAR 地址寄存器:有几个就有多少个地址编号!32位就有 2的32次方个地址!
MDR 数据寄存器:读入或者写入的数据是什么 就存储在MDR里!有几位就是几bit!
所以就可以计算总容量!
n个二进制位可以表示 2的n次方 种状态
2048 2 的11次方!
单位之间的换算
1KB = 1024B
3.2 cpu的性能指标
主频 每秒有多少个时钟周期
脉冲信号:指挥cpu所有部件一步一步工作的节奏!(广播体操 )
动作有先后顺序!
主频是10HZ表示的就是 1秒有10个脉冲信号!
对于相同型号的cpu来说,主频越高的话cpu速度就会越快
cpu主频很大程度上反应了cpu的性能 但是不是唯一指标!
还有其他因素:
CPI执行一个指令所需要的时钟周期数
之前的例子:取数指令需要9个步骤,乘法11,这两个指令所需要的时钟周期肯定不一样!
不同的cpu尽管执行的都是乘法程序,根据乘法指令实现的方式不同,时钟周期数量也可能不同!
同一个cpu执行相同的指令也有可能不同 比如取数 如果主存储器现在负荷太大的话 可能要花费更多的时钟周期!
cpi通常使用的是平均值
时钟周期长度 是 主频的倒数
cpi是执行一条指令所需的周期数!
eg :cpu执行时间:
IPS每秒执行多少指令
主频是 每秒有多少个时钟周期
CPI是一个指令需要多少时钟周期
除一下就是 每秒执行多少指令
FLOPS每秒执行多少次浮点运算
这里的KMGT 和存储单位哪里是不一样的!
2MIPS表示的是:仪表可以执行2*10的6次方个指令!
*单位在不同场景下 换算不同!!!
当描述存储器的容量或者文件的大小的时候:
数据的处理速率的时候:
3.3 系统整体性能指标【前几个是静态的】
数据带宽通路
cpu和内存 内存和I/O设备 之间的信息传输都是通过数据总线!!
比如数据带宽是8bit 如果要传输16bit 则需要传输两次
传两次肯定比传一次慢,因此 数据通路的带宽会直接影响到数据传输的效率!
吞吐量
可以理解成一条指令就是一个请求 或者一个完整的程序运行是一个请求 在不同的场景下理解也不同!食堂打饭的师傅:每秒可以完成多少个同学的饭就是师傅的吞吐量!
响应时间
也是很宽泛的指标
3.4 系统整体的性能指标(动态测试)
思考!?
A1秒可以运行0.2G这么多条指令
B1秒可以运行1G
总结:
注意cpu的计算!
注意单位换算的不同!