计算机组成原理 学习笔记
计算机的组成
冯诺依曼计算机结构
计算机由运算器、存储器、控制器、输入和输出设备五大部分组成;
指令和数据以同等地位存放在存储器内,并可按地址访问;
指令和数据均采用二进制来表示;
指令由操作码和地址码组成;
指令在存储器内顺序存放,通常循序执行,在特定条件下,可根据运算结果或条件改变执行顺序;
机器以运算器为中心,输入输出设备与存储器间的数据传输通过运算器完成。
主机
cpu
运算器
MQ:乘商寄存器
ACC:累加器
ALU:算术逻辑单元
X:操作数寄存器
逻辑运算
与、或、非、异或(通常用电路中三极管的高低电平实现)
算数运算
加法器
减法器(加相反数)
乘法器(加相同数)
除法器(减相同数)
控制器
CU:控制单元
IR:指令寄存器
PC:程序计数器
指令通过操作码和地址码来执行。
存储器
MAR:地址寄存器
MDR:数据寄存器
I/O设备
输入设备
输出设备
u盘和硬盘等都属于外设。
五大层次
软件层
虚拟机器M4(高级语言机)将高级语言翻译成汇编语言
虚拟机器M3(汇编语言机)将汇编语言翻译成机器语言
虚拟机器M2(操作系统机)用机器语言解释操作系统
硬件层
传统机器M1(机器语言机)将机器指令翻译成微程序
微程序机器M0(微指令系统)直接执行微指令
数据的表示与运算
数值与编码
进位计数法和相互转换
每个数为所用到的不同符号的个数称之为基数。
一进制:一个符号
二进制:0、1
八进制:0、1、2、3、4、5、6、7
十进制:0、1、2、3、4、5、6、7、8、9
十六进制:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
二进制、八进制、十进制、十六进制之间小数部分和整数的部分相互转化
定点数的表示和运算
真值和机器数
真值是机器鼠所代表的实际的值;
机器数是真值在计算机中的表示;
符号位和数据位;
无符号数和有符号数。
定点数
小数点位置固定不变,小数点前面是符号位,后面是数据位,分为定点小数和定点整数两种。
真值 | 机器数 |
---|---|
+1110 | 0,1110 |
-0.1110 | 0.1110 |
机器数的原码表示
只需要将正负号换成0,1即可;
若是小数形式,将间隔符号位和数据位的“,”换成“.”即可。
机器数的补码表示
整数 | 小数 | ||
---|---|---|---|
正整数 | 将符号位变成0 | 正小数 | 将符号位变成0 |
负整数 | [X]补=10的n次方-X的绝对值 | 负小数 | 10.n个0-X的绝对值 |
[A+B]补=[A]补+[B]补
[A-B]补=[A]补+[-B]补
原码和补码的互相转换
对于正数:[X]原=[X]补;
对于负数:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1;
符号位为1,其余各位取反,然后再整个数加1。
定点数的加减法
加法可以用原码和补码;减法用补码将减法转换为加法。
溢出判断
用一位符号位来做溢出判断
结果符号与源操作数符号不同则溢出(因为减法操作都被转化为加法,所以不会出现操作数符号相异的情况)。
用两位符号位来做溢出判断
用量为符号位表示的补码称为变形补码,00表示正,11表示负,变形补码两个符号位都参加运算。
00:结果为正,无溢出;
01:正溢出;
10:负溢出;
11:结果为负,无溢出。
用一位符号位根据进位情况来做溢出判断
符号位的进位和数据最高位的进位相同则武器出,否则溢出。
定点数的移位运算
算数位移
符号位不变,左移丢高位,右移丢低位,添0规则如下表:
正数 | 原码、补码、反码 | 添0 |
---|---|---|
负数 | 原码 | 添0 |
负数 | 补码 | 左移添0 |
负数 | 补码 | 右移添1 |
负数 | 反码 | 添1 |
逻辑移位
当成无符号数来处理,左移丢高位,低位添0;右移丢低位,高位添0;符号位不参与移位。
定点数的乘法运算
原码乘法
适用于原码惩罚,符号位单独处理,结果符号位符号位取异或,数值部分按绝对值进行计算。
ACC:存放乘积高位;MQ:存放乘数和乘积低位
补码乘法(Booth算法)
- 被成熟X与乘数Y均以补码形式参与乘法运算,运算结果是乘积的补码;
- 部分积和被成熟X采用双符号位,乘数Y采用单符号位;
- 初试部分积位0,运算前,在乘数Y的补码末位添加移位附加位,初始值位0;
- 根据Yn-Yn-1的值,进行累加右移操作,右移时村巡捕码的移位规则,Yn-Yn+1:0,直接右移;-1,加[X]补后右移;1,加[-X]补后右移;
- 累加n+1次,右移n次,最后一次不右移。
定点数的除法运算
原码除法
恢复余数法
不恢复余数法(加减交替法)
补码除法
及数据都用补码表示,符号位参与运算;
初始时观察被除数与除数符号,同号做减法,异号做加法;
若余数与除数同号,则商1后余数左移一位减去除数,若余数与除数异号,则商0后余数左移一位加上除数;
重复上一步操作,直到得到n位商(n为数据位位数);
一般在末尾补上一个1。
浮点数的表示和运算
N = M x r^E
r为基数,E为阶码,M为尾数
阶码:反应浮点数的范围大小和小数点的实际位置。
尾数:反应浮点数的精度。
规格化浮点数:把尾数(非零)最高位为有效值的浮点数称之为规格化浮点数。
反码
正数和原码表示相同,负数为原码符号位不变,其余各位取反。
移码
[X]移 = 2^n+x
只能表示整数;
对0的表示唯一:10000000…;
对同一个真值,其移码和补码仅符号位不同(移码符号位1为正,0为负);
移码全0位最小值(-2n),全1位最大值(2n-1);
移码字面即反映了数值的大小,加上只能表示整数, 因此常用来表示浮点数阶码。
IEEE754标准
ALU(并行加法器/并行进位)
存储系统
存储器以及其与CPU的链接
存储器
地址线:地址线的作用就是决定了数据的存储单元的位置,也决定了你有多少个能够存放数据的存储单元个数,这点不懂没关系,后面会解释的。
数据线:数据线的作用就是决定了二进制的数据。
控制线
存储器的位扩展
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7em5C5op-1679038798103)(en-resource://database/538:1)]
存储器的字扩展
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sAToE6IF-1679038798104)(en-resource://database/536:1)]
存储器的字位扩展
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ougVwjPc-1679038798104)(en-resource://database/540:1)]
存储器的分类
RAM随机读写存储器、ROM只读存储器;;
DRAM:支持行列地址分时复用,存储基元构成一个矩阵,通过分式的传输行列地址来定位每一个存储基元;
SRAM:采用行列独立技术,存储基元构成一个数组,行列地址一次性传输。
存储器与CPU的连接
双端口RAM与多模块存储器
双端口RAM
同一个存储器有两套相互独立的读写控制电路,来提升读写速度。
无冲突读写控制
- 当两个端口地址不同时,在两个端口上进行读写操作;
- 当两个端口地址相同时,在两个端口上不同时进行读写操作;
- 当两个端口地址相同时,在两个端口上同时进行读操作。
有冲突读写控制 - 当两个端口地址相同时,在两个端口上同时进行写操作;
- 当两个端口地址相同时,在两个端口上同时一读一写。
解决办法:设置busy位为0,来避免对同一地址存储单元的同时访问。
多模块存储器
单体多字存储器
在一个存储周期内可以访问多个字,但若遇到转移指令,或者操作数不连续存放则效率提升不明显。
多体并行存储器
地址格式:高位交叉编址(高位为体号,低位为字地址)、低位交叉编址(低位为体号,高位为字地址)。
低位交叉编址多个体并行,访问速率更高。
Cache(缓存)
程序的局部性访问原理
时间局部性:现在正在使用的数据,很可能在不久的将来依旧要使用;
空间局部性:现在正在使用的数据,很可能与在不就得将来要用到的数据在空间上相邻。
主存-Cache地址映射
地址分块
主存和Cache中块的大小一样。
直接映射
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TFNlEs72-1679038798105)(en-resource://database/542:1)]
主存中一个块只能映射到Cache中固定的一个块。
全相联映射
主存中任何一个块可以映射到Cache中部分块中。
组相联映射
分为n组,每组m个块,其中组内当做是直接映射,不同组间当做全映射,是直接映射和全映射的折中。
命中率问题
CPU访问主存100次,访问Cache1000次,命中率为1000 / (1000+100) = 91%;
命中率公式:h = Nc / (Nc+Nm)
平均访问时间 = 访问主存次数 x 访问主存时间 + 访问Cache次数 x 访问Cache时间
效率 = 访问Cache时间 / 平均访问时间
Cache替换算法
直接映射
无需考虑替换算法,直接替换。
全相联和组相联
因为某一主存块可能映射到Cache中的多个块,因此存在替换算法:
先进先出算法(FIFO)
最近最少使用算法(LRO)
最不经常使用(LFU)
随机算法(RAND)
全写法
命中时:把数据写入Cache的相应块中的同时,也写入其在内存的对应块中;
未命中时:可先把数据写入主存,如果写入主存的数据不需要换入Cache,则结束操作;如果需要换入Cache,直接覆盖掉Cache中对应块即可,因为此块在主存中必有备份,不需要担心数据丢失。
写回法
命中时:先把数据写入Cache,仅当被修改的Cache块需要换出时,才协会其在主存中的对应快;
未命中时:需要从主存中找出包含此字的数据块。CPU不会再主存中直接修改,而是找到之后直接复制到Cache中进行修改,等从Cache中换出此块时,再复制到主存。
虚拟存储器
虚地址(逻辑地址)—映射—>实地址(物理地址)
页式虚拟存储器
分成相同页,用页表记录映射关系,页表中有符号位,1为已装入内存中,0为未装入内存,仍在主存中;
优点:页表硬件简单,查表速度快,主存利用率高,最多有一些页没有被数据充满;
缺点:分页无逻辑意义,不便于存储保护和多道程序共享。
段式虚拟存储器
根据程序需要大小的多个段,段表中记载了段号、存储地址、存储长度、装入符号位;
优点:短的界限分明,分段有逻辑意义,因此支持程序的模块化设计,便于存储保护和多道程序共享;
缺点:段表硬件复杂,查表速度慢,主存利用率低,会造成大量的段间主存浪费。
段页式虚拟存储器
段号 段内页号 页内地址
为了加速段页的表查询速率,为段页表提供一个类似于Cache的系统,根据程序局部性原理,将常用的表放入局部的表中,局部的表称为快表,主存中的慢表称为慢表;而查表速度接近于快表,存储容量接近于慢表(可将快表看做是慢表的Cache)。
指令系统
指令格式
四地址指令
表意直观,可以明确的之处吓一跳指令的地址,但是指令长度太大,实际应用中几乎不采用这种指令格式。
操作码字段OP 地址码字段A1 地址码字段A2 地址码字段A3 地址码字段A4;
(A1)OP(A2)——>A3;
A4为下一条指令地址;
三地址指令
指令长度依然很长,执行一次指令要四次访存,取指令一次,取操作数两次,存结果一次;操作数不会被破坏。
操作码字段OP 地址码字段A1 地址码字段A2 地址码字段A3;
(A1)OP(A2)——>A3;
下一条指令地址 (PC)+1=PC;
二地址指令
执行一次指令仍要四次访存,取指令一次,取操作数两次,存结果一次;执行完指令之后,结算结果覆盖掉了一个操作数。
操作码字段OP 地址码字段A1 地址码字段A2;
(A1)OP(A2)——>A1;
下一条指令地址 (PC)+1=PC;
一地址指令
执行一次指令只需访存两次,取指令一次,取操作数一次;备操作数和运算结果都放在累加寄存器中,所以对于被操作数的读取和存入都不需要访存。
操作码字段OP 地址码字段A1;
(Acc)OP(A1)——>A1;//Acc为累加寄存器中的内容;
下一条指令地址 (PC)+1=PC;
零地址指令
主要用在堆栈计算机中,参加援算的操作数从栈顶弹出,运算后结果压入堆栈中。
操作码字段OP;
指令操作码
OP A;
定长操作码(OP定长)
优点:计算机的硬件设计简单,指令译码和执行速度快;
缺点:当指令数量增多,指令字单独为操作码划分出固定的多位后,留给表示操作数地址的位数就会严重不足;
适用环境:适用于字长较长的计算机系统,如32位或32位以上。
变长操作码(OP变长)
优点:在比较短的指令字中,既能表示出比较多的指令条数又能尽量满足操作数地址的要求;
缺点:计算机的硬件设计复杂,指令译码和执行速度较慢;
适用环境:适用于字长较短的计算机系统,如16位或16位以下。
扩展操作码
例:
15条三地址指令:0000~1110
留下1111作为扩展窗口与后边四位组成一个8位操作码字段;
15条二地址指令:1111 0000~1111 1110
留下1111作为扩展窗口与后边四位组成一个12位操作码字段;
15条一地址指令:1111 1111 0000~1111 1111 1110
留下1111作为扩展窗口与后边四位组成一个16位操作码字段;
15条零地址指令:1111 1111 1111 0000~1111 1111 1111 1111
留下1111作为扩展窗口与后边四位组成一个8位操作码字段;
注意操作码编码的时候,短码不能是长码的前缀;扩展窗口可以留多个。
寻址方式
指令寻址
指令寻址有顺序寻址和跳跃寻址两种方式。
顺序寻址可通过程序计数器PC加1,自动形成下一条指令的地址;跳跃寻址则通过转移类指令实现。
数据寻址
立即寻址
特点是操作数本身设在指令字内,即形式地址A不是操作数的地址,而是操作数本身,又称之为立即数。数据是采用补码形式存放的。优点在于只要取出指令,便可立即获得操作数,在执行阶段不必再访问存储器。缺点是A的位数限制了这类指令所能表述的立即数的范围。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hag6cIfR-1679038798105)(en-resource://database/544:1)]
隐含寻址
是指指令字中不明显地给出操作数的地址,其操作数的地址隐含在操作码或某个寄存器中。例如,一地址格式的加法指令只给出一个操作数的地址,另一个操作数隐含在累加器ACC中,这样累加器ACC成了另一个数的地址。由于隐含寻址在指令字中少了一个地址,因此,这种寻址方式的指令有利于缩短指令字长。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HDJUEe76-1679038798105)(en-resource://database/546:1)]
间接寻址
倘若指令字中的形式地址不直接指出操作数的地址,而是指出操作数有效地址所在的存储单元地址,也就是说,有效地址是由形式地址间接提供的,即为间接寻址,即EA=(A)。优点是与直接寻址相比,扩大了操作数的寻址范围,并且便于编程,缺点在于指令的执行阶段需要访存多次,致使指令执行时间延长。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QSMrZ97H-1679038798106)(en-resource://database/548:1)]
寄存器寻址
在寄存器寻址的指令字中,地址码字段直接指出了寄存器的编号,即EA=R。其操作数在由R所指的寄存器中。由于操作数不在主存中,故寄存器寻址在指令执行阶段无须访存,减少了执行时间。由于地址字段只需指明寄存器编号(计算机中寄存器数有限),故指令字较短,节省了存储空间,因此寄存器寻址在计算机中得到广泛应用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lK2dnV9r-1679038798106)(en-resource://database/550:1)]
寄存器间接寻址
寄存器中的内容不是操作数,而是操作数所在主存单元的地址号,即有效地址EA=®。与寄存器寻址相比,指令的执行阶段还需访问主存。与间接寻址相比,因有效地址不是存放在存储单元中,而是存放在寄存器中,故称其为寄存器间接寻址,比间接寻址少访存一次。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8KPr0lWO-1679038798106)(en-resource://database/552:1)]
基址寻址
可扩大寻址范围(基址寄存器的位数大于形式地址A的位数);
用户不必考虑自己的程序存于驻村的那一空间区域,故有利于多道程序设计;
说明:基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。在程序执行过程中,基址寄存器的内容不变(作为基址地址),形式地址可变(作为偏移量)。当采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但其内容仍由操作系统确定。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-La7CV6XS-1679038798107)(en-resource://database/554:1)]
变址寻址
变址寻址的优点是可扩大寻址范围(变址寄存器的位数大于形式地址A的位数);
在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任意数据的地址,特别适合编制循环程序。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zBOs7ZNs-1679038798107)(en-resource://database/556:1)]
相对寻址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YtaENFsg-1679038798107)(en-resource://database/558:1)]
堆栈寻址
CISC&RISC
CISC | RISC | |
---|---|---|
指令系统设计 | 复杂 | 精简 |
指令数目 | 一般大于200条 | 一般小于100条 |
指令字长 | 长度不固定 | 长度固定 |
可访存指令 | 无限制,多种指令都可以访存 | 只有LOAD和STORE访存 |
不同指令执行时间 | 执行时间相差很大 | 一般在一个机器周期内完成 |
不同指令使用频率 | 使用频率相差很大 | 每条指令使用频率接近且较高 |
通用寄存器数量 | 少 | 多 |
目标代码 | 难以优化编译成效率高的代码 | 同一优化编译成效率高的代码 |
控制方式 | 多数为微程序控制 | 多数为组合逻辑控制 |
指令流水线 | 有但无强制要求 | 强制必须有 |
时钟周期:一个时钟脉冲所需要的时间。在计算机组成原理中又叫T周期或节拍脉冲。是CPU和其他单片机的基本时间单位。
机器周期:通常用从内存中读取一个指令字的最短时间来规定CPU周期(机器周期),也即CPU完成一个基本操作所需的时间。
CPU
CPU功能和结构
指令控制
控制指令的执行,即完成取指令,分析指令,执行指令的操作;
操作控制
控制根据指令生成操作信号,并将其送入相应的部件,进而操作这些部件进行相应的动作;
时间控制
对各种操作加以时间上的控制;
数据加工
对数据进行算术逻辑运算;
中断处理
对计算机运行过程中的异常情况和特殊请求的梳理。
CU和ALU的功能
CU功能
取出指令,并指出下一条指令在主存中的位置;
对指令移码,产生相应的操作信号进而控制部件进行相应的动作;
指挥并控制CPU,主存和输入输出设备之间的数据流向。
ALU的功能
执行算数和逻辑运算,并执行逻辑测试。
CPU的结构组成
CPU:ALU单元、寄存器单元、中断系统单元、CU单元。
CPU的寄存器
通用寄存器:数量多、功能多、可以由程序编址;例:ACC。
专用寄存器:程序计数器(PC)、指令寄存器(IR)、 存储器数据寄存器(MDR)、存储器地址寄存器(MAR)、状态标志寄存器(PSWR)
存放指令的寄存器是指令寄存器(IR),存放程序状态字的寄存器是状态字寄存器(PSWR),这些寄存器都不属于通用寄存器。其次,通用寄存器并不一定本身具有计数和移位功能。
通常CPU中设置有多个通用寄存器,通用寄存器可以有程序编制访问。通用寄存器可用来存放原始数据和运算结果,有的还可以作为变址寄存器、计数器、地址指针等。另外,通用寄存器的内容一般都是可以被程序员改变的,并且改变之后并不影响机器的正常运行,所以像指令寄存器、数据寄存器、状态字寄存器都不属于通用寄存器。
指令执行过程
指令周期
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TZR167OJ-1679038798108)(en-resource://database/560:1)]
不同指令周期操作不同,数据流种类多样,因此没有统一的数据流表示法。
取指周期的数据流
- 当前指令地址送至存储器地址寄存器,记作:(PC)->MAR;
- 向主存发送读命令,启动主存做读操作:1->R;
- 将MAR所指主存单元中的内容经过数据总线送入MDR,记作:M(MAR)->MDR;
- 将MDR中的指令送入IP,记作:(MDR)->R;
- 形成下一条指令地址(由CU发出信号控制),记作:(PC)+1->PC;
间指周期的数据流
- 将指令的地址码送入MAR,记作:As(IR)->MAR;
- 向主存发送读命令,启动主存做读操作:1->R;
- 将MAR所指主存单元中的内容经过数据总线送入MDR,记作:M(MAR)->MDR;
- 将有效地址送至指令的地址码字段:MDR->Ad(IR);
中断周期的数据流
- 将特定地址a送至MAR,主存发送读命令,记作:a->MAR;
- 向主存发送写命令,启动主存做读操作,记作:1->W;
- 将断点(PC内容)送入MDR,记作:PC->MDR;
- 将MDR的内容通过数据总线写入MAR所指示的存储单元内,记作:MDR->M(MAR);
- 将向量地址形成部件的输出送至PC,为下一条指令的取值周期做准备,记作:向量地址_>PC;
说明:如果程序断点存入吨转,且金蝉操作是先修改栈指针后存入数据,则需要将(1)改为(SP)-1->SP,且SP->MAR
控制器与数据通路
控制器的输入输出
输入
时钟
完成每个操作都需要占用一定的时间;
各个操作之间又先后次序之分;
因此控制单元需要在时钟的控制下按照一定的顺序发出控制信号。
指令寄存器(IR)
指令寄存器的操作码字段决定了指令的操作类型,因此是控制单元的输入信号。
标志
控制单元有时候需要根据CPU当前的扎UN国泰来产生相应的控制信号,因此标志也是输入信号。
来自总线的控制信号
如中断请求等。
输出
CPU内的控制信号
CPU内的数据传输,或控制ALU执行不同的运算等。
送至系统总线的信号
如控制主存读/写,I/O操作,中断相应等。
控制信号与数据通路
CPU内部采用总线方式的控制信号与数据通路
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dWKUE6Nx-1679038798108)(en-resource://database/562:1)]
CPU内部不采用总线方式的控制信号与数据通路
微程序控制
- 形成LDA的微程序首地址:当LDA指令存入IR后,其操作码直接送到位地址形成部件,该不见得输出即为取数指令微程序首地址P,且将P送至CMAR,即OP(IR)->伪地址形成部件->CMAR;
- 取伪指令:将P地址所谓硬控制单元中的微指令督导CMDR中,即CM(CMAR->CMDR;
- 产生微操作命令:由微指令操作控制字段中为1的各位发送控制信号,如Ad(IR)->MAR,1->R;命令主存读操作数;
- 形成下一条微指令地址:将此伪指令的下地址字段支出的P+1送至CMAR,即Ad(CMAR)->CMAR;
- 取伪指令,即CM(CMAR)->CMAR;
- 产生微操作命令;
- 以此类推,直到取出数指令微程序的最后一条伪指令(地址为P+2那条),并发出操作命令。
微指令的编码方式
直接编码方式
字段直接编码方式
字段间接编码方式
混合编码方式
注意:无论哪种编码方法,都要留出一种状态表示不发控制信号(微命令)。
微指令序列地址形成
- 根据机器指令的操作码形成;
- 通过有硬件直接产生微程序入口地址
- 直接由微指令的下地址字段给出
- 增量计数法(多数情况下后续指令的地址是连续的,因此可采用增量计数法,即(CMAR)+1->CMAR);
- 分支转一发(根据各种标志决定微指令分支转移的地址);
- 通过网格测试形成。
微指令序格式
水平型微指令
直接棉麻、字段直接编码、字段间接编码和混合编码都属于水平型微指令,特点是一次能一并执行多个并行操作的微指令。
垂直型微指令
操作码类似于机器指令,通常一条微指令有一两个微命令控制一两种操作,不强调并行功能。
混合型微指令
两种微指令格式的比较:
水平微指令比垂直微指令并行操作能力强、效率高、灵活性强;
水平微指令执行一条极其指令所需要的微指令数目少,因此速度比垂直微指令速度快;
水平微指令用较短的微程序结构换取较长的微指令结构,垂直型微指令用较长的微程序结构换取较短的微指令结构;
水平微指令与机器指令查表较大,垂直型微指令与机器指令类似。
指令流水线
流水线方式的特点
- 把一个任务(一条指令或者操作)分解成几个不同的子任务,每个子任务有专门的部件来完成,靠多个部件可并行工作来缩短指令执行时间;
- 每个部件后都有一个缓冲寄存器,叫锁存器,其作用是保存本流水段的结果,供给下一流水段用;
- 流水线中各子任务的完成耗时基本相同,否则将引起堵塞和断流;
- 只有连续不断的执行同一或者类似任务时,流水线才能较好的效率;
- 流水线有装入时间和排空时间,装入时间是第一个任务进入流水线到输出流水线的时间;排空时间是最后一个任务进入流水线到输出流实现的时间。
影响流水线的因素
结构相关
多条指令在同一时刻征用同一功能部件而形成的冲突称之为结构相关。
数据相关
多条指令因重叠操作,可能改变对操作数的读写访问顺序,从而导致了数据相关冲突。
控制相关
主要有转移指令引起。
超标量流水线
总线
总线概述
总显示一组能实现多个部件间信息传输的线路,
具有分时性和共享性。
功能分类
片内总线
片内总线是指芯片内部的总线,如CPU芯片内部的起存器与寄存器之间、寄存器与ALU之间等,都由片内总线链接。
系统总线
系统总线是计算机系统内各功能部件间(CPU、主存、I/O接口)之间互相连接的总线。分为三种:
数据总线(传输各部件的数据信息,位数与机器字长和存储字长有关;数据总线位数与存储字长相同,机器字长是数据总线位数的整数倍;数据总线是双向的);
地址总线(地址总线用来指出数据总线上源数据或目的数据所在的主存单元或I/O端口的地址;地址总线位数与贮存地址空间大小有关;地址总线是单向的);
控制总线(控制总线传输控制信息;局部单向整体双向)。
通信总线
用于计算机系统之间或计算机系统和其他系统之间的总线,又叫外部总线。
按时序控制方式分配
可以划分为同步和异步总线
总线上的数据传输与时钟同步的称为同步总线,否则称为异步总线。
按数据传输格式分类
串行总线,数据是一位一位地在总线上传输的;
并行总线,数据是多位在总线上同时传输的。
系统总线的结构
单总线结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ykriovJ2-1679038798108)(en-resource://database/564:1)]
优点:结构简单,成本低,设备接入方便;
缺点:多个设备征用唯一总线,造成数据传输带宽低,且不支持并发。
双总线结构优缺点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bGWbXFsB-1679038798108)(en-resource://database/566:1)]
优点:将低速设备和高速设备挂在不同的总线上,高速设备挂在存储器总线上,低速设备挂在I/O总线上,然后再通过通道(专门用于输入输出操作的简单处理器)与主存总线连接,以使得低速对高速设备的数据传输影响缩小;
缺点:通道访问主存需要经过主存总线,对高速设备还是有一定的影响,通道的引入使得硬件设计更为复杂。
三总线结构优缺点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L6ONOqhp-1679038798109)(en-resource://database/568:1)]
优点:DMA总线的引入使得部分高速I/O设备可以直接访问主存,使得传输速率进一步提高;
缺点:DMA控制器的引入使得硬件设计更为复杂。
系统总线性能指标
总线周期:一次总线操作所需要的时间;
时钟周期:就是机器时钟周期;
工作频率:总线周期的倒数;
时钟频率:时钟周期的倒数;
总线宽度:总线上能够同时传输的数据位数;
总线带宽:单位时间内总线上可以传输的数据位数;
总线复用:一条信号线上分时传输两种信号;
信号线数:地址总线、数据总线和控制总线的总和。
总线仲裁
集中仲裁方式
控制逻辑集中于CPU一处。
链式查询方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OtTzkatu-1679038798109)(en-resource://database/570:1)]
- 主设备通过BR总线请求线向总线控制设备发出控制总线的请求。
- 总线控制设备通过BG线,从距离总线控制设备最近的那个主设备出发,判断是哪个主设备发出了总线控制请求,最后将总线的使用控制权交给给主设备。
- 主设备获取到总线控制权后,会通过BS线告知我已经获取了总线的控制权并仍在使用。
- 主设备对总线的使用完毕后,会通过BS线发出使用完毕的信号,同时释放总线的控制权,再由总线控制设备赋予其他发出总线控制请求的设备控制权。
链式查询的特点:从图中可以看出,总线控制设备会从设备1依次向后遍历,来确认该设备是否发出了总线控制请求。所以距离总线控制设备越近的设备优先级就会越高。
链式查询方式的优点:只需要很少的几根线就能按照一定的优先级次序实现总线控制,结构简单。
同样的缺点也很明显:对硬件故障反应很敏感,如果某个时刻BG线发生故障,会导致故障点以后的主设备无法在获得总线的控制权。还有,如果优先级较高的设备频繁的使用总线的时候,此时优先级较低的设备就长时间无法使用总线。
计数器定时查询方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mTQMFale-1679038798109)(en-resource://database/572:1)]
如图:计数器定时查询方式省去了BG线,增加了一组设备地址线,要注意,这里的设备地址线是一组,不是一根。具体数目的多少要根据有多少个设备来决定。
具体的工作流程与链式查询类似,这里不再赘述。值得注意的是:在总线控制设备内部,有一个计数器的一个装置。是用来计数操作的,总线控制设备每访问一个设备,计数器的数值都会加1。
这样做的好处就是避免了链式查询方式的缺点:计数器的初始可以改变优先级的顺序。如果每次计数都重新从0开始计数,则优先级是固定的,距离总线控制设备越近,优先级就越高;如果每次计数从上次计数的终点开始,那么每个主设备都只能获得一次的总线控制权,优先级相同。同时,由于设备地址线是一组线,对硬件故障反应就没有那么敏感。
独立请求方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BHRjusNB-1679038798109)(en-resource://database/574:1)]
从图中可以看出,每一个设备都有一套自己的设备线。在总线控制设备内部,存在一个排队器,当多个设备请求控制总线时,会由排队器决定他们的优先级顺序。
从独立请求方式的结构图可以看出,设备可以与总线控制设备直接交互,所以响应速度是很快的,同时对优先级的控制也相对更加灵活。
但是相对的需要的控制线众多,总线的控制逻辑也相对复杂
分布仲裁方式
控制逻辑分散在总线连接的各个设备或部件上。
分布式仲裁不需要中央仲裁器,每个潜在的主方功能模块都有自己的仲裁号和仲裁器。当它们有总线请求时,把它们唯一的仲裁号发送到共享的仲裁总线上,每个仲裁器将仲裁总线上得到的号与自己的号进行比较。如果仲裁总线上的号大,则它的总线请求不予响应,并撤消它的仲裁号。最后,获胜者的仲裁号保留在仲裁总线上。显然,分布式仲裁是以优先级仲裁策略为基础,不做详细介绍。
总线操作和定时
总线在双方交换数据的过程中需要时间上的配合,这种关系称为总线定时,实质是一种协议或规则,有同步与异步两种。
总线传输的四个阶段
申请分配
主模块(主设备)提出申请,经过总线仲裁机构决定下一个传输周期总线给谁用。
寻址
取得了使用权的主模块(主设备)通过总线发送本次要访问的从模块(从设备)地址及有关命令,启动参与本次传输的从模块。
传输
主从模块开始数据交换。
结束
主模块相关信息撤出系统总线,让出使用权。
以上四个决断称之为总线周期
同步定时方式
系统采用统一的时钟信号来协调发送接收双方的传送定时关系。
优点:规定明确,同一性强,模块间的配合简单一致;
缺点:从模块时间配合属于强制同步,必须在限定时间内完成规定的要求,这就造成必须按照速度最慢的部件来设计公共时钟,效率低、设计灵活性差。
异步定时方式
没有统一的时钟,没有固定的时间间隔。完全靠双方相互制约的“握手”信号实现定时控制。
开始传输之前主设备会向从设备发出请求,并且会一直等从设备发来响应信号后才开始数据传输。
根据请求和回答信号的撤销是否互锁,一不定式方式可以分为三种类型:
不互锁方式
主设备发出“请求”信号后,不必等到接到从设备的“回答”信号,而是经过一段时间便撤销请求“请求”信号。而从设备在接到“请求”信号后,发出“回答”信号,并经过一段时间,自动撤销“回答”信号,双方不存在互锁关系。
半互锁方式
主设备发出“请求”信号后,必须等待接到从设备的“回答”信号后,才撤销“请求”信号,有互锁的关系。而从设备在接到“请求信号后,发出“回答”信号,但不必等待获知主设备的“请求”信号已经撤销,而是隔一段时间后自动撤销“回答”信号,不存在互锁关系。
全互锁方式
主设备发出“请求”信号后,必须待从设备“回答”后,才赊销“请求”信号;从设备发出“回答”信号,必须待获知主设备“请求”信号已撤销后,在撤销其“回答”信号。双方存在互锁关系。
比特率与波特率
波特率
指的是信号在被调制以后在单位时间内的变化,即通信通道中信号改变状态或发生变化的次数,单位为Bd。
比特率
指的是每秒传送的比特数,单位为bps。
总线标准
I/O系统
外部设备
输入设备
键盘、鼠标、触屏、麦克风、扫描仪等。
输出设备
显示器、打印机等。
外存储器
硬磁盘存储器:碟片、磁盘驱动器(包括主轴、定位驱动和数据控制器三部分)
I/O接口
I/O接口是注解和外设之间的交界面。
I/O接口的功能
实现主机和外设的通讯控制;
地址移码和设备选择;
实现数据缓冲;
信号格式转换;
传送控制命令和状态信息;
I/O接口的类型
按照数据传输方式分为并行和串行接口;
按照主机访问I/O设备的控制方式可分为程序查询节课、终端接口和DMA接口;
按功能的灵活性可分为可编程接口和不可编程接口。
I/O端口编址
接口和端口是不同的概念,端口是接口电路中的寄存器。
I/O端口要能够被CPu访问,要有端口地址,一个端口对应一个端口地址,端口编织方式有与存储器统一编址和独立编址两种:
- 统一编址(存储器映射方式),是吧I/O端口当做存储器单元进行地址分配;
优点:不需要专门的输入/输出指令,CPU访问I/O端口的操作灵活、方便,端口编址空间大;
缺点:端口占用一部分存储器地址,使可访问的存储器的最大容量变小,CPU访问I/O端口的速度较慢。 - 独立编址(I/O映射方式),I/O端口地址与存储器地址无关,CPU靠专门的指令来访问端口。
优点:I/O端口地址不占用存储器地址;因为有独立的指令使CPu可以直接访问端口,所以访问速度快;
缺点:输入输出这两首啊,一般只能对端口进行传输操作;且CPu控制主存读写和I/O端口读写需要两组不同的控制信息,控制复杂。
I/O方式
程序查询方式
查询状态标记、是否准备就绪(若未就绪,重新查询状态标记)、交换数据
程序查询方式的特点是每时每刻不断查询I/O设备是否准备就绪
首先要保存寄存器内容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uQLrefM1-1679038798110)(en-resource://database/576:1)]
程序中断方式
计算机在程序直径过程中,当出现异常或者特殊情况时,计算机停止现行程序的执行转向对这些异常情况或特殊情况的处理,处理结束后再返回现行程序的间断处,继续执行原程序,这就是中断。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q440iJlw-1679038798110)(en-resource://database/578:1)]
中断请求
中断其你去是指中断源向CPU发送中断请求信号。
内中断:来自CPU和内存的中断,如除数为0等程序运算产生的错误或者内存不足,空间分配失败产生的中断;
外中断:来自CPu和内存以外的部件产生的中断,如I/O设备的中段。
硬中断:通过外部硬件产生的中断。硬中断属于外中断;
软中断:通过指令产生的中断,可编程实现,软中断属于内中断。
非屏蔽中断和可屏蔽中断,都属于外中断。
中断判优
中断系统在某一时刻智能响应一个中断源的请求,但不同中断源发出请求是随机的,因此可能某一时刻会同时产生多个中断请求,这时候要按照某种规则来选择一个中断请求进行响应。
一般硬件故障中断属于最高级中断,其次是软件中断,非屏蔽中断高于可屏蔽中断,DMA请求高于I/O设备,高速设备高于低速设备,输入设备高于输出设备,实时设备高于普通设备。
中断响应和中断处理
响应条件:必须满足CPU中的允许中断触发器EINT为“1”;该触发器可以用中断指令打开,可以用中断指令或者由硬件自动关闭;
响应时间:CPU响应中断的时间是在每条指令执行阶段的结束时刻。
中断处理:
- 保护现场:关中断、保存断点、中断服务程序寻址、保存现场、开中断;
- 中断服务:执行中断服务程序;
- 恢复现场:关中断、恢复现场、开中断;
- 中断返回:中断返回。
多重中断和中断屏蔽技术
CPU具备多重中断功能的条件:
- 在中断服务程序中提前设置开中断指令;
- 优先级别搞得终端有权中断优先级别低的中断。
屏蔽字:每个中断源都有一个屏蔽触发器,1表示屏蔽该中单元的中断请求,0表示接受该中断源的中断请求;所有屏蔽触发器组合在一起构成一个屏蔽字寄存器,屏蔽字寄存器的内容称之为屏蔽字。
DMA方式
主存和DMA接口之间有一条专用的数据通路,因此主存和设备交换信息时,不需要通过CPU,也不需需要暂停CPU现行程序去为设备服务,使得I/O与主机并行工作,程序和数据传输并行工作,省去了保护现场和恢复现场的步骤,因此速度较快。
DMA与主存交换信息的方法
CPU停止访问主存法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tEsaMLSb-1679038798110)(en-resource://database/580:1)]
DMA请求信号迫使CPU让出总线控制权,停止访问主存,每次DMA获得总线控制权后连续占用若干个存取周期进行数据传输,直到批量传输结束后才把总线控制权还给CPU。在DMA期间,CPU完全停止访问主存,仅能进行一些与总线无关的内部操作。这种方式适用于高速外设。
DMA与CPU交替访存(存储器分时法)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YtAsGTki-1679038798110)(en-resource://database/582:1)]
把原来的CPU工作周期分成两个时间片T1和T2分别给CPU和DMA,是CPU和DMA交替方寸,适用于CPU工作周期大于主存存取周期的情况。这种方法不存在总线的申请和归还,总线使用权通过T1和T2的分时控制,有较高的DMA传输效率。
周期挪用法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2AacaMvL-1679038798111)(en-resource://database/584:1)]
这种方法中,没定I/O设备发出DMA请求的时候,DMA若用总线一个存取周期,而DMA不请求时,CPU仍继续访存。
在这种情况下,I/O设备请求DMA传输会遇到三种情况:
- CPU在运算,没有访存,此时无冲突,DMA直接获取总线控制权;
- CPU在访存,DMA必须等存取周期结束后才能获取总线控制权;
- I/O设备要求数据传输的同时CPU也要求访存,此时I/O优先于CPU访存,I/O需要挪用有两个存取周期,也就是CPU在执行访存的指令过程中插入了DMA请求,把那个挪用一两个存取周期,使得CPU延缓了一两个存储周期才访存。
DMA控制器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gCz6Mc5g-1679038798111)(en-resource://database/586:1)]
AR(主存地址寄存器)、WC(字计数器)、BR(数据缓冲寄存器)、DMA控制逻辑、中断模块、设备地址寄存器。
DMA传输过程
预处理
- 给DMA控制逻辑指明数据传输方向是输入还是输出;
- 向DMA设备地址寄存器送入设备号,并启动设备;
- 向DMA贮存地址寄存器送入交换数据的主存起始地址;
- 对字计数器赋予交换数据的个数;
上述操作由CPU执行几条输入输出指令来完成,这些工作完成后CPU继续执行原来的程序;
数据传输
DMA输入过程
- 当设备准备好数据时,发出选通信号,将该字督导DMA的数据缓冲寄存器中,表示数据缓冲寄存器“满”;
- 与此同时设备向DMA接口发出请求(DREQ);
- DMA接口想CPU申请总线控制权(HRQ);
- CPU防水HLDA信号,表示允许将总线控制权交给DMA接口;
- 将DMA主存地址寄存器中的贮存地址送地址总线,并命令存在初期写;
- 通知设备已被授予DMA周期(DACK),并未交换下一个字做准备;
- 将DMA数据寄存器中的内容松鼠巨宗心啊;
- 主存将数据总线上的信息写至地址总线制定的存储单元中;
- 修改贮存地址和字计数器值;
- 判断数据块是否传送结束,若未结束,则继续传送;若已结束,则向CPU申请程序中断,标志数据块传输结束。
DMA输出过程
- 当DMA数据缓冲器已将输出数据送至I/O设备后,表示数据缓冲寄存器已“空”;
- 设备向MDA接口发送请求(DREQ);
- DMA接口向CPU申请总线控制权(HRQ);
- CPU发挥HLDA信号,表示允许将总线交给DMA接口使用;
- 将DMA主存地址寄存器中的主存地址送地址总线,并命令存储器读;
- 通知设备已被授予一个DMA周期(DACK),并为交换下一个字做准备;
- 主存将相应地址单元的内容通过数据总线读入到DMA的数据缓冲寄存器;
- 将DMA的数据缓冲寄存器的内容送到输出设备,若为字符设备,则将其拆成字符输出;
- 修改贮存地址和字计数器值;
- 判断数据块是否传送结束,若未结束了,则继续传送,若已结束,则向CPU申请程序中断,标志数据块传输结束。
后处理
当DMA的中断请求得到响应之后,CPU停止原程序的执行,转去执行中断服务成行,做一些DMA的结束工作,包括校验送入驻村的数据是否正确、测试传输过程中是否出错和决定是否继续用DMA传输其他数据块。
DMA方式特点
- DMA使CPU与主存之间不存在固定联系,主存既可以别CPU访问,又可以被外设访问;
- 在数据传输的时候,主存地址确定、传输数据的技术都有硬件电路直接实现;
- 主存中要开辟专用缓存区,以便随时供给和接收外设的数据;
- DMA使得CPU和外设并行,提高系统效率;
- DMA在开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。
DMA和中断的区别
- 中断方式是程序的切换,需要保护和恢复现场;而DMA方式除了预处理和后处理,其他时候不占用CPU资源;
- 中断请求的响应只能发生在每条指令的执行周期之后;而对DMA的响应可以再取值周期、间址周期、执行周期之后均可以,只要CPU不占用总线就可以被响应;
- 中断传输过程需要CPU的干预,而DMA的传输过程不需要;
- DMA请求的优先级高于中断请求的优先级;
- 中断功能多,比如可以处理异常,而DMA仅仅是为了I/O数据传输设计的;
- 从数据传输来看,中断靠程序传输,DMA靠硬件传输。
计算机组成原理 学习笔记相关推荐
- 评价微型计算机总线的性能指标,计算机组成原理学习笔记(3):总线
文章目录 课程笔记导览 附录:英语解释 第三章 总线 3.1 总线的基本概念 使用总线的原因: 总线的定义 总线上信息的传送 总线结构举例 单总线结构 面向CPU的双总线结构 以存储器为中心的双总线结 ...
- 计算机组成原理学习笔记一
计算机组成原理学习笔记一 计算机发展历程 一.计算机硬件发展 (1)计算机的四代变化 (2)计算机元件更新换代 二.计算机软件发展 三.计算机的分类 计算机系统层次结构 一.计算机系统的组成 二.计算 ...
- 计算机组成原理学习笔记(上)
计算机系统概论 计算机发展历程 原始计算工具 中国人的智慧之光 机械式计算机 西方人的智慧 机电式计算机 电子计算机 1,最古老的计算工具:算筹 2,冈特计算尺 3,达芬奇机械式计算机 4,1642年 ...
- 计算机组成原理学习笔记第1章 1.3——实验一 计算机性能测试
计算机组成原理学习笔记第1章 1.3--实验一 计算机性能测试 本篇笔记整理:Code_流苏(CSDN) 目录 计算机组成原理学习笔记第1章 1.3--实验一 计算机性能测试 0️⃣思维导图(自制) ...
- 计算机组成原理学习笔记第5章指令系统 5.6——MIPS指令详解
有诗云:苔花如米小,也学牡丹开.--袁枚 本篇笔记整理:Code_流苏(CSDN) Last(在此处点击使用,直达文末) First (在文末点击使用,返回文章首部) 目录 0.思维导图 1.R型指令 ...
- 计算机组成原理学习笔记第6章中央处理器CPU 6.2——数据通路DataPath
有诗云:苔花如米小,也学牡丹开.--袁枚 本篇笔记整理:Code_流苏(CSDN) Last(在此处点击使用,直达文末) First (在文末点击使用,返回文章首部) 目录 0.思维导图 1.数据通路 ...
- 计算机组成原理学习笔记第5章指令系统 5.3——操作数寻址方式
有诗云:苔花如米小,也学牡丹开.--袁枚 本篇笔记整理:Code_流苏(CSDN) Last(在此处点击使用,直达文末) First (在文末点击使用,返回文章首部) 目录 0.思维导图 1.立即数寻 ...
- 计算机组成原理学习笔记第4章 4.2——主存中的数据组织
有诗云:苔花如米小,也学牡丹开.--袁枚 本篇笔记整理:Code_流苏(CSDN) 目录 0.思维导图 1.存储字长 2.数据存储与边界的关系 ①按边界对齐的数据存储 ②未按边界对齐的数据存储 ③边界 ...
- 计算机组成原理学习笔记第4章 4.9——Cache地址映射与变换方法
有诗云:苔花如米小,也学牡丹开.--袁枚 本篇笔记整理:Code_流苏(CSDN) 目录 0. 思维导图 1. 主存与Cache地址映射概述 2. 全相联映射的工作原理 3. 直接映射的工作原理 4. ...
- 计算机组成原理学习笔记第4章 4.10——替换算法
有诗云:苔花如米小,也学牡丹开.--袁枚 本篇笔记整理:Code_流苏(CSDN) Last(在此处点击使用,直达文末) Frist (在文末点击使用,返回文章首部) 目录 0. 思维导图 1. 需要 ...
最新文章
- Cocos 发射和监听事件 事件派送(TypeScript)
- mysql和hbase优缺点_hbase优缺点
- Xamarin XAML语言教程Xamarin.Forms中程序状态与进度(一)
- 3.8 注意力模型-深度学习第五课《序列模型》-Stanford吴恩达教授
- jprofiler分析dump文件_内存溢出+CPU占用过高:问题排查+解决方案+复盘(超详细分析教程)...
- 编译驱动时出现Cannot open file trace.h错误
- java 一元一次方程求解_七年级一元一次方程概念和解法,掌握这些就够了!
- 基于visual Studio2013解决面试题之0807strstr函数
- CNG 关于 Key 相关的操作
- Elasticsearch启动报错:Exception in thread “main“ java.nio.file.AccessDeniedException:
- 专科学院计算机专业全国排名,2019年专科专业排行_2019世界大学排名 计算机专业...
- jQuery:ajax调用成功后返回数据
- jQuery hasAttr检查元素是否有属性[重复]
- C++程序设计基础(5)sizeof的使用
- 转:: 刺鸟:用python来开发webgame服务端(3)
- 【哈佛幸福课笔记】【1】
- CCF-相反数(C语言)
- 团体项目搜查令更新一
- mybatis配置类设置驼峰命名不起作用
- Linux minerd木马清除(续)
热门文章
- 《我是一只IT小小鸟》连载三
- css zIndex小知识
- sql注入获取mysql版本信息_这可能是最全的SQL注入总结,很有用
- 写写我那天参加过的《文明之光》书友会
- 050@ 高通845平台抓取3a log
- [计算机网络] 子网划分(详解)一个自治系统有5个局域网,其连接图如图所示。LAN2至LAN5上的主机数分别为91,150,3和15。该自治系统分配到的IP地址块为30.138.118/23。试...
- 我的三六零手机微软官网首页:3MDSHUZIHULIAN.MYSSSSSL.COM.CN.HTMLK微软官网首页:360DATA.D猪手PIGEDpassport.COM.CN.HTMLK
- 嘉立创pcb板设计标准规范.doc
- Log4j日志处理-----长文
- 【每日随笔】2023年02月14日随笔 ( 随便写点 | 技术无关、没事别点进来看、好好学技术 | 如何攒钱 | 插管与拔管 | 返贫途径 | 守财 | 财富增长 | 推荐书籍 )