计算机组成原理【CO】Ch5 中央处理器

news2024/11/22 21:31:30

目录

大纲

一条指令的执行 

取指令

执行指令

数据传送类(mov、load、store)

运算类指令(加、减、乘、除、移位、与、或)

转移类指令(jmp、jxxx)

如何看懂注释

袁版注释⻛格(16年以后的真题)

唐版注释⻛格(16年以前的真题)

【※】CPU图示

​编辑 【※】五段式流水线

数据冒险

控制冒险 —— 会改变PC值的

MIPS架构流水线结构

常⻅硬件

操作元件(组合逻辑元件)

存储元件(时序逻辑元件)

数据通路

 微程序控制器

对应关系

工作过程

编码方式/控制方式

地址形成方式

微指令的格式

高级流水线技术 

多处理器概念

常考点

 

SISD,SIMD,MIMD的基本概念

其他相关概念(了解即可,重要的考点都列在上面的常考点表格中)


大纲

CPU的功能和基本结构

  • CPU = 控制器 + 数据通路
    • 控制器,即CU,是指令的控制部件
    • 数据通路,是指令的执⾏部件,包括运算器、寄存器、数据传输的线路等

指令执⾏过程

取指、译码

  • 取指令送⼊IR、PC+“1”
  • CU根据IR译码,确定指令的执⾏时序

执⾏

  • 取操作数、运算、存结果
  • 异常/中断的检测与处理(如果有的话)

控制器的功能和⼯作原理

  • 硬布线控制器
  • 微程序控制器
  • PS:这部分弱化

异常和中断机制

异常和中断的基本概念

异常和中断的分类

异常和中断的检测与响应

  • 软件识别(MIPS采⽤)
    • CPU内部设置⼀个“异常状态寄存器”,⽤于保存异常原因。
    • 检测到异常/中断后,固定跳转到⼀个异常处理(⼊⼝)程序,由它判断“异常状态寄存器”的值,再决定要跳转到哪⼀个具体的异常/中断处理程序。
  • 硬件识别(x86采⽤)
    • 每个异常/中断都有⼀个中断号,硬件根据中断号,找到中断向量,并跳转⾄对应的异常/中断处理程序

指令流⽔线

指令流⽔线的基本概念

指令流⽔线的基本实现

结构冒险、数据冒险、控制冒险的处理

超标量和动态流⽔线的基本概念

多处理器基本概念

SISD、SIMD、MIMD、向量处理器的基本概念

 硬件多线程的基本概念

多核处理器(multi-core)的基本概念

共享内存多处理器(SMP)的基本概念

一条指令的执行 

取指令

  • 即,将PC所指的指令取出来到IR的过程
  • PC->MAR

M(MAR)->MDR->IR

PC+"1"->PC

  • "1"为下一条指令(注意指令的字长)
  • +“1”的实现方式:
    • 有加法功能的ALU
    • 加法器
    • 有自增功能的寄存器(PC)

执行指令

数据传送类(mov、load、store)

  • 寄存器->寄存器
  • 寄存器->主存
  • 主存->寄存器
  • 立即数->寄存器
  • 立即数->主存
  • 寄存器->暂存寄存器

PS:

  • 关注读/写主存:
    • 读:

地址->MAR

M(MAR)->MDR

MDR->目的地

  • 写:

地址->MAR

数据->MDR

MDR->M(MAR)

  • 关注总线的占用来安排控制信号(总线是临界资源)

运算类指令(加、减、乘、除、移位、与、或)

转移类指令(jmp、jxxx)

如何看懂注释

袁版注释⻛格(16年以后的真题)

数据在通⽤寄存器组

  • 数据在通⽤寄存器组
  • eg:R[6]×R[3]→R[2]。将寄存器R6×R3的内容写⼊R2

数据在某个特殊名字的寄存器

  • 特点:直接⽤寄存器名字表示
  • eg:R[6]+10→PC。把寄存器R6+10的内容写⼊PC
  • eg:MDR→PC。把MDR的内容写⼊PC

数据在主存

  • 特点:⽤ M[addr]表示,addr为主存地址
  • eg:R[6]→M[10086] :将R6的内容存⼊主存地址10086
  • eg:R[3]<<2→M[R[6]]:将R3进⾏“左移两位”运算,并将结果存⼊R6所指的主存地址(寄存器间接寻址)
  • eg:M[PC+10]→MDR 将 PC+10 指向的主存内容取到MDR

特点总结

  • 喜欢⽤“中括号”,中括号⾥边表示寄存器编号、或主存地址
  • 要使⽤寄存器⾥的内容,不⽤加⼩括号,直接给寄存器名即可

唐版注释⻛格(16年以前的真题)

数据在通⽤寄存器组

⾥的值;箭头右边表示存⼊某个寄存器不加⼩括

eg:(R6)×(R3)→R2。将寄存器R6×R3的内容写⼊R2

  • 特点:箭头左边,⽤寄存器名加⼩括号,表示寄存器

数据在某个特殊名字的寄存器

  • 特点:直接⽤寄存器名字表示,要使⽤寄存器⾥的值需要加⼩括号
  • eg:(R6)+10→PC。把寄存器R6+10的内容写⼊PC
  • eg:(MDR)→PC。把MDR的内容写⼊PC

数据在主存

  • 特点:⽤ M(addr)表示,addr为主存地址
  • eg:(R6)→M(10086):将R6的内容存⼊主存地址10086(寄存器间接寻址)
  • eg:(R3)<<2→M((R6)):将R3进⾏“左移两位”运算,并将结果存⼊R6所指的主存地址(寄存器间接寻址)
  • eg:((PC)+10)→MDR:将 PC+10 指向的主存内容取到MDR在箭头的左边表示“访问主存”时,可以不加M,⽤两层括号表示寄存器间接寻址

特点总结

  • 喜欢⽤“⼩括号”
  • 箭头左边若要使⽤某个寄存器⾥的内容,必须在寄存器名字外⾯加⼩括号
  • 箭头右边表示存⼊某个寄存器,不⽤加⼩括号

CPU图示

 五段式流水线

  • CPU根据指令周期的不同阶段来区分是指令还是数据

数据冒险

  • 什么指令会导致数据冒险?
    • 前面的指令:写某个寄存器 —— 【WB 第五个段】
    • 后面的指令:读(同一个)寄存器 —— 【ID 第二个段】
  • 分析思路
    • 一条一条指令从前往后分析,如果一条指令写了某个寄存器,则观察与之相邻的3指令中,有没有哪条指令需要读同一个寄存器。
    • 当后面的指令和前面的指令中间,还有其他三条指令时,才不会发生数据冒险

控制冒险 —— 会改变PC值的

  • 指令格式:jxxx(X86) / bxx(MIPS)
  • 无条件转移(callret属于无条件转移)
    • EX 第三个段改变PC】
    • 停两个周期,再取下一条指令(IF段),就不会发生控制冒险
  • 有条件转移
    • EX段设置条件码,Mem 第四个段确定是否将PC值更新为转移目标地址
    • 停四个周期,再取下一条指令(IF段),就不会发生控制冒险

MIPS架构流水线结构

  • IF取指令阶段:取出指令放到IR
  • ID对指令进行译码,并用IR中的寄存器地址去访问通用寄存器组,读出所需的操作数。
  • EX执行/计算地址:ALU运算结果放入锁存器
  • MEM访存:
    • 该周期处理的指令只有load、store分支指令
    • 其它类型的指令在此周期不做任何操作
    • 写回DataCache,运算形指令为空
  • WB写回:若需写回寄存器则写回

常⻅硬件

操作元件(组合逻辑元件)

 没有存储功能的元件

三态⻔

  • 就是⼀道⻔,可开可关
  • 控制信号:1bit,⽤于控制开/关

加法器(Adder)

  • 只能实现加法、减法
  • 控制信号:1bit: 0加1减,控制信号的值会影响 CF

算术逻辑单元(ALU)

  • 实现加减乘除等算数运算、与或⾮等逻辑运算

多路选择器(MUX)

  • 多个输入,一个输出

译码器(Decoder)

  • 根据 n bit 控制信号选择将 2𝑛条输出线路中的某⼀条信号选通为1
  • 控制信号:n bit。由译码器的 n bit输⼊即可决定选通哪根线

存储元件(时序逻辑元件)

普通寄存器

  • 关注具有特定⽤途的寄存器:MAR、MDR、IR、PC、FR(即标志寄存器,有的系统中称为PSW)
  • 控制信号:允许读、允许写

暂存寄存器

  • 通常会在单总线结构中和ALU配合使⽤
  • 控制信号:允许读、允许写

通⽤寄存器组

  • 控制信号1:允许读、允许写
  • 控制信号2:若通⽤寄存器组共有 2𝑛 个寄存器,则需要 n bit 控制信号选择其中⼀个寄存器

PS:有的寄存器可能⽀持特殊功能

  • 带“移位功能”的寄存器
    • 可以实现移位运算(算数左移/右移、逻辑左移/右移)
    • ⽤移位运算等价实现 “乘/除 2^n”
  • 带“⾃增、⾃减功能”的寄存器
    • 可实现寄存器的值++、--
    • 有的PC寄存器带有⾃增功能
  • 带其他特殊功能的寄存器
    • 带“符号扩展”功能的寄存器:可以将位数短的带符号数(补码)扩展为位数更⻓的带符号数(补码)
    • 带“零扩展”功能的寄存器:可以将位数短的⽆符号数扩展为位数更⻓的⽆符号数
    • 带“取反功能”的寄存器:可以实现全部位按位取反

数据通路

  • 数据通路:
    • 是指令的执⾏部件,包括运算器、寄存器、数据传输的线路、异常和中断的处理逻辑、组合逻辑电路和时序逻辑电路等
    • 由控制部件控制,不包含控制部件
    • 实现CPU内部的运算器与寄存器寄存器之间的数据交换
  • 数据通路的基本结构:
    • CPU内部单总线:
      • 较多冲突
      • 一个时钟内只允许传一个数据
    • CPU内部多总线
    • 专用数据通路:硬件量大
    •  PS:【内部总线是指同一个部件系统总线是指同一台计算机的各个部件之间

 微程序控制器

对应关系

一个程序对应多条指令,一条指令对应一个微程序,一个微程序对应多条微指令,一个微指令对应一个或多个微命令,一个微命令对应一个微操作。

工作过程

  1. 执行取微指令公共操作
  2. 由机器指令的操作码字段通过微地址形成部件产生该指令所对应的微程序的入口地址,并送入CMAR【微程序入口地址是机器指令的操作码字段产生的】
  3. 从CM中逐条取出对应的微指令并执行
  4. 执行完对应于一条机器指令的一个微程序后,又回到取指微程序的入口地址,继续第一步

 

编码方式/控制方式

目的

保证速度的情况下尽量缩短指令字长

直接编码方式

  • 无需进行译码,微指令的微命令字段中的每一位都代表一个微命令(选用“1”,不选用“0”)
  • 优点:简单、直观、执行速度快,操作并行性好
  • 缺点:微指令字长过长,n个微指令就要求微指令的操作字段有n位,造成控制存储器容量极大

字段直接编码法

  • 将微命令字段分成若干小字段,将互斥性微命令组合在同一字段中
  • 把相容性微命令组合在不同字段中,每个字段独立编码
  • 每种编码都代表一个微命令且各字段编码含义单独定义,与其他字段无关。
  • 优点:可以缩短微指令字长
  • 缺点:要通过译码电路之后再发出微命令,速度慢
  • 分段原则
    • 互斥性微命令组合在同一字段中,把相容性微命令组合在不同字段中
    • 每个小段中包含的信息位不能太多,否则将增加译码电路的复杂性和译码时间
    • 一般每个小段还要留出一个状态,表示本字段不发出任何微命令

 

地址形成方式

后继微地址的形成类型:

  • 直接由微指令的下地址字段指出。格式中设置一个下地址(断定方式)。
  • 根据机器指令的操作码形成。机器指令取至IR后,微指令的地址由操作码经微地址形成部件形成。
  • 增量计数器法(微地址连续)。根据各种标志决定微指令分支转移的地址
  • 通过测试网络形成。由硬件直接产生微程序入口地址

微指令的格式

水平型

垂直型

并行操作能力强,效率高,灵活性强

相反

执行一条指令的时间短

相反

微指令字位数较多,微程序较短

相反

用户难以掌握

与指令相似,用户好掌握

  • 直接由微指令的下地址字段指出。格式中设置一个下地址(断定方式)。
  • 根据机器指令的操作码形成。机器指令取至IR后,微指令的地址由操作码经微地址形成部件形成。
  • 增量计数器法(微地址连续)。根据各种标志决定微指令分支转移的地址
  • 通过测试网络形成。由硬件直接产生微程序入口地址
  • 执行取微指令公共操作
  • 由机器指令的操作码字段通过微地址形成部件产生该指令所对应的微程序的入口地址,并送入CMAR【微程序入口地址是机器指令的操作码字段产生的】
  • 从CM中逐条取出对应的微指令并执行
  • 执行完对应于一条机器指令的一个微程序后,又回到取指微程序的入口地址,继续第一步

高级流水线技术 

 

定义

特点

超标量流水线技术

动态多发射技术

 

 

  • 一个时钟周期内一条流水线可执行一条以上的指令
  • 并不影响流水线功能段的处理时间
  • 通过内置多条流水线来同时执行多个处理机,实际上是以空间换时间
  • 需要配置多个控制部件,功能部件,寄存器端口,总线和指令译码电路
  • 动态流水线的连接方式是可以变的能结合动态调度技术提高指令执行并行性

超长指令字技术

静态多发射技术

 

 

  • 由编译程序挖掘指令集中可以并行的指令,然后组合成一个具有多个操作码的超长指令字
  • 需要配置多个处理部件,对Cache的容量要求大
  • 静态流水线上下段连接方式固定

超流水线技术

提高主频来提高流水线性能

  • 流水线划分的段数越多,流水寄存器的开销就越大

多处理器概念

常考点

SISD/SIMD/MIMD的区分:

  1. 控制部件的多少决定是SI还是MI
  2. 处理数据单元的多少决定是SD还是MD

多处理机

  • 常规的多处理机属于MIMD
  • 真正的并行执行:在多核处理机中,必须采用多线程执行,使每个核在同一时刻都有线程在执行
  • 时间并行:流水线技术
  • 空间并行:硬件资源(如控制部件)的重复,空间并行导致SIMD和MIMD的产生

超程序技术
【虚双核】

  • 在一个CPU中,提供两套线程处理单元,让单个处理器实现线程级并行
  • 在CPU内部仅复制必要的线程资源来让两个线程同时运行
  • 共享CPU的高速缓存和功能部件
  • 能并行执行两个线程,模拟实体双核心
  • 含有超程序技术的CPU需要芯片组和应用软件的支持才能发挥技术优势
  • 当两个线程同时需要某个共享资源时,一个线程必须挂起等待

双核技术
【实双核】

  • 双核是指将两个CPU核心集成到一个封装中
  • 核心又叫内核,是CPU的重要组成部分
  • 主板上有两个CPU属于多处理机
  • 多核CPU的核心通常是对称的
  • 多核CPU公用一组内存,数据共享
  • 各个核可以有自己的Cache也可以共享Cache
  • 只有支持多线程的并行处理程序才能同时在多个核心上运行
  • 多任务系统/多道程序系统,可以运行在单核CPU上,宏观上并行,微观上串行

 

SISD,SIMD,MIMD的基本概念

  • 基于指令流的数量和数据流的数量,将计算机体系结构分为SISD,SIMD,MISD和MIMD

单指令流单数据流结构(SISD)
Single instruction, single data

  • 串行计算机结构
  • 通常只包含一个处理器和一个存储器
  • 有些使用流水线的方式,所以有时会设置多个功能部件,并采用多模块交叉方式组织存储器

单指令流多数据流结构(SIMD)

Single instruction, multiple data

  • 一个指令流同时对多个数据流进行处理,称为数据级并行技术
  • 由一个指令控制部件、多个处理单元组成
  • 每个处理单元虽然执行的都是同一条指令,但每个单元都有自己的地址寄存器,就有了不同的数据地址
  • 一个顺序应用程序被编译之后,可能按照SISD组织并运行于串行硬件上,也可能按SIMD组织并运行于并行硬件上
  • for循环效率高,但switch或case时效率低
  • 向量处理器也是SIMD的变体,是一种实现了直接操作一维数组(向量)指令集的CPU

多指令流单数据流结构(MISD)

Multiple instruction, single data

  • 同时执行多条指令,处理同一个数据
  • 实际上不存在这样的计算机

多指令流多数据流结构(MIMD)

Multiple instruction, multiple data

多计算机系统

  • 每个计算机节点都具有各自的私有存储器,并且具有独立的主存地址空间
  • 不能通过存取指令来访问不同节点的私有存储器
  • 而要通过消息传递进行数据传送,也称为消息传递MIMD

多处理器系统

  • 共享存储多处理器(SMP)系统的简称
  • 它具有共享的单一地址空间,通过访存指令来访问系统中的所有存储器,也称共享存储MIMD
  • 同时执行多条指令,处理多个不同的数据
  • 分为多计算机系统和多处理器系统

联系与区别

  • SIMD和MIMD是两种并行计算模式(多数据就是并行)
  • SIMD是一种数据级并行模式【数据级别】
  • MIMD是一种并行程度更高的线程级并行或线程级以上并行计算模式【线程级别】

其他相关概念(了解即可,重要的考点都列在上面的常考点表格中)

硬件多线程

细粒度多线程

  • 多个线程之间轮流交叉执行指令,多个线程之间的指令是互不相关的
  • 可以乱序并行执行
  • 该方式下,处理器能在每个时钟周期切换线程。

粗粒度多线程

  • 仅在一个线程出现较大开销的阻塞时,才切换线程;如Cache缺失
  • 当发生流水线阻塞的时候,必须清除被阻塞的流水线
  • 新线程的指令开始执行前需要重载流水线,开销较上一种较大

同时多线程(SMT)
又叫做超线程技术HT
 

  • 该技术在一个CPU中,提供两套线程处理单元,让单个处理器实现线程级并行
  • 超线程的性能并不等于两CPU的性能
  • 引入硬件多线程的目的:为了减少开销
  • 硬件多线程中必须为每个线程提供单独的通用寄存器组、单独的程序计数器等
  • 线程的激活只需要激活选中的寄存器,从而省略了与存储器数据交换的环节,节省了开销
  • 分类

多核处理器

  • 将多个处理单元集成到单个CPU中,每个处理单元称为一个核(core)
  • 每个核可以有自己的Cache,也可以共享一个Cache
  • 所有核一般都是对称的,并且共享主存,因此多核属于共享存储的对称多处理器
  • 在多核计算机系统中,若要充分发挥硬件的性能,必须采用多线程执行,使每个核在同一时刻都有线程在执行,这是真正的并行执行。

共享内存多处理器

统一存储访问(UMA)多处理器

  • 根据处理器与共享存储器之间的连接方式
  • 分为基于总线、基于交叉开关网络和基于多级交换网络连接等几种处理器
  • 每个处理器对所有存储单元的访问时间都是大致相同的

非统一存储访问(NUMA)多处理器

  • 处理器中不带高速缓存时,被称为NC-NUMA
  • 处理器中带有一致性高速缓存时,被称为CC-NUMA(某些访问请求要比其他的快)
  • 共享内存多处理器(SMP):具有共享的单一物理地址空间的多处理器
  • 处理器通过存储器中的共享变量相互通信,所有处理器都能通过存取指令访存任何存储器的位置
  • 即使这些系统共享同一个物理地址空间,它们仍然可以在自己的虚拟地址空间中单独地运行程序
  • 单一地址空间的多处理器分类

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1608022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

草稿 | word格式的网址索引

参考文献引用 参考文献上标设置&#xff1a;&#xff08;改为上标的快捷键为ctrlshift“”&#xff09; https://jingyan.baidu.com/article/cbcede07d786c743f50b4d47.html 多个参考文献一起引用&#xff1a; https://blog.csdn.net/neptune4751/article/details/119921187 交…

记录一下因为没等配置文件上传完就跑lg.sh导致f2.sh没起作用的原因

【背景说明】 我正在学习sgg的数仓采集项目&#xff0c;采集内容分为用户行为日志采集和MySQL的业务数据采集。 用户行为日志采集分为2个阶段&#xff1a; 阶段1&#xff1a;将日志文件的数据通过flume采集到kafka。我的这一步正常&#xff0c;kafka上有数据&#xff0c;即f…

Springboot配置文件(application.yml)的加载顺序

spring boot 启动会扫描一下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 file…/config/ file…/ classpath:/config classpath:/ 以上是按照优先级从高到低的顺序&#xff0c;所有位置的文件都会被加载&#xff0c;高优先级配置内容会…

Linux内核与基础命令学习总结

Linux操作系统 Linux操作系统博大精深&#xff0c;其中对线程&#xff0c;IO&#xff0c;文件系统等概念的实现都很有借鉴意义。 ​ 文件系统和VFS 文件系统的inode上面讲过了。VFS主要用于屏蔽底层的不同文件系统&#xff0c;比如接入网络中的nfs文件系统&#xff0c;亦或是w…

Pytest精通指南(20)日志收集器配置

文章目录 前言配置日志收集验证日志收集拓展-收集断言错误信息拓展-动态生成日志文件拓展-自定义封装日志收集类 前言 在pytest框架中&#xff0c;日志记录&#xff08;logging&#xff09;是一个强大的功能&#xff0c;它允许我们在测试期间记录信息、警告、错误等&#xff0c…

MongoDB扩大与谷歌云的合作,助推各行业客户部署和扩展新型应用

亮点前瞻 ● MongoDB Atlas Search Nodes现已在谷歌云&#xff08;Google Cloud&#xff09;上全面推出&#xff0c;让客户能够更轻松、更经济高效地隔离和扩展生成式AI工作负载 ●适用于MongoDB Atlas的Google Cloud Vertex AI扩展以及BigQuery与Spark的全新集成&#xff0c…

计算机软考流程介绍

笔者来介绍一下软考流程 1、考试简介 计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff1a;简称 计算机软考 认证&#xff1a; 国家人力资源和社会保障部 国家工业和信息化部 目的&#xff1a; 科学、公正地对全国计算机与软件专业技术人员进行职业资格…

PolarDB MySQL 版 Serverless评测|一文带你体验什么是极致弹性|后续

PolarDB MySQL 版 Serverless评测|一文带你体验什么是极致弹性|后续 弹性压测三后续自动缩容全局一致性测试测评体验 在上一篇PolarDB MySQL 版 Serverless测评博文中&#xff1a;https://developer.aliyun.com/article/1385834 关于弹性压测三通过增加只读节点压测来观测到Ser…

流程图的新语法-mermaid的快速使用--推荐

chatgpt或者现在的大数据采用的流程图给出的代码如下&#xff1a; graph TD;A[接收客户请求] --> B[问题分类];B --> C[技术支持];B --> D[维修服务];C --> E[远程解决];C --> F[现场支持];D --> G[维修完成];G --> H[服务反馈];style A fill:#f9f,strok…

为什么学习C++之前学习C语言?

源地址&#xff1a;https://www.ctvol.com/c-cdevelopment/4074.html C 读作“C加加”&#xff0c;是“C Plus Plus”的简称。顾名思义&#xff0c;C 是在C语言的基础上增加新特性&#xff0c;玩出了新规则&#xff0c;所以叫“C Plus Plus”,还有C#&#xff0c;当然C#一般是针…

刻度清晰耐酸碱腐蚀PFA材质实验室用塑料量具特氟龙量筒量杯

PFA量筒为上下等粗的直筒状&#xff0c;特氟龙量杯是上大下小的圆台形&#xff0c;底座均有宽台设计&#xff0c;保证稳定性&#xff0c;两者均可在实验室中作为定量量取液体的量具&#xff0c;上沿一侧有弧嘴设计&#xff0c;便于流畅地倾倒液体。 规格参考&#xff1a;5ml、…

机器人路径规划:基于Q-learning算法的移动机器人路径规划,可以自定义地图,修改起始点,提供MATLAB代码

一、Q-learning算法 Q-learning算法是强化学习算法中的一种&#xff0c;该算法主要包含&#xff1a;Agent、状态、动作、环境、回报和惩罚。Q-learning算法通过机器人与环境不断地交换信息&#xff0c;来实现自我学习。Q-learning算法中的Q表是机器人与环境交互后的结果&#…

(十八)C++自制植物大战僵尸游戏的游戏暂停实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/uzrnw 游戏暂停 当玩家遇到突发事件&#xff0c;可以通过暂停功能暂停游戏&#xff0c;以便及时处理问题。在激烈的游戏中&#xff0c;玩家可能需要暂停游戏来进行策略调整。此外&#xff0c;长时间的游戏对战可能会让玩…

开源相机管理库Aravis例程学习(二)——连续采集multiple-acquisition-main-thread

开源相机管理库Aravis例程学习&#xff08;二&#xff09;——连续采集multiple-acquisition-main-thread 简介例程代码函数说明arv_camera_set_acquisition_modearv_camera_create_streamarv_camera_get_payloadarv_buffer_newarv_stream_push_bufferarv_camera_start_acquisi…

一周IT资讯

又降了&#xff1f;运维4月平均月薪1W6&#xff1f; 薪资作为大部分人的主要收入来源&#xff0c;是每个人最关注的话题之一。 最近&#xff0c;小编搜索了近半年的运维薪资趋势&#xff0c;看看你的钱包缩水了没&#xff1f; *数据来自看准网 据了解&#xff0c;运维2024年…

【6】DongshanPI-Seven 应用开发_多线程编程记录

目录 1、多线程编程1.1 测试程序 1.2 测试结果 1、多线程编程 在Linux系统中&#xff0c;调度是以线程为单位的&#xff0c;资源分配是以进程为单位的。多进程是指多个main()函数的程序&#xff0c;多线程&#xff0c;只有1个main()函数。进程和线程是多任务操作系统中的两种不…

Linux 基于 UDP 协议的简单服务器-客户端应用

目录 一、socket编程接口 1、socket 常见API socket()&#xff1a;创建套接字 bind()&#xff1a;将用户设置的ip和port在内核中和我们的当前进程关联 listen() accept() 2、sockaddr结构 3、inet系列函数 二、UDP网络程序—发送消息 1、服务器udp_server.hpp initS…

【Flutter】自动生成图片资源索引插件一:FlutterAssetRefGenerator

介绍 FlutterAssetRefGenerator 插件&#xff1a;windows上 点击生成图片索引按钮后&#xff0c;pubspec.yaml 会出现中文乱码&#xff0c;需要手动改乱码&#xff1b;mac上没问题。 优点&#xff1a;点击图标自动生成。 目录 介绍一、安装二、使用 一、安装 安装FlutterAsset…

ubunt18.04安装ROS2

本文无废话&#xff0c;实现了ubunt18.04 下ros2的安装&#xff0c;并且同时兼容ros和ros2 如果想完ros&#xff08;1&#xff09;的&#xff0c;请参考我的前一篇文章&#xff1a;ubunt18.04安装ROS避坑指南 参考&#xff1a; https://blog.csdn.net/cau_weiyuhu/article/deta…