当前位置: 首页 > news >正文

《硬件架构的艺术》笔记(五):低功耗设计

介绍

能量以热量形式消耗,温度升高芯片失效率也会增加,增加散热片或风扇会增加整体重量和成本,在SoC级别对功耗进行控制就可以减少甚至可能消除掉这些开支,产品也更小更便宜更可靠。本章描述了减少动态功耗和静态功耗的各种技术。

功耗源

三个主要的功耗源:浪涌、静态功耗、动态功耗。

浪涌电流:器件上电时最大瞬时输入电流。浪涌电流在应用中也称为启动电流。浪涌电流与设备有关,如电机启动电流前几个周期时正常满载电流的数倍。

基于SRAM的FPGA也有很明显的浪涌电流,上电时器件没有配置,需要外部下载数据配置编程资源(查找表、布线资源)。反熔丝FPGA无需上电配置,所以没有浪涌电流。

待机电流:关断主电源或系统进入待机模式下产生的电流。待机电流产生的功耗称为待机功耗。待机功耗也与元件电气特征密切相关。待机功耗也称为静态功耗,静态功耗也包括晶体管漏电流产生的功耗。

动态功耗(开关功耗)是门电路输出转换时,由逻辑转换所引起的功耗。动态功耗定义公式:

逻辑0->1,电容充电;逻辑1->0,电容放电。

ASIC总功耗:

 在典型应用中,动态功耗占到了总功耗的80%

在各设计抽象层次降低功耗

 降低功耗应该在所有设计层次上进行:系统层、逻辑层、物理层。层次越高就可能越有效。

在高的抽象层次上进行功耗的优化效果更好,如在系统和体系结构级可以达到最大的降低效果。

 为了最大程度降低功耗,各抽象层次在设计时就要把功耗因素考虑在内。

 上面的100X打错了是100%

系统级低功耗技术

片上系统方法

纳米级高端芯片的IO使用比内核更高的电压供电(3V3),占总功耗的50%。如果整个系统包含多个芯片,这些芯片间的连线将产生大量功耗。片上系统方法学主要关注降低功耗,缩减面积以及降低成本的手段。

硬件/软件划分

嵌入式处理器在大规模数字系统中广泛使用,某些功能可以用硬件实现,其余部分可以用软件实现。

通信算法具有高度递归的性质,少量代码可以负责大量的处理任务。这些资源密集型模块用硬件识别和实现,就可以节约大量功耗。

 使用硬件综合工具从Verilog或者VHDL描述的模块中提取出物理模型。编译器也可以将用高级语言编写的程序编译成嵌入式处理器所使用的原生指令集。

一种比常规方式更有效的HW/SW划分方法是使用基于模型的方式,如下图。

 这是一种基于给定规范建立系统模型的想法。模型要么完全自己建立要么使用可复用的已有模型库。随着库的增加,可以大大缩短设计时间。

可以使用SystemC建立模型,该语言可以用于对硬件建模。

低功耗软件

修改应用程序可以节约大量能耗,得到“更绿色”和能效更高的系统。

高级语言便于使用,但是有些结构难以用其实现,使用高频轮询实现这样的结构,这会导致较高的能耗。所以使用高级语言时要避免使用复杂原语。

嵌入式应用使用的C代码可能会使用若干循环。一些应用中,90%的运行时间可能都在执行这些循环。

优化方法:合并循环,使执行的指令数减少。基于硬件体系结构或处理器指令和寄存器的实现。我理解的就是更高效的利用硬件,而不是通过软件程序。

选择处理器

首先要选择合适数据宽度的处理器。如果使用简单的MAC(Multiply Accumulate Unit)能满足运算要求,就没必要用专用的DSP处理器,这样可以显著降低功耗。

图中是一个节省功耗的系统体系结构。利用微处理器进行控制,同时用协处理器或DSP进行数据处理。最好的系统体系结构用特定的机器(协处理器)来执行这个任务,使任务在最小且能效最高的机器中完成。即特定功能使用特定硬件实现从而实现降低功耗的目的。大多数情况下,微处理器和协处理器不会并行运行。

体系结构级降低功耗技术

高级门控时钟

同步数字系统中,时钟分布贡献了整个数字开关功率中的绝大部分。很多情况可以通过门控时钟将绝大部分不使用的电路关闭。

插入门控时钟前和插入后电路功能并没有改变,所以可以用一致性检查工具进行验证。

组合门控时钟方案在输出不变时使触发器时钟失效,可以用于降低5%~10%的功耗。时序门控时钟能减少连接到带有门控时钟的寄存器块的设计部分的冗余切换。使用时序门控时钟时,后续的流水线阶段也使用同样的条件进行门控操作。

时序门控时钟在实现时会加入额外的逻辑,所以不适用于多位宽数据。

 使用门控时钟最大挑战:识别出流水线上“多余的”或“不关心”的状态。一旦该工作完成,时序门控时钟就可以降低大量功耗,典型情况可以降低15%~25%开关次数。根据文献,时序门控始终转换只有在多于16个触发器的情况下才更有效率。

动态电压频率调整(DVFS)

DVFS可以在对频率不敏感的应用阶段降低时钟速率和供电电压,在性能适度损失的情况下大幅降低功耗。

当今CMOS工艺的绝大多数处理最大频率往往与供电电压相关,所以在低频时处理器可以工作在低供电电压下,所以DVFS可以通过频率和电压调节节省大量能量。

DVS使用一个可编程的DC-DC开关电压调节器,一个可编程的时钟产生器和一个宽操作域的高性能处理器。

总之,通过负载动态调整处理器的电压和频率,DVS能提供峰值满足运算要求的性能,这种方法好处能体现在低性能处理器上。

基于缓存的系统体系结构

 FFT要求频繁访问系统存储器的数据,这样的存储器能效不高,增强型FFT体系结构需要在系统存储器或RAM与处理器之间增加缓存。

在处理器需要之前,预先将相关数据从主存中取到缓存。小范围的缓存能使计算能耗大量下降,极大地提高了FFT的能效。

对数FFT体系结构

大规模运算的应用,对数系统(LNS)比线性系统更好。LNS降低每个bit活跃度,并用加减法实现乘除运算,使其效率比线性系统更高。基于LNS实现FFT有节约大量功耗的可能。缺点是加法器和减法器的宽度会增加,导致需要以指数级增大的查找表。(这里没懂,google也没搜到)

异步(无时钟)设计

传统的设计方法学会形成大规模时钟数结构,潜在地增加了SoC的平均功耗。并且时钟分配网络的设计也耗费了设计者大量精力,最可能存在的问题是时钟偏移。另外一个问题就是相当大的功耗。

由于时钟会导致上述问题,所以从设计中移除时钟是一件很有诱惑力的想法。这就是异步设计的基本意图。但是不能简单地直接移除电路,一部电路本质上进行自我控制,因此也称为自定时电路。

异步系统两个模块使用握手接口进行交互,书里5.8的图应该给错了。

移除时钟使得能效提升。时钟耗费了许多能量,将其移除使得能效大大提升。除此之外,因为所有未工作元件几乎部消耗能量,所以异步电路动态功耗接近0.

异步电路依赖于延迟不敏感编码的信号交换接口,其中最流行的是双轨道编码。

双轨道编码用两根线传输每个数据位,因此称为双轨。双轨道编码一根线表示逻辑1,另一根表示逻辑0.两部分能可靠地彼此通信而不受线上延迟的影响。

电源门控

电源门控可以在模块不使用时暂时将其关闭。目的:减少晶体管漏电,可以在逻辑模块不操作时将其关闭。

两类电源门控:细粒度电源门控、粗粒度电源门控。

细粒度电源门控

每个门和地之间存在一个开关晶体管。

主要负担:库IP提供者、标准单元设计者身上。

电源门控尺寸必须能满足任何情况下对开关电流的要求。门必须较大以便不会引起可测量的压降。此外对头部开关PMOS和脚部开关NMOS做出选择。开关电流相同时,脚部开关面积更小。

 使用细粒度电源门控可以将漏电减少为原来的1/10.

粗粒度电源门控

粗粒度电源们空中,电源门控晶体管是供电网络的一部分而不是标准单元的一部分。本质是创建一个电源开关网络。

粗粒度不完全依赖于库的质量,EDA工具对其处理能力影响更大。

电压关闭区域的备用晶体管大小和数量会影响对该区域的驱动能力。这将导致IR降幅变化并使性能衰弱。所有头部开关同时再次打开,会有瞬间充放电电流和短路电流产生。这种电流综合称为上电冲击电流(感觉和浪涌电流差不多)。对于避免器件故障和潜在的芯片失效,这种电流是个关键。

 不管实现哪种类型的电源门控,都需要改变RTL,设计一个电源控制器对需要关闭的模块进行控制。百万门规模的AISC很轻易就有20个以上的电源域。这种规模的设计混用粗粒度和细粒度两种技术。

电源门控需要在“关闭”域和“开启”域之间的逻辑或信号上加入隔离的单元以保持设计完整性并避免功耗损耗。模块断电,输出浮动,可能在阈值电压内产生不期望的电流。所以需要隔离模块将下电模块输出信号固定在1或0.可用简单的或、与逻辑作为输出隔离器件。隔离单元要么在RTL插入,要么在指定参数和要插入的模块后由EDA工具自动插入。现在的EDA工具可以做到该功能,一部分综合时插入,其余的在布局布线时插入。

多阈值电压

多单元库包含至少两组功能相同但阈值电压不同的单元。高阈值电压单元较慢但是漏电少;低阈值电压更快但是漏电更多。

缺点:增加生产的复杂性、增加设计时间。设计不恰当的话可能导致使用功耗增加。

测试不同Vt单元是否能达到期望性能时,最好在综合和布局优化阶段进行。逻辑综合或优化过程的门级映射阶段由综合工具实现,布局优化由物理实现工具负责处理。

为满足性能,可以先用低阈值电压库进行综合满足时序要求,在吧不需要的高性能或低阈值单元用高阈值单元替换。原因:大多数应用是以满足时序要求为前提条件的。。低阈值电压库速度快,面积小,高阈值电压单元耗费更多运行时间,面积也更大。

若主要目标是功耗,第一遍综合则使用高阈值电压单元更合适,再用低阈值电压单元进行替换。

多电压供电

设计可以分割成独立的“电压域”,根据每个区域对时序的要求而使用不同的供电电压。

一种方法:时序要求严格的模块置于标准电压下操作。不那么严格的路径可以安排到其他区域。

过去这种方式需要手动插入指定的转换单元在,增加了设计的风险。现在很多EDA公司都能提供可以自动插入电平移位单元的工具。

存储器电源门控

典型SoC中SRAM消耗了总功耗的1/3,其余部分由时钟数和随机逻辑消耗。所以存储器架构十分关键。

最简单的方法:在不使用存储器矩阵时将其关闭。

可以讲存储器分割成多个部分,需要时打开。

划分成小块后,读周期总数仍是相同的,但是每个周期消耗的功耗会大大降低。

另一种技术:基底偏压存储器。在不使用存储体时将其反向偏置,提高了阈值电压降低了漏电功耗。

另一种方法:多模式给存储器供电。全电压供电保证对存储器操作正常进行,不需要读写时,可以编程降低其供电电压,仅保证数据不丢失。

使用堆叠式存储器:存储器堆叠在裸片(Die)上。堆叠式存储器显著降低了互联电容,并且降低了功耗。对存储器带宽要求高的场景中,相关存储器可以堆叠式封装,操作系统或其他应用则可以置于外部存储器中。

 在寄存器传输级降低功耗

RTL完成时80%的功耗就已经确定,后端不能解决所有功耗问题。

综合前RTL阶段就应讲与功耗有关的所有问题解决。

状态机编码与解码

格雷码在相邻状态转换时仅有一位发生变化,消耗能量更少。此外格雷码编码的状态机也消除了依赖于状态的组合等式中存在毛刺的风险。

 若使用别的编码风格,仍可以通过让翻转频率最高的状态有最少的翻转位数,降低功耗。

另一种方法:把FSM和STG(状态转移图)分解成两个,若两个子FSM之间没有转换发生,那么只有一个FSM需要供给时钟。

二进制数表示法

某些应用中,有符号数在切换过程中比补码更有优势。

 某些只使用积分器求和的应用,补码在0->1时所有位都会发生变化,而有符号数只有两位发生变化。

门控时钟基础

该RTL综合出的电路在load_cond为真时写入输入数据值,否则寄存器值保持不变。该RTL写法在clock线上推不出任何门控时钟。后端工具可能产生门控,但是不应依赖于这种方法。

上面这种编码方式后端环境设置会加入一个门控时钟取代32个多路复用门。

某些综合过程中未能识别的情况,可以明确地指定门控时钟对所有功能进行动态控制。

同样门控信号和数据通路重组(把容易产生毛刺或者会经常翻转电平的电路放在电路后级)都应在编写RTL时就予以考虑。

独热码多路器

 采用独热码编码,输出更快更稳定,并且初期就可以将未选中总线隐藏,实现了低功耗的效果。

除掉多余的转换

转换后的数据未被采样,就是多余的,将这样的转换去掉可以显著降低功耗。

图中AB和CD只有一组会最终输出,所有有一组的转换是多余的。

 优化后的电路只有一组输出会读入数据模块。

 5.21中数据会输入所有模块,但是只有选中的模块会输出,导致了不必要的功耗。

 修正好的逻辑消除了多余的转换。新增逻辑门只将信号输入到有用的模块上,降低了功耗。

资源共享

同样的操作多次使用,避免多个位置重复出现。

 这里中文版书value1>value2写成了value1==value2。下面的写法复用逻辑,同样可以减小功耗。

使用行波计数器降低功耗

 使用行波计数器会对STA和综合工具带来麻烦,应尽量避免,但是其使用的门更少,电平的翻转也更少,可以降低功耗。

由于寄存器存在传播延迟,所以较高位相对于降低有效位更晚发生变化。时钟行进时有毛刺会导致错误的结果。

时钟行进延时累计,也会导致短暂出现错误的值。

 这种效应在大部分场景可以接受,如控制LED闪烁,但是该信号驱动多路数据选择器就可能导致错误输出。

行波计数器中每一个阶段都产生了一个新的时钟域,这就需要STA工具处理更多的时钟域,消耗更多时间。

同时行波计数器会为扫描链插入增加难度。

上面接收电路低有效才读入数据。相当于把还在转换的过程给屏蔽掉了。

使用行波计数器必须从正反两方面加以权衡。

总线翻转

 当前数据与下一个数据汉明距离大于N/2,将数据反向后传输,以减少总线上出现的转换的位数量。

 这项技术需要数据伴随着额外的控制位,表示数据是否已反转。从上图可以看出反转后数据转换的区别很明显。(不过感觉数据在传输前后的反转也要算进去 才对呀)

高活跃度网络

思路:将活跃度高的网络从活跃度较低的网络区区分出来,并将其置于逻辑云尽可能深的位置。

 X变化频率低,Y是高活跃度网络。图中将Y=0,Y=1分成两个逻辑云,再根据Y的值选择使用哪一个。分开后的逻辑云没有Y,整体就不活跃了,规模也更小。这样就可以降低功耗了。

某些降低功耗的EDA工具自动实现上述低功耗策略。

启用和禁用逻辑云

操作大规模逻辑云(宽加法器、乘法器),在需要时才将其打开。

 上图在数字逻辑前加了一个使能,在不需要逻辑云时禁用它。

寄存器级低功耗技术

技术水平

更先进的硅处理技术,可以额外降低功耗。

版图优化

版图阶段优化可以显著降低功耗。理想布线所有有直接关联的模块在硅片上都紧密挨在一起。长布线会增加功耗,但是复杂的SoC使得越来越难以达到这种结果。

衬底偏压

将衬底或合适的阱区电压偏置,以提高晶体管阈值,减少漏电。

 阈值电压升高会影响性能,可以动态偏置,工作模式下保持较小的偏置电压,保持模式下加强偏置电压。臣弟便宜效果和工艺尺寸有关,所以在使用更小尺寸时,衬底偏压的效果会大大降低。

减小氧化层厚度

把栅氧化层尽可能做薄,使导通时沟道导电性和性能增至最大,晶体管关闭时将漏电流降到最低。在栅氧化层厚度1.2nm附近,会产生电子隧道效应的量子力学现象,增加功耗。

多氧化层器件

同5.7.4,厚氧化层头/尾可以用于压制栅极漏电。

利用定制设计减小电容

 亚微米技术中Cw是最主要的一种电容,也是最难估计的。必须将串扰之类的复杂效应考虑在内。

使用定制设计对参数可以有更好的控制。

相关文章:

《硬件架构的艺术》笔记(五):低功耗设计

介绍 能量以热量形式消耗,温度升高芯片失效率也会增加,增加散热片或风扇会增加整体重量和成本,在SoC级别对功耗进行控制就可以减少甚至可能消除掉这些开支,产品也更小更便宜更可靠。本章描述了减少动态功耗和静态功耗的各种技术。…...

Hive离线数仓结构分析

Hive离线数仓结构 首先,在数据源部分,包括源业务库、用户日志、爬虫数据和系统日志,这些都是数据的源头。这些数据通过Sqoop、DataX或 Flume 工具进行提取和导入操作。这些工具负责将不同来源的数据传输到基于 Hive 的离线数据仓库中。 在离线…...

鱼眼相机模型-MEI

参考文献: Single View Point Omnidirectional Camera Calibration from Planar Grids 1. 相机模型如下: // 相机坐标系下的点投影到畸变图像// 输入:相机坐标系点坐标cam 输出: 畸变图像素点坐标disPtvoid FisheyeCamAdapter::…...

GPT系列文章

GPT系列文章 GPT1 GPT1是由OpenAI公司发表在2018年要早于我们之前介绍的所熟知的BERT系列文章。总结:GPT 是一种半监督学习,采用两阶段任务模型,通过使用无监督的 Pre-training 和有监督的 Fine-tuning 来实现强大的自然语言理解。在 Pre-t…...

微软Ignite 2024:建立一个Agentic世界!

在今年的Microsoft Ignite 2024上,AI Agent无疑成为本次大会的重点,已经有十万家企业通过Copilot Studio创建智能体了。微软更是宣布:企业可以在智能体中,使用Azure目录中1800个LLM中的任何一个模型了! 建立一个Agent…...

windows C#-属性

属性提供了一种将元数据或声明性信息与代码(程序集、类型、方法、属性等)关联的强大方法。将属性与程序实体关联后,可以使用称为反射的技术在运行时查询该属性。 属性具有以下属性: 属性将元数据添加到您的程序中。元数据是有关程序中定义的类型的信息…...

深入浅出:JVM 的架构与运行机制

一、什么是JVM 1、什么是JDK、JRE、JVM JDK是 Java语言的软件开发工具包,也是整个java开发的核心,它包含了JRE和开发工具包JRE,Java运行环境,包含了JVM和Java的核心类库(Java API)JVM,Java虚拟…...

如何在 Eclipse 中调试ABAP程序

原文链接:Debugging an ABAP Program ADT 中的调试器是一个重要的诊断工具,可用于分析 ABAP 应用程序。 使用调试器,您可以通过在运行时 Debug 单步执行(F5)程序来确定程序无法正常工作的原因。这使您可以看到正在执…...

websocket是什么?

一、定义 Websocket是一种在单个TCP连接上进行全双工通信的协议,它允许服务器主动向客户端推送数据,而不需要客户端不断的轮询服务器来获取数据 与http协议不同,http是一种无状态的,请求,响应模式的协议(单向通信)&a…...

Java项目实战II基于微信小程序的图书馆自习室座位预约平台(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在知识爆炸的时代,图书馆和…...

5.算法移植第六篇YOLOV5 /onnx模型转换成rknn

上两篇文章讲述了pytorch模型下best.pt转换成onnx模型,以及将onnx进行简化成为best-sim.onnx, 接下来这篇文章讲述如何将onnx模型转换成rknn模型,转换成该模型是为了在rk3568上运行 1.创建share文件夹 文件夹包含以下文件best-sim.onnx,rknn-tookit2-…...

微知-DOCA SDK中如何编译一个sample?如何运行?(meson /tmp/xxx; meson compile -C /tmp/xxx)

文章目录 快速回忆背景前期准备DOCA SDK中的例子情况编译编译request编译responser 执行测试启动响应端启动请求端查看响应端 综述参考 快速回忆 # 生成编译目录和相关文件 cd /opt/mellanox/doca/samples/doca_rdma/rdma_write_requester meson /tmp/req #将编译目录指定到/t…...

【Leetcode 每日一题】146. LRU 缓存(c++)

146. LRU 缓存 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值&#x…...

【机器学习】近似分布的熵到底是p(x)lnq(x)还是q(x)lnq(x)?

【1】通信的定义 信息量(Information Content)是信息论中的一个核心概念,用于定量描述一个事件发生时所提供的“信息”的多少。它通常用随机变量 𝑥的概率分布来定义。事件 𝑥发生所携带的信息量由公式给出&#xff1…...

网络安全,文明上网(6)网安相关法律

列举 1. 《中华人民共和国网络安全法》: - 这是中国网络安全的基本法律,于2017年6月1日开始实施。该法律明确了网络运营者的安全保护义务,包括采取数据分类、重要数据备份和加密等措施。 2. 《中华人民共和国数据安全法》: …...

网络安全学习74天(记录)

11.21日,今天学习了 app抓包(需要的工具charles(激活),夜神模拟器,postern,) 思路:首先charles需要抓取的app的包,需要的是装证书,将charles的证…...

Spring Boot 实战:基于 Validation 注解实现分层数据校验与校验异常拦截器统一返回处理

1. 概述 本文介绍了在spring boot框架下,使用validation数据校验注解,针对不同请求链接的前端传参数据,进行分层视图对象的校验,并通过配置全局异常处理器捕获传参校验失败异常,自动返回校验出错的异常数据。 2. 依赖…...

20241125复盘日记

昨日最票: 南京化纤 滨海能源 广博股份 日播时尚 众源新材 返利科技 六国化工 丰华股份 威领股份 凯撒旅业 华扬联众 泰坦股份 高乐股份高均线选股: 理邦仪器高乐股份日播时尚领湃科技威领股份资金最多的票: 资金攻击最多的票: …...

【Excel】拆分多个sheet,为单一表格

Private Sub 分拆工作表() Application.ScreenUpdating True 让屏幕显示操作过程, Dim sht As Worksheet Dim MyBook As Workbook Set MyBook ActiveWorkbook For Each sht In MyBook.Sheets If sht.Visible True Then 隐藏的sheet跳过,否则会报1004无…...

类和对象plus版

一.类的定义 1.1类定义的格式 图中class为关键字,Stack为类的名字,用{}框住类的主体,类定义完后;不能省略。 为了区分成员变量,一般习惯在成员变量前面或后面加一个特殊标识,_或者m_ 1.2访问限定符 c采用…...

Cursor实现用excel数据填充word模版的方法

cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

零基础设计模式——行为型模式 - 责任链模式

第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM&#xff09…...

【生成模型】视频生成论文调研

工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...