计算机组成原理——中央处理器
文章目录
- **一 CPU的功能和基本结构**
- **1 CPU的功能**
- **2 [基本结构](http://t.csdn.cn/bpCt3)**
- **2.1 运算器**
- **2.2 控制器**
- **二 指令执行过程**
- **1 指令周期**
- **2 指令周期的数据流**
- **2.1 取指周期**
- **2.2 间址周期**
- **2.3 执行周期**
- **2.4 中断周期**
- **3 指令的执行方案**
- **3.1 单指令周期**
- **3.2 多指令周期**
- **3.3 流水线方案**
- **三 数据通路的功能和基本结构**
- **1 数据通路的功能**
- **2 数据通路的基本结构**
- **四 控制器的功能和原理**
- **1 控制器的结构和功能**
- **2 硬布线控制器**
- **2.1 硬布线控制单元图**
- **2.2 硬布线控制器的时序系统及微操作**
- **2.3 CPU的控制方式**
- ==**2.4 硬布线控制单元的设计步骤**==
- **3 微程序控制器(静态)**
- **3.1 微程序控制的基本概念**
- **3.2 微程序控制器的组成和工作过程**
- **3.3 微指令的编码方式**
- **3.4 微指令的地址形成方式**
- **3.5 微指令的格式**
- **3.6 微程序控制单元的设计步骤**
- **3.7 动态微程序设计和毫微程序设计**
- **3.8 硬布线控制器和微程序控制器的区别**
- **五 异常和中断机制**
- **1 异常和中断的基本概念**
- **2 异常和中断的分类**
- **2.1 异常的分类**
- **2.2 中断的分类**
- **3 异常和中断响应过程**
- **六 指令流水线**
- **1 指令流水线的基本概念**
- **1.1 指令流水的定义**
- **1.2 流水线的表示方法**
- **2 流水线的基本实现**
- **3 流水线的冒险与处理**
- **==3.1 结构冒险(资源冲突)==**
- ==**3.2 数据冒险(数据冲突)**==
- ==**3.3 控制冒险(控制冲突)**==
- **4 流水线的性能指标**
- **4.1 流水线的吞吐率**
- **4.2 流水线的加速比**
- **5 高级流水线技术**
- **5.1 超标量流水线技术**
- **5.2 超长指令字技术**
- **5.3 超流水线技术**
一 CPU的功能和基本结构
1 CPU的功能
CPU=计算器+控制器
控制器:协调并控制计算机各部件执行程序的指令序列,包括取指令,分析指令,执行指令
计算器:对数据加工
(1)指令控制
(2)操作控制
(3)时间控制
(4)数据加工
(5)中断处理
2 基本结构
2.1 运算器
(1)算术逻辑单元ALU
(2)暂存寄存器
(3)累加寄存器ACC
(4)通用寄存器组
(5)程序状态字寄存器
(6)移位器
(7)计数器:控制乘除运算的操作步骤
2.2 控制器
系统的指挥中枢,基本功能是执行指令,每条指令的执行由控制器发出一组微操作实现
控制器有硬布线控制器和微程序控制器
组成:
(1)程序计数器PC:取指令
(2)指令寄存器IR:保存当前执行指令
(3)指令译码器:对操作码字段译码
(4)存储器地址寄存器MAR
(5)存储器数据寄存器MDR
(6)时序系统:产生时序信号,由统一时钟CLOCK分频得到
(7)微操作信号发生器:根据IR,PSW,时序信号产生控制整个计算机的控制信号,有组合逻辑型和存储逻辑型
控制器—>指令操作码,指令的执行步骤,条件信号—>当前计算机各部件要用到的控制信号—>各部件协同运行
用户可见的寄存器:通用寄存器组,程序状态字寄存器PSW
用户不可见的寄存器:MAR,MDR,IR
二 指令执行过程
1 指令周期
CPU取出一条指令并执行的时间周期,因不同指令而异
指令周期 ⩾ \geqslant ⩾机器周期 ⩾ \geqslant ⩾时钟周期
那三个周期可以相等吗
一个完整的指令周期包括:取指周期——间址周期(不一定)——执行周期——中断周期(不一定)
间址周期是指有些操作数需要访存去查找,必须间接寻址
而无条件转移指令JMPX就没有间址周期,只需要取指和执行
由于CPU和I/O设备直接会有信息的交换,比如键盘鼠标显示器等,都会与CPU进行联系,这时候CPU就会采用中断方式来实现信息交换,但是是在每条指令执行结束时才发中断查询信号,如果有,CPU就进入中断响应周期,
四个周期CPU都会访存,取指令,取有效地址,取操作数,保存程序断点
怎么区别四个周期?设置标志触发器FE(取指),IND(间址),EX(执行),INT(中断),1表示有效
2 指令周期的数据流
即不同周期数据的流动方向
2.1 取指周期
2.2 间址周期
(1)IR或MDR(取出指令中的形式地址)—>MAR—>地址总线—>内存 找到操作数的地址
(2)CU发出读命令—>控制总线—>内存
(3)内存—>数据总线—>MDR(存放有效地址)
2.3 执行周期
从IR中的真实地址找到操作数并送到ALU中运算,根据指令不同,没有统一的数据流向
2.4 中断周期
处理中断请求,程序断点压入堆栈中,SP表示栈顶地址
进栈先修改指针再存入数据
3 指令的执行方案
由于一个指令周期有多个时间段(不同的部件不同的执行步骤),所有有不同的方案来安排这些执行步骤
3.1 单指令周期
所有指令都是固定的时间完成
指令串行完成,时钟周期取决于最长的那条指令,对短指令而言降低了系统速度
一个时钟周期就是一条指令
也就是说最长指令是1秒,那时钟周期就是一秒,其他指令也全是在一秒内执行完并且会有剩余,因此效率不高
3.2 多指令周期
不同类型的指令选用不同的执行步骤
指令之间串行
但是可以选用不同个数的时钟周期来完成不同指令的执行过程
不要求统一时间,也就是说我规定一个时钟周期需要1秒,但是你这个指令需要3秒,那就给你三个时钟周期,不同的时间就给不同数量的时钟周期
3.3 流水线方案
指令之间并行执行
争取一个时钟周期一条指令,也就是说我规定一个时钟周期1秒,那你流水线就必须争取做到一秒一个指令,尽管你一个指令需要三秒,因为是并行执行,除了最开始的几条指令,后面无限接近于1一秒一个指令
三 数据通路的功能和基本结构
1 数据通路的功能
数据在功能部件之间传送的路径成为数据通路,包括经过的部件
由控制器控制,根据指令生成对数据通路的控制信号
实现了CPU内部运算器,寄存等的数据交换
数据通路不仅仅是CPU内部的
2 数据通路的基本结构
(1)CPU内部单总线方式
所有寄存器输出端和输入端在一条公共通路上,结构简单,冲突多,性能低
(2)CPU内部多总线方式
所有寄存器输出端和输入端在多条公共通路上,提高效率
(3)专用数据通路方式
根据指令执行过程中的数据和地址的流动方向安排连接线路,避免共享总线,速度更快,但硬件多
“in”表示部件允许输入控制信号,“out”表示部件允许输出控制信号
CPU内部总线和外部的系统总线是不一样的,区别如下
(1)寄存器之间的数据传送
如(PC)—>MAR
(2)主存与CPU之间的数据传送
如(PC)—>MAR
1—>R
MEM(MAR)—>MDR
(MDR)—>IR
(3)执行算术或逻辑运算
相加的两个数必须在ALU的两个输入端同时有效,所以ALU的一个输入端有一个暂存器Y,输出端也有一个暂存器Z
(MDR)—>MAR
1—>R
MEN(MAR)—>MDR
(MDR)—>Y
(ACC)+(Y)—>Z
(Z)—>ACC
四 控制器的功能和原理
1 控制器的结构和功能
功能:(1)取指令,并指出下一条指令的位置
(2)对指令进行译码或测试,产生相应的操作控制信号
(3)指挥并控制CPU,内存,输入输出设备直接的数据流动方向
2 硬布线控制器
根据指令的要求,当前的时序及外部和内部的状态,按时间的顺序发送一系列微操作控制信号
由复杂的组合逻辑电路和一些触发器构成,因此又称为组合逻辑控制器
2.1 硬布线控制单元图
CU的输入信号来源:(1)指令译码器译码产生的指令信息
(2)时序系统产生的机器周期信号和节拍信号
(3)来自执行单元的反馈信息即标志
输出到CPU内部或外部控制总线上
控制单元还接受来自系统总线(控制总线)的控制信号,如中断请求,DMA请求
2.2 硬布线控制器的时序系统及微操作
(1)时钟周期
时钟信号—>节拍发生器,产生节拍;每个节拍宽度正好一个时钟周期
(2)机器周期
指令执行过程中的一个基准时间,因指令周期不同,因此通常采用固定的存取周期(内存存取一个指令字的最短时间)作为基准时间
当存储字长=指令字长,取指周期=机器周期
一个机器周期可以完成若干个微操作
(3)指令周期,见上
(4)微操作命令分析
控制单元发出各种操作命令(控制信号)序列的功能,不同的指令,控制单元发出不同的微操作命令
以下是不同周期的微操作
2.3 CPU的控制方式
不同指令所对应的微操作数及复杂程度不同,因此每条指令和每个微操作所需的执行时间也不同
(1)同步控制方式
系统有一个统一的时钟,所有的控制信号均来自这个统一的时钟信号
一般以最长的最为标准
用完全统一的,具有相同时间间隔和相同数目的节拍作为机器周期来运行不同的指令
电路简单,运行速度慢
(2)异步控制方式
不存在基准时标信号,各部件自行工作,通过应答的方式联络
速度快,电路复杂
(3)联合控制方式
两者的折中,对不同指令的微操作实现大部分同步控制,小部分异步控制
2.4 硬布线控制单元的设计步骤
(2)进行微操作信号综合
然后进行分析归类,写出逻辑表达式然后简化
微操作信号影响因素:机器周期 ∧ \land ∧节拍 ∧ \land ∧脉冲 ∧ \land ∧操作码 ∧ \land ∧机器状态条件
比如M(MAR)—>MDR
=FE·T1+IND·T1(ADD+STA+LDA+JMP+BAN)+EX·T1(ADD+LDA)
=T1{FE+IND(ADD+STA+LDA+JMP+BAN)+EX(ADD+LDA)}
(3)画出微操作命令的逻辑图
根据逻辑表达式画出对应的每个微操作信号的逻辑电路图
如M(MAR)—>MDR,但是未考虑门的扇入系数
3 微程序控制器(静态)
采用存储逻辑实现,把微操作信号代码化,每条机器指令转化成为一段微程序并存入一个专门的存储器中,微操作控制信号由微指令产生
3.1 微程序控制的基本概念
设计思想:每条机器指令编写成一个微程序,每个微程序包含若干个微指令,每条微指令对应一个或几个微操作命令
微程序 ⩾ \geqslant ⩾微指令(微命令的集合) ⩾ \geqslant ⩾微操作
微程序可以存到一个控制存储器中,用寻址用户程序机器指令的办法来寻址微指令
基本术语:
(1)微命令与微操作
微操作:一条机器指令可以分解成一个微操作序列,是计算机中最基本的,不可再分解的操作
微命令:控制部件发出的控制命令,构成控制序列的最小单位
两者一一对应,微命令是微操作的控制信号,微操作是微命令的执行过程
微命令有相容性和互斥性之分;相容性:同时产生,共同完成一些微操作的微命令;互斥性:不允许同时出现的微命令
组合逻辑控制器也有这两个概念
(2)微指令与微周期
微指令:若干微命令的集合,存放微指令的控制存储器的单元地址称为微地址
微指令常包括:操作控制字段(微操作码字段,产生某一步操作所需的各种操作控制信号)和顺序控制字段(微地址码字段,控制产生下一条要执行的微指令地址)
微周期:执行一条微指令所需的时间,通常为一个时钟周期
(3)主存储器与控制存储器
控制存储器CM:CPU内部,存放微程序,用ROM实现
(4)程序与微程序
程序:指令的有序集合,完成特定功能
微程序:微指令的有序集合,一条指令的功能由一段微程序来实现,描述机器指令
3.2 微程序控制器的组成和工作过程
(1)微程序控制器的基本组成
控制存储器:核心部件,存放微程序,用ROM实现
微指令寄存器CMDR/ μ \mu μIR:存放从CM中取出的微指令,位数与微指令字长相等
微地址形成部件:产生初始微地址和后继微地址
微地址寄存器CMAR:存放读写微指令的地址
(2)微程序控制器的工作过程
在微程序的控制下计算机执行机器指令的过程
执行取微指令公共操作:自动将取指微程序的入口地址送入CMAR,并从CM中读出相应的微指令送入CMDR
机器指令的操作码字段通过微地址形成部件产生该机器指令所对应的微程序的入口地址,并送入CMAR
从CM中逐条取出对应的微指令并执行
执行完一个机器指令的微程序后,又回到取指微程序的入口地址
(3)微程序和机器指令
一个机器指令对应一个微程序
可以形成公共的微程序,比如取指,间址,中断
3.3 微指令的编码方式
(1)直接编码方式
无法进行译码,每位代表一个微命令,设计时选用或不选用某个微命令,将对应位设置为0或1
简单直观速度快,但数量有限
(2)字段直接编码方式
微命令字段分成若干小字段,把互斥性微命令组合在用一个字段,相容性微命令组合在不同字段中,每个字段独立编码
缩短了微指令字长,需要译码,速度较慢
每个小段的信息位不能太多,否则增加译码线路的复杂度和译码时间;一个小段还留一个状态位,表示不发出任何微命令
(3)字段间接编码,隐式编码
一个字段的某些微命令需要由另一个字段的某些微命令来解释
进一步缩短微指令字长,削弱了微指令的并行控制能力,常作为直接编码的辅助手段
3.4 微指令的地址形成方式
后继微指令的形成的两大基本类型:
(1)直接由微指令的下地址字段指出
(2)根据机器指令的操作码形成
(3)增量计数器法:(CMAR)+1—>CMAR
(4)根据标志来决定微指令分支转移的地址
(5)通过网络测试形成
(6)有硬件直接产生微程序入口的地址
如果指令系统中n条机器指令,则CM中微程序个数至少是n+1
3.5 微指令的格式
与编码方式有关
(1)水平型微指令
直接编码,字段直接编码,字段间接编码和混合编码都属于水平型微指令
指令字中一位对应一个控制信号,1或者0
一条水平型微指令定义并执行集中并行的操作
微程序短,速度快,但是微指令长,编写程序麻烦
(2)垂直型微指令
在微指令中设置微操作码字段,采用微操作码编译法
一条垂直型微指令只能定义并执行一种基本操作
微指令短,简单规整便于编写微程序;但是微程序长,执行速度慢,效率低
(3)混合型微指令
在垂直型的基础上增加一些并行操作
微指令较短,便于编写,速度较快
(4)水平型微指令和垂直型微指令的比较
水平型 | 垂直型 |
---|---|
并行操作强,效率高,灵活性强 | 较差 |
执行一条微指令的时间短 | 执行时间长 |
微指令字长微程序短 | 微指令字短微程序长 |
用户难以掌握 | 容易掌握 |
3.6 微程序控制单元的设计步骤
(1)写出对应机器指令的微操作的命令及节拍安排
比如取指阶段的微操作命令及节拍安排:
T0:(PC)—>MAR,1—>R
T1:M(MAR)—>MDR,(PC)+1—>PC
T2:(MDR)—>IR;OP(IR)—>微地址形成部件
由于后继微指令的地址由上一条给出,则改进后:
T0:(PC)—>MAR,1—>R
T1:Ad(CMDR)—>CMAR
T2:M(MAR)—>MDR,(PC)+1—>PC
T3:Ad(CMDR)—>CMAR
T4:(MDR)—>IR
T5:OP(IR)—>微地址形成部件—>CMAR
(2)确定微指令格式
(3)编写微指令码点
3.7 动态微程序设计和毫微程序设计
(1)动态微程序设计
能根据用户的要求改变微程序
(2)毫微程序设计
解释微程序的微程序,直接控制硬件
3.8 硬布线控制器和微程序控制器的区别
微程序控制器 | 硬布线控制器 | |
---|---|---|
工作原理 | 微操作控制信号以微程序的形式存放在控制存储器中,执行指令时读出即可 | 微操作控制信号由组合逻辑电路根据当前的指令码,状态和时序,即时产生 |
执行速度 | 慢 | 快 |
规整性 | 较规整 | 烦琐不规整 |
应用场合 | CISC CPU | RISC CPU |
易扩充性 | 易扩充修改 | 困难 |
五 异常和中断机制
1 异常和中断的基本概念
异常(内中断):CPU内部产生的意外事件,与当前执行指令相关的同步事件,CPU自身完成检测
中断(外中断):CPU外部设备向CPU发出的中断请求,由外部设备触发,与当前执行指令无关的异步事件
2 异常和中断的分类
2.1 异常的分类
异常分为:
硬故障中断:硬连线异常,如存储器校验错,总线错误
程序性异常(软件中断):CPU内部执行指令引起的,如整除0,溢出,断点,单步跟踪,栈溢出,地址越界,缺页等,又可分为:
(1)故障
指令启动后,执行结束前被检测到的异常事件,如缺页,整除0
(2)自陷
是预先安排的一中异常事件;在程序中用一条特殊指令或通过某种方式设定特殊控制标志来人为设置一个陷阱
调试的断点设置和单步跟踪功能就是通过陷阱机制实现
(3)终止
计算机无法继续执行的硬件故障,如控制器出错,存储器校验错,只能终止
终止异常和外中断属于硬件中断
2.2 中断的分类
(1)可屏蔽中断
通过可屏蔽中断请求线INTR向CPU发出的中断请求,被屏蔽的中断请求将不被送到CPU
(2)不可屏蔽中断
通过专门的不可屏蔽中断请求线NMI向CPU发出的中断请求,通常是非常紧急的硬件故障,如断电
3 异常和中断响应过程
CPU对异常和中断响应的过程可分为:
(1)关中断
保存断点和程序状态期间,不能被新的中断打断,因此要禁止响应新的中断,即关中断
设置中断允许IF触发器来实现,IF为0表示关中断
(2)保存断点和程序状态
通常保存在栈中,为了支持异常或中断的嵌套
(3)识别异常和中断并转到相应的处理程序
软件识别:大多数异常采用,中断也用
硬件识别:中断采用
软件识别:CPU设置一个异常状态寄存器,记录异常原因;操作系统使用一个统一的异常或中断查询程序
硬件识别(向量中断):异常或中断处理程序的首地址称为中断向量,所有中断向量都在中断向量表中,每个异常或中断一个指定的中断类型号,中断向量表中,类型号和中断向量一一对应
六 指令流水线
之前的指令执行都是单周期处理器,同一时刻CPU中只有一条指令在执行
现代计算机普遍使用指令流水线技术,同一时刻多条指令在CPU不同部件并发执行,大大提高了并行性和效率
1 指令流水线的基本概念
提高并行性的两大方面:
时间上的并行:一个任务拆为不同子阶段,在不同部件上同时执行,称为流水线技术
空间上的并行:一个处理机内设置多个执行相同任务的功能部件,并行工作,称为超标量处理机
1.1 指令流水的定义
一条指令的执行过程分为若干个阶段,每个阶段不同部件完成
假设一条指令的执行过程分为:取指(IF),译码/读寄存器(ID),执行/计算地址(EX),访存(MEM),写回(WB)
理想情况,每个时钟周期都有一条指令完成,每条指令的时钟周期数(CPI)都为1
每个阶段时间长度以最复杂的阶段为准,因此流水线方式不能缩短条指令的执行时间,但是提高了整个程序的效率
为实现指令流水线,指令集的特征:
(1)指令长度应尽量一致,简化了取指令和指令译码操作
(2)指令格式应尽量规整,尽量保证源寄存器的位置相同
(3)采用Load/Store指令访问存储器
(4)数据和指令在存储器对齐存放,有利于减少访存次数
1.2 流水线的表示方法
时空图
2 流水线的基本实现
数据通路
控制信号
执行过程
(1)取指IF
PC值作为地址从指令寄存器取出第一条指令字,计算PC+4,送入PC输入端
指令字和PC+4通过RD输出端送入IF/ID寄存器
可能用到的数据都向后传
时钟到来时PC+4和指令字锁存到IF/ID寄存器
(2)译码/读寄存器ID
控制器根据指令字生成后续控制信号
对于lw访存指令,根据指令字中的rs,rt取出寄存器中的RS,RT,
符号扩展单元可能会扩展这些数据
多路选择器根据指令字生成指令可能的写寄存器编号
时钟到来,数据和信号和PC+4锁存在ID/EX寄存器中
(3)执行/计算地址EX
由具体指令确定
时钟到来,数据和信号会锁存在EX/MEM流水寄存器中
(4)访存MEM
也由具体指令确定
对于lw访存指令,根据寄存器中锁存的地址写入数据和内存读写控制信号对存储器进行读和写
时钟到来,数据和信号会锁存在MEM/WB流水寄存器中
(5)写回WB
也由具体指令确定
将读出的数据写回指定寄存器,时钟到来时完成数据写入寄存器
运算类指令:IF——ID——EX——WB
Load指令:IF——ID——EX——MEM——WB
Store指令:IF——ID——EX——MEM
条件转移指令:IF——ID——EX——MEM(写回PC)
无条件转移指令:IF——ID——EX(写回PC)
3 流水线的冒险与处理
有些情况使流水线不能正确执行后续指令而导致流水线阻塞或停顿,称为流水线冒险
主要原因有以下三种:
3.1 结构冒险(资源冲突)
多条指令同一时刻争夺同一资源(硬件)
解决方法:(1)前一指令访存时,后一相关指令暂停一个时钟周期
(2)单独设置数据存储器和指令存储器,如指令cache和数据cache
3.2 数据冒险(数据冲突)
一个程序中下一条指令用到当前指令计算的结果,但是发生数据冲突又可以细分为三类:
(1)写后读:当前指令写,下一指令读,先读后写,读到的就是错数据
(2)读后写:当前指令读,下一指令写,先写后读,读的就是错数据
(3)写后写:下一指令在当前指令之前写,写入的就不是最新值
解决办法:
(1)把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失,分为硬件阻塞和软件插入NOP指令
(2)设置相关专用通路,不等指令写,直接在ALU计算完了作为结果开始下一条指令,称为数据旁路技术
(3)通过编译器对数据相关的指令编译优化,调整指令顺序
3.3 控制冒险(控制冲突)
指令一般是顺序执行,但是有改变指令执行顺序的情况,改变PC值造成断流,引起控制冒险
解决办法
(1)对转移指令进行分支预测,尽早生成转移目标地址,分为静态和动态
静态预测:预测条件不满足,即继续执行分支指令的后续指令
动态预测:根据程序执行的历史情况,进行动态预测调整,准确率较高
(2)预取转移成功和不成功两个控制流方向上的目标指令
(3)加快和提前形成条件码
(4)提高转移方向的猜准率
cache 缺失的处理过程也会引起流水线阻塞
4 流水线的性能指标
4.1 流水线的吞吐率
单位时间流水线完成的任务数量
吞吐率TP=n/TK
n是任务数,Tk是处理完n个任务所用的总时间,k是流水段的段数,t是时钟周期
任务连续的理想情况下,一条k段流水线能在k+n-1个时钟周期内完成n个任务
TP=n/(k+n-1)t
当n无穷大,TP=1/t
4.2 流水线的加速比
完成同样一批任务,不使用流水线与使用流水线所用的时间之比
加速比S=T0/TK
T0表示不使用流水线的总时间,TK表示使用流水线的总时间
由TK=n/(k+n-1)t,T0=knt
则S=kn/k+n-1,当n无穷大,S=k
5 高级流水线技术
两种增加指令级并行的策略:多发射技术(多个功能部件)和超流水线技术(增加流水级数)
5.1 超标量流水线技术
也称动态多发射技术
每个时钟中期并发多条独立指令,配置多个功能部件
简单超标量:指令顺序发射
复杂超标量:动态流水线调度技术,通过动态分支预测等手段,指令不按顺序执行,称为乱序执行
5.2 超长指令字技术
静态多发射技术
由编译程序挖掘出指令潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字;采用多个处理部件
5.3 超流水线技术
流水线功能段划分得越多,时钟周期就越短,通过提高流水线主频
但是流水寄存器数量有限,所以划分级数有限制
超流水线CPU充满后CPI=1,但主频更高
多发射流水线CPU并行执行,CPI<1,但成本更高,控制更复杂
相关文章:
计算机组成原理——中央处理器
文章目录 **一 CPU的功能和基本结构****1 CPU的功能****2 [基本结构](http://t.csdn.cn/bpCt3)****2.1 运算器****2.2 控制器** **二 指令执行过程****1 指令周期****2 指令周期的数据流****2.1 取指周期****2.2 间址周期****2.3 执行周期****2.4 中断周期** **3 指令的执行方案…...
tidb变更大小写敏感问题的总结
作者: sustyle 原文来源: https://tidb.net/blog/2a72bc13 1 背景 近期,我们线上的tidb集群就遇到一个变更忽略大小写的需求,本来以为一个改表工单就解决了,但是业务反馈工单完成后,大小写仍旧敏感&…...
法规标准-UN R158标准解读
UN R158是做什么的? UN R158全名为针对驾驶员识别车辆后方弱势道路使用者,联合国对倒车系统和机动车的统一规定,该法规涉及批准倒车和机动车辆的装置,主要为保证倒车时避免碰撞,方便驾驶员观察了解车辆后部人员和物体…...
160个CrackMe之002
这道题就很简单 有了第一道题目的支持 我们就能做 首先 我们先要下载Msvbvm50.dll Msvbvm50.dll下载_Msvbvm50.dll最新版下载[修复系统丢失文件]-下载之家 然后我们可以运行程序了 比之前那个还简单 就是输入 然后比对 报错或者成功 开始逆向分析 先去常量中进行查找 找…...
3. 响应状态码及Response对象的status_code属性
3. 响应状态码及Response对象的status_code属性 文章目录 3. 响应状态码及Response对象的status_code属性1. 响应状态码2. 响应状态码共分为5种类型2.1 1xx(临时响应)2.2 2xx (成功)2.3 3xx (重定向)2.4 4x…...
MIME 类型列表 03
看表~按照内容类型排列的 MIME 类型列表 类型/子类型扩展名application/envoyevyapplication/fractalsfifapplication/futuresplashsplapplication/htahtaapplication/internet-property-streamacxapplication/mac-binhex40hqxapplication/msworddocapplication/msworddotappl…...
SpringBoot项目登录并接入MFA二次认证
MFA多因素认证(Multi-Factor Authentication ): 一些需要身份认证的服务(如网站),为了提升安全性,通常会在账号密码登录成功后,要求用户进行第二种身份认证,以确保是正确用户登录,避…...
算法与数据结构(三)
一、堆 1,堆结构就是用数组实现的完全二叉树结构 根节点的左孩子的下标为:2i1,右孩子为2i2。两个孩子的父节点为(i-1)/2向下取整 2,完全二叉树中如果每棵子树的最大值都在顶部就是大根堆 从下往上将孩子与父节点进行比较,如果子叶…...
亚马逊云科技出海日,让数字经济出海扩展到更多行业和领域
数字化浪潮之下,中国企业的全球化步伐明显提速。从“借帆出海”到“生而全球化”,中国企业实现了从传统制造业“中国产品”出口,向创新“中国技术”和先导“中国品牌”的逐步升级。 作为全球云计算的开创者与引领者,亚马逊云科技…...
Pb协议的接口测试
【摘要】 Protocol Buffers 是谷歌开源的序列化与反序列化框架。它与语言无关、平台无关、具有可扩展的机制。用于序列化结构化数据,此工具对标 XML ,支持自动编码,解码。比 XML 性能好,且数据易于解析。更多有关工具的介绍可参考…...
2. 分布式文件系统 HDFS
2. 分布式文件系统 HDFS 1. 引入HDFS【面试点】 问题一:如果一个文件中有 10 个数值,一行一个,并且都可以用 int 来度量。现在求 10 个数值的和 思路: 逐行读取文件的内容把读取到的内容转换成 int 类型把转换后的数据进行相加…...
借助金融科技差异化发展,不一样的“破茧”手法
撰稿 | 多客 来源 | 贝多财经 民营银行的诞生顺应了普惠金融的要求,承担着支持民营经济、服务小微的历史使命。经过近年来的发展,19家民营银行形成了特色化、差异化的发展模式,并用各自本领实践普惠金融的初心。 本文从多家民营银行在核心技…...
typescript中type、interface的区别
一、概念定义 interface:接口 在TS 中主要用于定义【对象类型】,可以对【对象】的形状进行描述。type :类型别名 为类型创建一个新名称,它并不是一个类型,只是一个别名。 二,区别 interface: …...
Ingress详解
Ingress Service对集群外暴露端口两种方式,这两种方式都有一定的缺点: NodePort :会占用集群集群端口,当集群服务变多时,缺点明显LoadBalancer:每个Service都需要一个LB,并且需要k8s之外设备支…...
【递归算法的Java实现及其应用】
文章目录 递归算法概述递归算法的实现步骤递归算法的Java实现递归算法的底层工作原理递归算法的底层代码讲解(优先级高)递归算法的实际应用场景递归算法在场景中解决的问题递归算法的优点和缺点总结 递归算法概述 递归算法是一种通过调用自身来解决问题…...
2023年度第四届全国大学生算法设计与编程挑战赛(春季赛)
目录 2023年度第四届全国大学生算法设计与编程挑战赛(春季赛)1、A2、Bx3、Cut4、Diff5、EchoN6、Farmer7、GcdGame8、HouseSub9、IMissYou!10、Jargonless 2023年度第四届全国大学生算法设计与编程挑战赛(春季赛) 1、A 题目描述…...
如何用PHP获取各大电商平台的数据
PHP获取API数据是指使用PHP语言从web服务中提取数据。API是指应用程序接口,它允许应用程序之间进行交互和通信,并且允许一个应用程序从另一个应用程序获取数据。PHP是一种网站开发语言,它可以使用多种方式来获取API数据。 在PHP中࿰…...
一站式完成车牌识别任务:从模型优化到端侧部署
交通领域的应用智能化不断往纵深发展,其中最为成熟的车牌识别早已融入人们的日常生活之中,在高速公路电子收费系统、停车场等场景中随处可见。一些企业在具体业务中倾向采用开源方案降低研发成本,但现有公开的方案中少有完成端到端的车牌应用…...
Linux4.8Nginx Rewrite
文章目录 计算机系统5G云计算第六章 LINUX Nginx Rewrite一、Nginx Rewrite 概述1.常用的Nginx 正则表达式2.rewrite和location3.location4.实际网站使用中,至少有三个匹配规则定义5.rewrite6.rewrite 示例 计算机系统 5G云计算 第六章 LINUX Nginx Rewrite 一、…...
DHT11温湿度传感器
接口定义 传感器通信 DHT11采用简化的单总线通信。单总线仅有一根数据线(SDA),通信所进行的数据交换、挂在单总线上的所有设备之间进行信号交换与传递均在一条通讯线上实现。 单总线上必须有一个上拉电阻(Rp)以实现单…...
RestTemplate超简单上手
目录 1.什么是RestTemplate? 2.RestTemplate的使用 2.1spring环境下 注意1:RestTemplate中发送请求execute()和exchange()方法的区别 execute()方式 exchange()方式 二者的区别 注意2:进阶配置——底层HTTP客户端 2.2非spring环境下 1.什么是R…...
监控系统设计原则及实现目标
1.1.1.1 1 .完善的设计理念: 包括符合国际发展潮流的特性化设计,完整的安防监控及围墙周界报警系统 的布线、设备安装、调试、测试、验收的“交钥匙”工程管理制度,以及符合标 准的质量控制体系。 1.1.1.2 设计原则…...
VulnHub项目:MONEYHEIST: CATCH US IF YOU CAN
靶机名称: MONEYHEIST: CATCH US IF YOU CAN 地址:MoneyHeist: Catch Us If You Can ~ VulnHub 这个系列是一部剧改编,还是挺好看的,大家有兴趣可以去看看! 废话不多说,直接上图开始! 渗透…...
对象存储OSS简介,一分钟了解对象存储OSS
对象存储(Object Storage)是一种新兴的数据存储方式,与传统的文件系统和块存储不同,对象存储以对象为基本单位进行数据管理和存储。在对象存储中,每个对象都有唯一的标识符,并包含了数据本身以及与之相关的…...
SpringCloud_微服务基础day2(Eureka简介与依赖导入,服务注册与发现)
p6:Eureka简介与依赖导入 前面我们了解了如何对单体应用进行拆分,并且也学习了如何进行服务之间的相互调用,但是存在一个问题,就是虽然服务拆分完成,但是没有一个比较合理的管理机制,如果单纯只是这样编写,…...
#tmux# #终端# 常用工具tmux
tmux tmux是一个终端复用工具,允许用户在一个终端会话中同时管理多个终端窗口,提高了终端使用效率,尤其在服务器上进行远程管理时更加实用。在tmux中,可以创建多个终端窗口和窗格,并在这些窗口和窗格之间自由切换&…...
后端服务架构高性能设计之道
“N 高 N 可”,高性能、高并发、高可用、高可靠、可扩展、可维护、可用性等是后台开发耳熟能详的词了,它们中有些词在大部分情况下表达相近意思。本序列文章旨在探讨和总结后台架构设计中常用的技术和方法,并归纳成一套方法论。 前言 本文主…...
Python中的Time和DateTime
Python在处理与时间相关的操作时有两个重要模块:time和datetime。在本文中,我们介绍这两个模块并为每个场景提供带有代码和输出的说明性示例。 time模块主要用于处理时间相关的操作,例如获取当前时间、时间的计算和格式化等。它提供了一些函数…...
UNIX网络编程卷一 学习笔记 第十九章 密钥管理套接字
随着IP安全体系结构(IPsec)的引入,密钥加密和认证密钥的管理越来越需要一套标准机制。RFC 2367介绍了一个通用密钥管理API,可用于IPsec和其他网络安全服务,该API创建了一个新协议族,即PF_KEY域,…...
excel如何实现识别文本在对应单元格填上数据?
要实现 Excel 识别文本在对应单元格填上数据,有以下两种方法: 方法一:使用 VLOOKUP 函数 1. 在 Excel 工作表中,输入一个表格,列名为对应的文本,行名为不同条目。 2. 准备输入数据,在一个新的…...
网站开发实验结论/ps培训
今天在Ubuntu下安装 mysql-5.1.41 出现错误,看了一下 INSTALL-SOURCE ,后明白了所以把错误记下来了,错误大概如下: checking s版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作…...
提交网站/近期热点新闻事件
利用java打开一张图片,并提取其边缘。功能有打开文件,以及提取边缘。算法原理由于边缘提取的算法有很多种,而提取的精度在相同阈值的情况下也会有不同的结果。这次我的边缘提取使用索贝尔算子(Sobel operator)。该算子会把图像每一点的灰度矢…...
郑州做旅游网站/百度账号是什么
104. 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3/ \9 20/ \15 7返回它的最…...
医院网站可信认证必须做吗/互联网产品推广
最近,跟一个同行朋友小张聊天,他非常苦恼,因为工作不如意,他入职这个企业已经3年了,做的是网络工程师,薪资不高,公司事情还一大堆,还经常被迫背锅,眼看一把年纪了&#x…...
怎样制作小程序软件/优化大师好用吗
归根结底,用CSS绘制三角形,就是利用边框(border)特性进行绘制 平时我们用border可能用的很多,但是一般都会统一设置所有边框的颜色,很少研究每个方向的边框具体样式是怎样的。现在先来看一个简单的例子,我们分别设置每…...
wordpress响应瀑布主题/营销网络建设
嵌套查询 带有EXISTS谓词的子查询 EXISTS谓词 —— 存在量词 ∃\exists∃ 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false” 若内层查询为空,外层WHERE子句返回false若内层查询非空,外层WHERE子句返回tr…...