文章目录
计算机硬件的基本组成
计算机的结构
**“存储程序”**的概念是指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其 在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直 至程序执行结束。
运算器
控制器
### 计算器的工作过程
计算机系统层次结构
数据的表示和运算
数制与编码
进位计数制
除基取余法(整数部分的转换)
乘积取整法(小数部分的转换)
真值:符合人类习惯的数字
机器数:数字实际存到机器里的形式,正负号需要被“数字化”(0正 1负)
注意:有的十进制小数无法用二进制精确表示,如:0.3
定点数与浮点数的编码表示
定点数:小数点的位置固定 Eg:996.007 –常规计数
浮点数:小数点的位置不固定 Eg:9.96007*102 –科学计数法
无符号数:整个机器字长全部的二进制位均为数值位,没有符号位,相当于数的绝对值。
有符号数的定点表示:定点整数,定点小数
注:可用原码、反码、补码三种方式来表示定点整数和定点小数。还可用移码表示定点整数。
原码:用尾数表示真值的绝对值,符号位“0/1”对应“/正/负”
若机器字长n+1位,原码整数的表示范围: -(2n-1)≤(2n-1)
若机器字长n+1位,原码小数的表示范围: -(1-2-n)≤(1-2-n)
真值0有+0和-0两种形式
反码:若符号位为0,则反码与原码相同;若符号位为1,则数值位全部取反
反码是原码转变为补码的一个中间过程
若机器字长n+1位,原码整数的表示范围: -(2n-1)≤(2n-1)
若机器字长n+1位,原码小数的表示范围: -(1-2-n)≤(1-2-n)
真值0有+0和-0两种形式
补码:整数的补码=原码;负数的补码=反码末位+1
移码:补码的基础上将符号位取反。注意:移码只能用于表示整数(方便用于真值大小比较)
各种码的作用
减法运算转换为加法运算需要用补码
补码的作用:使用补码可将减法操作转变为等价的加法,ALU中无需集成减法器。执行加法操作时,符号位一起参与运算。
移码的作用:移码表示的整数很方便对比大小
运算方法和运算电路
逻辑门电路
基本运算:与或非
复合逻辑运算:与非、或非、异或、同或
异或:两输入相异的时候,输出为1 (奇偶校验)
同或:与异或相反 也叫 异或非门
三种基本逻辑运算的优先级:非>与>或
一位全加器
串行进位加法器
串行进位加法器
并行进位加法器
定点数的运算
定点数移位
-
原码:
只移动数值位,符号位不改变
右移:÷,高位补0,低位舍弃。若舍弃的位=0则相当于÷2;若舍弃的位≠0,则会丢失精度
左移:×,低位补0,高为舍弃。若舍弃的位=0则相当于×2;若舍弃的位≠0,则会出现严重误差
-
反码
反码移位正数与原码相同
负数左移低位补1,右移高位补1
-
补码
正数与原码相同
负数:最右边的1及其右边同原码。最右边的1的左边同反码。
右移(同反码):高位补1,低位舍弃
左移(同原码):低位补0,高位舍弃
-
逻辑移位:可以看作对无符号数的算数移位
-
循环移位:循环左移、循环右移、带进位的循环移位
定点数加减运算
原码和补码、溢出判断
-
原码的加法运算
-
正+正 绝对值做加法,结果为正
-
负+负 绝对值做加法,结果为负
-
正+负 绝对值大的减绝对值小的,符号同绝对值大的数
-
-
原码的减法运算
-
同加法操作
-
-
补码的加减运算
-
符号位同样参与运算就行
-
溢出判断
上溢:“正数+正数“才会上溢,—-正+正=负
下溢:”负数+负数“才会下溢,—-
-
判断溢出
-
方法一:采用一位符号位
-
方法二:上溢:符号位进位0,最高数值位进位1;下溢:符号位进位1,最高数值位进位0
-
方法三:采用双符号位,正数符号为00,负数符号为11,第一个符号位为原本,第二位为现实的
-
双符号位补码又称:模4补码
单符号位补码又称:模2补码
原码的乘法运算
符号位异或,数值位取绝对值进行乘法运算
需要进行n轮加法、移位操作
补码的乘法运算
补码进行n轮加法、移位,最后再多来一次加法
每次可能+0、+[x]补、-[-x]补
原码的除法运算
-
恢复余数法
-
加减交替法
补码的除法运算
数据的存储和排列
-
大小端模式
-
大端:便于人类阅读,低地址存高字节数据
-
小端:便于机器阅读,低地址存低字节数据
-
现代计算机通常时按字节编址,即每个字节对应1个地址
通常也支持按字、按半字、按字节寻址
加入存储字长为32位,则1个字=32bit,半字=16bit。每次访存只能读/写1个字。
-
边界对齐
浮点数的运算
浮点数的表示
阶码:常用补码或移码表示的定点整数
尾码:常用原码或补码表示的定点小数
IEEE754
浮点数的加减运算
浮点数强制类型转化
存储系统
存储系统的基本概念
主存-辅存:实现虚拟存储系统解决了主存容量不够的问题(数据调用由硬件+操作系统完成)
Cache—主存:解决了主存与CPU速度不匹配的问题(数据调用由硬件自己完成)
存储器(按层次分类):高速存储器(Cache)、主存储器(主存、内存)、辅助存储器(辅存、外存)
读写存储器(Read/Write Memory)——即可读、也可写(如:磁盘、内存、Cache)
只读存储器(Read Only Memory)-—只能读,不能写(如:实体音乐专辑通常采用CD-ROM,实体电影采用蓝光光碟,BIOS通常写在ROM中)
主存储器
基本组成
SRAM&DRAM
DRAM(动态)用于主存,使用栅极电容
-
读出1:MOS管接通,电容放电,数据线上产生电流,破坏性读出。读出后应有重写操作。
-
读出0:MOS管接通后,数据线上无电流。
-
电容最多只能保存2ms电荷,需要“刷新”
SRAM(静态)用于Cache,使用双稳态触发器。
-
读写都稳定,无需重写,速度更快,集成度低,功耗大,成本高
DRAM刷新
ROM
双端口RAM和多模块存储器
主存储器与CPU之间的连接
连接原理
位扩展
由于存储芯片的位数限制,数据总线得不到充分利用,于是进行位扩展
这样就拓展位了8位,将1K×1位扩展为了8K×8位的存储器
字扩展
地址总线得不到充分利用,数据总线已经得到了充分利用,进行字扩展,增加地址总线利用率
剩余的地址位用作片选信号,这样使得可以选中不同的芯片
如上为线选法,存在问题,可优化,问题为,不能同时选1,这样就写入一样的了,11就没用到
可通过译码器进行优化,译码器片选法
线选法 | 译码片选法 |
---|---|
n条线–>n个选片信号 | n条线–>2^n个选片信号 |
电路简单 | 电路复杂 |
地址空间不连续 | 地址空间可连续 |
字位同时扩展法
多块芯片为一组(相当于位扩展),再进行字扩展
译码器补充
画了o是低电平有效,相当于非
多个使能
外部存储器
磁盘存储器
旋转延迟时间可以按转半圈来算
固态硬盘SSD
高速缓冲存储器
Cache的基本原理
局部性原理
-
空间局部性:在最近的未来要用 到的信息(指令和数据),很可能与现在正在使用的信息在存储空 间上是邻近的
-
时间局部性:在最近的未来要用 到的信息,很可能是现在正在使用的信息
性能分析
设tc为访问一次Cache所需的时间,tm为访问一次主存的所需时间
命中率H:CPU欲访问的信息已在Cache中的比率
缺失(未命中)率:M=1-H
Cache-主存系统的平均访问时间t为t=Htc+(1-H)*(tc+tm) //先访问Cache,若未命中再访问主存
或t=Htc+(1-H)*tm //同时访问Cache和主存,若Cache命中则立即停止访问主存
Cache和主存的映射关系
全相联映射(随意放)
直接映射(只能放固定位置)
末尾几位不用存,因为硬件不需要取余,只需对比后面几位,后面几位为cache块号
组相联映射(可放到特定分组)
末尾几位不用存,因为硬件不需要取余,只需对比后面几位,后面几位为cache组号,组号相同则为同一组
Cache替换算法
随机算法
随机算法(RAND, Random)——若Cache已满,则随机选择一块替换。
随机算法——实现简单,但完全没考虑局部性原理,命中率低,实际效果很不稳定
先进先出算法
先进先出算法(FIFO, First In First Out)——若Cache已满,则替换最先被调入Cache 的块。
先进先出算法——实现简单,最开始按#0#1#2#3放入Cache,之后轮流替换 #0#1#2#3 FIFO依然没考虑局部性原理,最先被调入Cache的块也有可能是被频繁访问的
近期最少使用算法
近期最少使用算法(LRU, Least Recently Used )—— 为每一个Cache块设置一个“计数器”,用于记录 每个Cache块已经有多久没被访问了。当Cache满后替换“计数器”最大的
LRU算法——基于“局部性原理”,近期被访问过的主存块,在不久的将来也很有可能被再次访问,因 此淘汰最久没被访问过的块是合理的。LRU算法的实际运行效果优秀,Cache命中率高。 若被频繁访问的主存块数量 > Cache行的数量,则有可能发生“抖动”
-
①命中时,所命中的行的计数器清零,比其低的计数器加1,其余不变
-
②未命中且还有空闲行时,新装入的行的计数器置0,其余非空闲行全加1;
-
③未命中且无空闲行时,计数值最大的行的信息块被淘汰,新装行的块的计数器置0,其余全加1。
做题技巧:从当前位置往前看,找到最后一个出现的主存块,就是最近最少使用的将其替换
最不经常使用算法
最不经常使用算法(LFU, Least Frequently Used )—— 为每一个Cache块设置一个“计数器”,用于记录每个Cache块被访问过几次。当Cache满后替换“计数器”最小的
LFU算法——曾经被经常访问的主存块在未来不一定会用到(如:微信视频聊天相关的块), 并没有很好地遵循局部性原理,因此实际运行效果不如 LRU
Cache写策略
写命中
-
写回法
写回法(write-back) —— 当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主 存,只有当此块被换出时才写回主存 被替换时写回一整块
减少了访存次数,但存在数据不一致的隐患。
-
全写法
全写法(写直通法,write-through) —— 当CPU对Cache写命中时,必须把数据同时写入Cache 和主存,一般使用写缓冲(write buffer) 写 写 Cache块被替换 时无需写回
访存次数增加,速度变慢,但更能保证数据一致性
使用写缓冲,CPU写的速度很快,若写操作不频繁,则效果很好。若写操作很频繁,可能会因为写缓冲饱和而发生阻塞
##### 写不命中
-
写分配法
写分配法(write-allocate)——当CPU对Cache写不命中时,把主存中的块调入Cache,在Cache 中修改。通常搭配写回法使用。
写回法(write-back) —— 当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存, 只有当此块被换出时才写回主存
-
非写分配法
非写分配法(not-write-allocate)——当CPU对Cache写不命中时只写入主存,不调入Cache。 搭配全写法使用。
只有”读”未命中时才调入Cache,写操作未命中就只写入主存不调入Cache
全写法(写直通法,write-through) —— 当CPU对Cache写命中时,必须把数据同时写入Cache和 主存,一般使用写缓冲(write buffer)
多级Cache
页式存储器
逻辑地址(虚地址):程序员视角看到的地址
物理地址(实地址):实际主存的中的地址
CPU执行的机器指令中,使用的是“逻辑地址”,因此需要通过“页表”将逻辑地址转为物理地址。
页表的作用:记录了每个逻辑页面存放在哪个主存块中。
快表TLB
有点类似Cache
快表,加快地址变换的速度
虚拟存储系统
页式虚拟存储器:按页大小拆分
段式虚拟存储器:按功能拆分
段页式虚拟存储器:先分段再分页
指令系统
指令系统的基本格式
一条指令通常包括操作码字段和地址码字段两部分。
按地址码数目分类
零地址指令
-
不需要操作数,如空操作、停机、关中断等指令
-
堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶
一地址指令
-
只需要单操作数,如加1、减1、取反、求补等
指令含义:OP(A1)→A1 ,完成一条指令需要3次访存:取指–>读A1 –>写A1
-
需要两个操作数,但其中一个操作数隐含在某个寄存器(如隐含在ACC)
指令含义: (ACC)OP(A1)→ACC 完成一条指令需要2次访存:取指–>读A1
二地址指令
常用于需要两个操作数的算术运算、逻辑运算相关指令
指令含义:(A1)OP(A2)→A1
完成一条指令需要访存4次,取指→读A1 →读A2 →写A1
三地址指令
常用于需要两个操作数的算术运算、逻辑运算相关指令
指令含义:(A1)OP(A2)→A3
完成一条指令需要访存4次,取指→读A1 →读A2 →写A3
四地址指令
指令含义:(A1)OP(A2)→A3,A4=下一条将要执行指令的地址
完成一条指令需要访存4次,取指→读A1 →读A2 →写A3
正常情况下:取指令之后 PC+1,指向下一条指令
四地址指令:执行指令后,将PC的值修改位 A4 所指地址
按指令长度分类
指令字长:一条指令的总长度(可能会变)
机器字长:CPU进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)
存储字长:一个存储单元中的二进制代码位数(通常和MDR位数相同)
半字长指令、单字长指令、双字长指令 ——指令长度是机器字长的多少倍
指令字长会影响取指令所需时间。如:机器字长=存储字长=16bit,则取一条双字长指令需要两次访存
-
定长指令字结构:指令系统中所有指令的长度都相等
-
变长指令字结构:指令系统中各种指令的长度不等
按操作码长度分类
-
定长操作码:指令系统中所有指令的操作码长度都相同
控制器的译码电路设计简单,但灵活性较低
-
可变长操作码:指令系统中各指令的操作码长度可变 n位–>2n条指令
控制器的译码电路设计复杂,控制器的译码电路设计复杂
定长指令字结构+可变长操作码–>扩展操作码指令格式 不同地址数的指令使 用不同长度的操作码
按操作类型分类
拓展操作码指令格式
指令的寻址方式
指令寻址
-
顺序寻址
通过程序计数器PC加1(1个指令字长),自动形成下一条指令的地址。(变长指令字结构,可以根据操作码判 断这条指令的总字节数 n, 修改PC的值)
-
跳跃寻址
通过转移类指令实现。所谓跳跃,是指下条指令的地址不由程序计数器PC自动给出,而由本条指令给出的下条指令地址的计算方式。而是否跳跃可能受到状态寄存器和操作数的控制,跳跃的地址分为绝对地址(由标记符直接得到)和相对地址(相对于当前指令地址的偏移量),跳跃的结果是当前指令修改PC的值,所以下一条指令仍然通过PC给出。
数据寻址
数据寻址是指如何在指令中表示一个操作数的地址,如何用这种表示得到操作数或怎样计算出操作数的地址。
数据寻址的方式较多,为区别各种方式,通常在指令字中设一个字段,用来指明属于哪种寻址方式,由此可得指令的格式如下所示
直接寻址
直接寻址:指令字中的形式地址A就是操作数的真实地址EA,即EA=A 。
间接寻址
间接寻址:指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址。所在的存储单元的地址,也就是操作数地址的地址,即EA=(A) 。
间接寻址(Indirect Addressing)是一种计算机程序中使用的寻址方式,它通过一个地址指针来访问内存中的数据或指令。 在间接寻址中,CPU并不直接使用操作数中的地址,而是把该地址看作是一个指向另一个地址的指针。CPU首先读取这个指针指向的地址,然后再根据这个地址来获取实际的操作数值。这个过程也称为间接引用(Indirection)。 例如,在汇编语言中,可以使用间接寻址来实现数组访问。假设有一个数组a,其起始地址存储在寄存器R1中,要访问第i个元素,可以使用如下代码: MOV R2, i ; 把i加载到寄存器R2中 MOV R3, [R1+R2] ; 使用间接寻址,将a[i]存放到寄存器R3中 在这个例子中,[R1+R2]就是一个间接寻址,它先把R1和R2相加得到一个地址,然后从这个地址中读取数据,即为a[i]的值。通过使用间接寻址,程序员可以很方便地访问数组中的元素,同时也提高了程序的灵活性。
寄存器寻址
寄存器寻址:在指令字中直接给出操作数所在的寄存器编号,即EA =Ri ,其操作数在由Ri 所 指的寄存器内。
寄存器间接寻址
寄存器间接寻址:寄存器Ri 中给出的不是一个操作数,而是操作数所在主存单元的地址, 即EA=(Ri ) 。
隐含寻址
隐含寻址:不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址 。
立即寻址
立即寻址:形式地址A就是操作数本身,又称为立即数,一般采用补码形式。 #表示立即寻址特征。
一条指令的执行: 取指令 访存1次 执行指令 访存0次 暂不考虑存结果 共访存1次
优点:指令执行阶段不访问主存,指令执行时间最短
缺点: A的位数限制了立即数的范围。 如A的位数为n,且立即数采用补码时,可表示的数据范围为−2n-1~2n-1− 1
相对寻址
相对寻址:EA=(PC)+A,其中 A是相对于PC所指地址的位移量,可正可负,补码表示
拓展:ACC加法指令的地址码, 可采用“分段”方式解决,即 程序段、数据段分开。
优点:操作数的地址不是固定的,它随着PC值的变化而变化,并且与指令地址之间总是 相差一个固定值,因此便于程序浮动(一段代码在程序内部的浮动)。 相对寻址广泛应用于转移指令。
基址寻址
基址寻址:将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A, 而形成操作数的有效地址,即EA=(BR)+A。
优点:便于程序“浮动”,方便实现多道程序并发运行
拓展:程序运行前,CPU将BR的值修改为 该程序的起始地址(存在操作系统PCB中)
注:基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。在程序执行 过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)。
当采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器, 但其内容仍由操作系统确定。
优点:可扩大寻址范围(基址寄存器的位数大于形式地址A的位数);用户不必考虑自 己的程序存于主存的哪一空间区域,故有利于多道程序设计,以及可用于编制浮动程序 (整个程序在内存里边的浮动) 。
变址寻址
变址寻址:有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容相加之和, 即EA= (IX)+A,其中IX可为变址寄存器(专用),也可用通用寄存器作为变址寄存器 。
注:变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变
(IX作为偏移量),形式地址A不变(作为基地址) 。
基址寻址中,BR保持不变作为基地址, A作为偏移量
优点:在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便 可很容易形成数组中任一数据的地址,特别适合编制循环程序。
基址&变址复合寻址
堆栈寻址
堆栈寻址:操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址。
堆栈是存储器(或专用寄存器组)中一块特定的按“后进先出(LIFO)”,原则管理的存储区,该存储区中被读/写单元的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针(SP)。
##### 总结
简述各常见指令寻址方式的特点和使用情况
立即寻址操作数获取便捷,通常用于给寄存器赋初值。
直接寻址相对于立即寻址,缩短了指令长度
间接寻址扩大了寻址范围,便于编制程序,易于完成子程序返回。
寄存器寻址的指令字较短,指令执行速度较快。
寄存器间接寻址扩大了寻址范围。
基址寻址扩大了操作数寻址范围,适用于多道程序设计,常用于为程序或数据分配存储空间。
变址寻址主要用于处理数组问题,适合编制循环程序。
相对寻址用于控制程序的执行顺序、转移等。
基址寻址和变址寻址的区别:两种方式有效地址的形成都是寄存器内容+偏移地址,但是在基址寻址中,程序员操作的是偏移地址,基址寄存器的内容由操作系统控制,在执行过程中是动态调整的;而在变址寻址中,程序员操作的是变址寄存器,偏移地址是固定不变的。
取指也要一次访存
程序的机器码表示
X86相关寄存器
X86常用指令
AT&T格式 vs Inter格式
选择语言
可以用函数名做标号
无条件转移指令
jmp <地址> #PC 无条件转移至 <地址>
jmp 128 #<地址>可以用常数给出
jmp eax #<地址>可以来自于寄存器
jmp [999] #<地址>可以来自于主存
jmp NEXT #<地址>可以用“标号”锚定
条件转移指令
cmp/tesr
指令。cmp
指令用于比较两个操作数的值,test
指令对两个操作数进行逐位与运算,这两类指令都不保存操作结果,仅根据运算结果设置CPU状态字中的条件码。
循环语言
while
do-while
for
用条件测试和跳转组合起来实现循环的效果。
用条件转移指令实现循环,需要4个部分构成:
-
循环前的初始化
-
是否直接跳过循环?
-
循环主体
-
是否继续循环?
ecx
循环计数器,不能用其他的寄存器
函数调用机器表示
call ret指令
函数调用指令:call<函数名>
函数返回指令:ret
注:x86处理器中 程序计数器 PC (Program Counter) 通常被称为 IP(Instruction Pointer)
call指令的作用:
-
将IP旧值压栈保存(保存在函数的栈帧顶部)
-
设置IP新值,无条件转移至被调用函数的第一条指令
ret 指令的作用:
-
从函数的栈帧顶部找到 IP旧值,将其出栈并恢复IP寄存器
如何访问栈帧?
如何切换栈帧
注:每个栈帧底部,用于保存上一层的栈帧基址
push ebp mov ebp esp ... ... ... mov esp ebp pop ebp
栈帧中包含什么内容?参数、返回值传递
栈帧最底部一定是上一层栈帧基址(ebp旧值)
栈帧最顶部一定是返回地址(当前函数的栈帧除外)
CISC和RISC
复杂指令集精简指令集
CISC大部分使用微程序控制
中央处理器
CPU的功能和基本结构
CPU的功能
-
指令控制。完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
-
操作控制。一条指令的功能往往是由若干操作信号的组合来实现的。CPU管 理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件, 从而控制这些部件按指令的要求进行动作。
-
时间控制。对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。
-
数据加工。对数据进行算术和逻辑运算。
-
中断处理。对计算机运行过程中出现的异常情况和特殊请求进行处理。
控制器和运算器的功能
运算器:对数据进行加工
控制器
-
协调并控制计算机各部件执行程序的指令序列,基本功能包括取指令、分析指令、执行指令
-
取指令:自动形成指令地址;自动发出取指令的命令。
-
分析指令:操作码译码(分析本条指令要完成什么操作);产生操作数的有效地址。
-
执行指令:根据分析指令得到的”操作命令”和”操作数地址”,形成操作信号控制序列,控制运算器、存储器以及I/O设备完成相应的操作。
-
中断处理:管理总线及输入输出;处理异常情况(如掉电)和特殊请求(如打印机请求打印一行字符)。
运算器的基本结构
控制器的基本结构
CUP的基本结构
指令的执行过程
指令周期
取指周期
间址周期
执行周期的任务是根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。
不同指令的执行周期操作不同,因此没有统一的数据流向。
中断周期
执行方案
数据通路的功能和基本结构
单总线结构
例题
专用通路结构
例题
控制器的功能和工作原理
硬布线控制器
微程序控制器
总结
微指令的设计
微指令的格式
微指令的编码方式
直接编码(直接控制)、字段直接编码方式、字段简介编码方式
微指令的地址形成方式
异常和中断机制
指令流水线
定义
指令流水线的性能指标
吞吐率
加速比
效率
指令流水线影响因素分类
结构相关
数据相关
控制相关(控制冲突)
流水线的分类
流水线的多发技术
超标量技术
超流水技术
超长指令字
五段流水线技术
多处理机的基本概念
SISD:单指令单数据流
SIMD:单指令多数据流
MIMD:①共享存储多处理器系统②多计算机系统
向量处理器
硬件多线程的基本概念
细粒度多线程
粗粒度多线程
同时多线程(SMT)
总线(选择)
总线概述
总线的定义:总线是一组能为多个部件分时共享的公共信息传送线路。
为什么要用总线?
早期计算机外部设备少时大多采用分散连接方式,不易实现随时增减外部设备。为了更好地解决I/O设备和主机之间连接的灵活性问题,计算机的结构从分散连接发展为总线连接。
共享是指总线上可以挂 接多个部件,各个部件 之间互相交换的信息都 可以通过这组线路分时共享。
分时是指同一时刻只允 许有一个部件向总线发 送信息,如果系统中有 多个部件,则它们只能 分时地向总线发送信息
总线的特性
-
机械特性:尺寸、形状、管脚数、排列顺序
-
电气特性:传输方向和有效的电平范围
-
功能特性:每根传输线的功能(地址、数据、控制)
-
功能特性:每根传输线的功能(地址、数据、控制)
总线的分类
串行总线
优点:只需要一条传输线,成本 低廉,广泛应用于长距离传输; 应用于计算机内部时,可以节省 布线空间。
缺点:在数据发送和接收的时候 要进行拆卸和装配,要考虑串行-并行转换的问题
并行总线
优点:总线的逻辑时序比较简单, 电路实现起来比较容易。
缺点:信号线数量多,占用更多的布线空间;远距离传输成本高昂;由于工作频率较高时,并行的信号线之间会产生严重干扰,对每条线等长的要求也越高,所以无法持续提升工作频率。
片内总线
片内总线是芯片内部的总线。 它是CPU芯片内部寄存器与寄存器之间、寄存器与ALU之间的公共连接线。
系统总线
系统总线是计算机系统内各功能部件(CPU、主存、I/O接口)之间相互连接的总线。 按系统总线传输信息内容的不同,又可分为3类:数据总线、地址总线和控制总线。
-
数据总线用来传输各功能部件之间的数据信息,它是双向传输总线,其位数与机器 字长、存储字长有关。
-
地址总线用来指出数据总线上的源数据或目的数据所在的主存单元或I/O端口的地址, 它是单向传输总线,地址总线的位数与主存地址空间的大小有关。
-
控制总线传输的是控制信息,包括CPU送出的控制命令和主存(或外设)返回CPU的 反馈信号。
数据通路表示的是数据流经的路径
数据总线是承载的媒介
通信总线
通信总线是用于计算机系统之间或计算机系统与其他系统(如远程通信设备、测试设备) 之间信息传送的总线,通信总线也称为外部总线。
系统总线的结构
单总线结构
三总线结构
四总线结构
总线的性能指标(大题第一问)
总线的传输周期(总线周期)
一次总线操作所需的时间(包括申请阶段、 寻址阶段、传输阶段和结束阶段),通常 由若干个总线时钟周期构成。
总线周期与总线时钟周期的关系比较魔幻, 大多数情况下,一个总线周期包含多个总线时钟周期 有的时候,一个总线周期就是一个总线时钟周期 有的时候,一个总线时钟周期可包含多个总线周期
总线时钟周期
即机器的时钟周期。计算机有一个统一的 时钟,以控制整个计算机的各个部件,总 线也要受此时钟的控制。
总线的工作频率
总线上各种操作的频率,为总线周期的倒数。
若总线周期=N个时钟周期,则总线的工作频率=时钟频率/N。
实际上指一秒内传送几次数据。
总线的时钟频率
即机器的时钟频率,为时钟周期的倒数。
若时钟周期为T,则时钟频率为1/T。
实际上指一秒内有多少个时钟周期。
总线宽度
又称为总线位宽,它是总线上同时能够传输的数据位数, 通常是指数据总线的根数,如32根称为32位(bit)总线。
总线带宽
可理解为总线的数据传输率,即单位时间内总线上可传输数据的位数,通常用每秒钟传送信息的字节数来衡量,单 位可用字节/秒(B/s)表示。
总线带宽 = 总线工作频率 × 总线宽度 (bit/s)= 总线工作频率 × (总线宽度/8) (B/s)
注:总线带宽是指总线本身所能达到的最高传输速率。
在计算实际的有效数据传输率时,要用实际传输的数据量除以耗时。
例题
总线复用、信号线数
总线 操作和定时
总线周期的四个阶段
1)申请分配阶段:由需要使用总线的主模块(或主设备)提出申请,经总线仲裁机构决定将下一传输周 期的总线使用权授予某一申请者。也可将此阶段细分为传输请求和总线仲裁两个阶段。
2)寻址阶段:获得使用权的主模块通过总线发出本次要访问的从模块的地址及有关命令,启动参与本次传输的从模块。
3)传输阶段:主模块和从模块进行数据交换,可单向或双向进行数据传送。
4)结束阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权。
总线定时是指总线在双方交换数据的过程中需要时间上配合关系的控制,这种控制称为总线定时,它的实质是一种协议或规则
同步定时方式
异步定时方式
请求与回答
半同步通信
从设备速度跟不上,可以加各等待信号,等待数据准备
分离式通信
由于准备数据的时候没有使用总线,但是主从设备还占用了总线,分离式通信将总线串数周期分离成两个周期,这样准备数据的时候就不占用总线了。
输入和输出系统
I/O系统基本概念
显存
一帧的大小
VRAM容量=分辨率*灰度级位数
VRAM带宽=分辨率*灰度级位数*帧频
IO接口
重点:IO接口中各种寄存器各种逻辑电路的作用
I/O接口:又称I/O控制器(I/O Controller)、设备控制器,负责协调主机与外部设备之间的数据传输
统一编址 独立编址
I/O方式
程序查询方式
程序查询方式例题:
程序查询方式
CPU一旦启动I/O,必须停止现行程序的运行,并在现行程序中插入一段程序。
主要特点:CPU有“踏步”等待现象,CPU与I/O串行工作。
优点:接口设计简单、设备量少。
缺点:CPU在信息传送过程中要花费很多时间用于查询和等待,而且如果采用独占查询, 则在一段时间内只能和一台外设交换信息,效率大大降低。
独占查询:CPU 100%的时间都在查询I/O状态,完全串行
定时查询:在保证数据不丢失的情况下,每隔一段时间CPU就查询一次I/O状态。查询的 间隔内CPU可以执行其他程序
程序中断方式
中断的基本概念:程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂 时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现 行程序的断点处,继续执行原程序
关中断的作用:实现原子操作(一气呵成的做完)
IF=1表示开中断(允许中断)
IF=0表示关中断(不允许中断)
中断请求标记触发器
每个中断源向CPU发出中断请求的时间是随机的。 为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR, 当其状态为“1”时,表示中断源有请求。 这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中。
中断判优实现
中断判优-优先级设置
-
硬件故障中断属于最高级,其次是软件中断;
-
非屏蔽中断优于可屏蔽中断;
-
DMA请求优于I/O设备传送的中断请求
-
高速设备优于低速设备;
-
输入设备优于输出设备;
-
实时设备优于普通设备。
多重中断
中断屏蔽技术
中断方式例题
DMA方式
赞赏微信赞赏 支付宝赞赏