计算机组成与系统结构复习笔记

news2024/11/30 9:53:01

1 概念

冯·诺伊曼机: ①采用存储程序工作方式: 事先编制好的程序和原始数据送入主存后执行, 取指令 → \to 指令译码并计算下条指令地址 → \to 取操作数并执行 → \to 结果送回主存, 自动逐条执行指令直至程序结束; ②由运算器, 存储器, 控制器, 输入设备, 输出设备 5 部分组成; ③指令和数据均以二进制代码表示, 同等地位存储, 形式上无区别但机器可以区分; ④指令由操作码和地址码组成, 操作码指出指令类型, 地址码指出操作数地址.
(未完待续)

2 计算

2.1 数据表示与运算

定点数: 真值 − - 整数部分除 2 2 2 取余, 小数部分乘 2 2 2 取整; 最高位为符号位, 正数取 0 0 0, 负数取 1 1 1 → \to 原码 − - 按位取反( ∼ \sim ) → \to 反码 − - 1 1 1 → \to 补码.

异号相加, 同号相减, 永不溢出.
正溢: 正数相加或正数减负数为负 - 本应为正.
负溢: 负数相加或负数减正数为正 - 本应为负.
双符号位: “00” 正数, “11” 负数; “01” 正溢, “10” 负溢.

带标志加减法器: S U B = 1 {\rm SUB}=1 SUB=1 时为减法; a − b = a + ( ∼ b + 1 ) a-b=a+(\sim b+1) ab=a+(b+1).

标志位 1 1 1 时含义表达式
ZF 零标志结果为 0 0 0-
OF 溢出标志带符号加/减法溢出; 无符号加/减法进错位 c n − 1 ⊕ c n − 2 c_{n-1}\oplus c_{n-2} cn1cn2
最高位进位和次高位进位异或
SF 符号标志结果为负-
CF 进/错位标志无符号加/减法溢出; 带符号加/减法进错位 c n − 1 ⊕ S U B c_{n-1}\oplus {\rm SUB} cn1SUB
最高位进位异或减法标志

原码一位乘法: 符号位单独考虑, 类似于竖式计算.
原码加减交替除法: 类似于竖式除法, 默认上商为 1 1 1; 减去除数中间余数为负时, 上商修改为 0 0 0, 下一轮改为加上除数.
补码除法仅当 − 2 n − 1 / 1 -2^{n-1}/1 2n1/1 时会溢出.

单精度浮点数(32b)符号 s s s (1b)阶码 e e e (8b; 偏置127)尾数 f f f (23b)
规格化非零数0 或 1 0 < e < 25 5 ( 10 ) 0<e<255_{(10)} 0<e<255(10)任意 ( − 1 ) s × 2 e − 127 × ( 1. f ) (-1)^s\times2^{e-127}\times(1.f) (1)s×2e127×(1.f)
正零000 + 0 +0 +0
负零100 − 0 -0 0
正无穷大0全 1; 即 255 ( 10 ) _{(10)} (10)0 + ∞ +\infty +
负无穷大1全 10 − ∞ -\infty
非规划化数(下溢)0 或 10非 0 ( − 1 ) s × 2 − 126 × ( 0. f ) (-1)^s\times2^{-126}\times(0.f) (1)s×2126×(0.f)
非数0 或 1全 1非 0NaN

浮点数加减计算:
①对阶: 小阶向大阶对齐, 隐藏位还原到尾数.
②尾数加减: 定点原码加减, 注意符号.
③规格化: 右规时尾数右移, 阶码加 1 1 1; 左规时尾数左移, 阶码减 1 1 1; 右规至多一次.
④尾数舍入: 保护位 + + +舍入位 + + +粘位; 就近舍入( 0 0 0 1 1 1 入), 向 + ∞ +\infty + 舍入, 向 − ∞ -\infty 舍入, 向 0 0 0 舍入.
⑤溢出判断: 右规时会发生阶码上溢;左规时会变为非规格化数.

2.2 性能指标

1 1 1GB = 2 10 =2^{10} =210MB = 2 20 =2^{20} =220KB = 2 30 =2^{30} =230B = 2 33 =2^{33} =233b.
存储字数: 存储器地址空间大小.
字长: 一次存取操作的数据量.
主存带宽: 最高数据传输速率.
存取时间: 启动存储器操作到完成操作所经历的时间; 读出时间, 写入时间.
存取周期: 进行一次完整读/写操作所需的全部时间, 即连续两次独立访存之间所需的最小时间间隔.
存储容量 = = =存储字数 × \times ×存储字长.
单位成本 = = =总成本 / / /总容量.
数据传输速率 = = =数据宽度 / / /存取周期.

刷新周期: 刷新信号的时间间隔.
死区时间: 无法进行读/写操作的时间.
刷新时间 = = =读写周期.
集中刷新死区时间 = = =主存行数 × \times ×刷新时间.
集中刷新死区率 = = =死区时间 / / /刷新周期.
分散刷新存取周期 = 2 × =2\times =2×存取周期.
异步刷新行间隔时间 = = =刷新周期 / / /主存行数.
异步刷新死区时间 = = =读写周期.

模块字长 = = =字长 × \times ×模块数
顺序访存时间 = = =模块数 × \times ×存取周期.
交叉访存时间 = = =存取周期 + ( +( +(模块数 − 1 ) × -1)\times 1)×总线周期.

数据线位数 = = =字长 / / /位扩展倍数.
片选线位数 = log ⁡ 2 =\log_2 =log2字扩展倍数.
SRAM 地址线位数 = log ⁡ 2 ( =\log_2( =log2(总容量 / / /寻址单元( 1 1 1B 或字长) ) ) ).
DRAM 地址线位数 = = =SRAM 地址线位数 / 2 /2 /2.
引脚数 = = =数据线位数 + + +片选线位数 + + +地址线位数 + + +控制线位数( 1 1 1 2 2 2).

Cache 命中率 = ( =( =(访存总次数 − - 访问主存次数 ) / )/ )/访存总次数.
平均访存周期(同时访问) = = =命中率 × \times ×Cache 存取周期 + ( 1 − +(1- +(1命中率 ) × )\times )×主存存取周期.
平均访存时间(Cache 先行) = = =Cache 存取周期 + ( 1 − +(1- +(1命中率 ) × )\times )×主存存取周期.
Cache 系统效率 = = =Cache 存取周期 / / /平均访存周期.

1 1 1GHz = 1 0 3 =10^3 =103MHz = 1 0 9 =10^9 =109Hz; 1 1 1s = 1 0 3 =10^3 =103ms = 1 0 6 =10^6 =106μs = 1 0 9 =10^9 =109ns.
吞吐量/带宽: 单位时间内处理请求数量, 主要取决于主存存取周期.
响应时间: 用户发送请求到对请求做出响应并获取所需结果的时间.
时钟周期: 主时钟脉冲信号宽度, CPU 工作最小时间单位.
主频: 每秒时钟周期数.
CPU 时间: 实际运行时间; 取决于主频, CPI, 指令条数.
时钟周期(ns) = 1 / =1/ =1/主频(GHz).
CPU 时间(ns) = = =平均时钟周期数 × \times ×时钟周期.
CPI(平均执行一条指令所用的时钟周期) = = =平均时钟周期数 / / /指令条数.
MIPS(平均每秒执行百万条指令数) = = =指令条数 / ( /( /(执行时间(s) × 1 0 6 ) = \times 10^6)= ×106)=主频 / ( /( /(CPI × 1 0 6 ) \times 10^6) ×106).

流水线完成时间 = ( =( =(指令条数 + + +过程段数 − 1 ) × -1)\times 1)×时钟周期.
流水线吞吐率 = = =指令条数 / / /流水线完成时间.
流水加速比 = ( =( =(指令条数 × \times ×过程段数 × \times ×时钟周期 ) / )/ )/流水线完成时间.

总线时钟周期: 即机器的时钟周期.
总线时钟频率: 一秒内时钟周期数.
总线传输周期: 一次总线操作所需的时间, 若干个时钟周期; 申请, 寻址, 传输, 结束.
总线工作频率: 一秒内传输周期数.
总线宽度: 同时传输的数据位数.
总线带宽: 最大传输速率.
总线带宽 = = =总线工作频率 × \times ×总线宽度.
信号线数 = = =地址总线数 + + +数据总线数 + + +控制总线数.

每秒 I/O 处理次数 = = =外设数据传输速率 / / /I/O 接口缓冲寄存器容量.
I/O 处理频率 = = =每秒 I/O 处理次数 × \times ×I/O 处理时钟周期.

3 设计

3.1 格式

定长指令扩展操作码: 操作码 || 地址 k k k || 地址 k − 1 k-1 k1 || … ; 指令总长为 n n n, k k k 个地址总长为 m m m, 第 k k k 个地址长为 m k m_k mk, 若已分配 N k N_k Nk k k k-地址指令, 则还可分配 2 m k ( 2 n − m − N k ) 2^{m_k}(2^{n-m}-N_k) 2mk(2nmNk) k − 1 k-1 k1-地址指令.
定长指令多种寻址: 操作码 || 寻址特征 || 形式地址(A).

指令寻址: 顺序寻址, 即 PC 自增; 跳跃寻址, 即将 PC 修改为 JMP 后的地址.

数据寻址有效地址(EA)寻址范围访存次数
立即寻址A 即为操作数-0
直接寻址EA = = =A 2 n 2^n 2n1
间接寻址EA = = =(A) 2 m 2^m 2m2
寄存器寻址EA = = =R-0
寄存器间接寻址EA = = =® 2 r 2^r 2r1
相对寻址EA = = =(PC) + + +A 2 n 2^n 2n1
基址寻址EA = = =(BR) + + +A 2 n 2^n 2n1
变址寻址EA = = =A + + +(IX) 2 r 2^r 2r1
隐含寻址EA 2 _2 2=R00
堆栈寻址进出栈时自动加减 SP-1

形式地址 n n n bit; 主存字长 m m m bit; 寄存器字长 r r r bit.

中断屏蔽字: 需要屏蔽的中断源(优先级低于自身)及自身的位置 “1”, 优先级高于自身的位置 “0”; 即优先级最高中断源屏蔽字全 “1”, 优先级最低中断源屏蔽字除自身位外全 “0”.

虚拟地址-物理地址转换: 虚页号 || 偏移 → \to 物理页号 || 偏移.
页表行: 标记/虚页号 || 有效位/装入位(页面是否已调入主存) || 脏位/修改位(是否修改过; 写回) || 引用位/使用位(替换策略) || 物理页号.

顺序多体并行存储器(高位交叉编址): 片内地址 = = =体号 || 体内地址.
交叉多体并行存储器(低位交叉编址): 片内地址 = = =体内地址 || 体号.
主存字扩展: 主存地址 = = =片选(高位) || 片内地址(低位).

Cache 行: 有效位 || 脏位 || 引用位 || 标记 || 数据.
直接相联映射: 固定位置; 标记 || 行号 || 偏移; 行号 = = =主存块号 mod Cache 行数; 标记位数 = log ⁡ 2 =\log_2 =log2主存块数 − log ⁡ 2 -\log_2 log2Cache 行数.
全相联映射: 任意位置; 标记 || 偏移; 标记位数 = log ⁡ 2 =\log_2 =log2主存块数.
组相联映射: 固定组内任意位置; 标记 || 组号 || 偏移; 组号 = = =主存块号 mod Cache 组数; 标记位数 = log ⁡ 2 =\log_2 =log2主存块数 − log ⁡ 2 -\log_2 log2Cache 组数; 组内 r r r 行即为 r r r-路组相联.
主存块数 = = =主存容量 / / /Cache 行长.
Cache 大小 = ( 1 =(1 =(1(仅考虑有效位) + + + 标记位数 + log ⁡ 2 +\log_2 +log2Cache 行长 ) × )\times )× Cache 行数.

I/O 端口: I/O 接口中可被 CPU 直接访问的寄存器; 数据端口(可读可写), 状态端口(仅可读), 控制端口(仅可写).
独立编址(I/O 映射): 独立于主存地址对所有 I/O 端口单独编址, 通过专门 I/O 指令表明访问 I/O 地址, I/O 指令地址码给出端口号.
统一编址(存储器映射): 主存地址分出一部分作为 I/O 端口地址, 根据地址范围区分主存和 I/O 端口.

水平型微指令: 操作控制 || 顺序控制(判断测试 || 后继地址).
直接编码: 操作控制每一位对应一个微命令, 选用时该位置 “1”; n n n 个微命令需要 n n n 位.
字段直接编码: 操作控制分段, 互斥微命令在同一段, 相容微命令在不同段, 通过译码器发出控制信号; n n n 位段可表示 2 n − 1 2^n-1 2n1 个互斥微命令, 预留 “000” 表示不操作.
字段间接编码: 字段中某些微命令需要另一个字段中某些微命令解释.
垂直型微指令: μOP(微操作码) || Rd(目的地址) || Rs(源地址).

硬布线逻辑表达式: 微操作 = ∑ =\sum =指令周期 ⋅ \cdot 节拍 ⋅ ( ∑ \cdot(\sum (当前指令周期当前节拍需要执行微操作的指令 ) ) ); + + + 为逻辑或, ⋅ \cdot 为逻辑与.
硬布线控制器节拍: 每个周期有 3 3 3 个节拍; 位操作先后顺序固定; 被控对象不同的微操作尽量在一个节拍内; 占用时间较短的多个微操作尽量安排在一个节拍内并允许有先后顺序.
微程序控制器节拍: 在硬布线控制器节拍基础上, 节拍间插入一个节拍用来确定下一条微指令地址, 故每个周期 6 6 6 个节拍.

3.2 流程

读写时序
t R C t_{RC} tRC 为读周期时长; t W C t_{WC} tWC 为写周期时长.
通常 W E ‾ \overline{\rm WE} WE 高电平时为读信号, 低电平为写信号.

指令周期: 取指周期 → \to 间址周期 → \to 执行周期 → \to 中断周期.
取指周期(FE): 取指令; PC → \to MAR → \to 地址总线 → \to 存储器, CU 读命令 → \to 控制总线 → \to 存储器, 存储器 → \to 数据总线 → \to MDR → \to IR, CU 控制信号 → \to PC 自增指向下一条指令.
间址周期(IND): 取操作数有效地址; Ad(IR) → \to MAR → \to 地址总线 → \to 存储器, CU 读命令 → \to 控制总线 → \to 存储器, 存储器 → \to 数据总线 → \to MDR.
执行周期(EX): 取操作数并根据操作码产生执行结果.
中断周期(INT): 处理中断请求, 程序断点存入堆栈, SP 指向栈顶; CU 控制信号 → \to SP 自减, SP → \to MAR → \to 地址总线 → \to 存储器, CU 写命令 → \to 控制总线 → \to 存储器, PC → \to MDR → \to 数据总线 → \to 存储器, CU 中断服务程序入口地址 → \to PC.

异常/中断处理: 关中断 → \to 保存现场 → \to 异常/中断识别与处理 → \to 恢复现场.
关中断: 置 IF = 0 =0 =0 表示不允许响应新的中断.
保存现场: 程序断点(地址)送入栈或特定寄存器中保存, 被中断时的程序状态字寄存器 PSW 内容送入栈或特定寄存器中保存.
异常/中断识别与处理: 软件识别, CPU 设置状态寄存器记录原因, 系统使用统一查询程序查询状态寄存器以确定类型; 硬件识别(向量中断), 对应处理程序首地址即中断向量, 查询中断向量表转到处理程序.
恢复现场: 程序断点送回 SP, 程序状态送回 PSW.

多重中断运行轨迹: 优先级较低的中断会被优先级较高的中断中断.

指令流水线: 取指(IF) → \to 译码/读寄存器(ID) → \to 执行/计算地址(EX) → \to 访存(MEM) → \to 写回(WB).

指令流水线甘特图

总线事务: 请求 → \to 仲裁 → \to 寻址 → \to 传输 → \to 释放.
总线定时: 接发双方数据交换过程中总线需要时间上配合关系的控制.
同步定时: 统一时钟信号协调接发双方传送定时关系.
异步定时: 主设备发出请求信号, 从设备接收后发出回答信号.
不互锁: 主设备请求后不等待回答经过一段时间即撤销, 从设备接收并发出回答后经过一段时间即撤销.
半互锁: 主设备请求后必须等待回答才撤销, 从设备接收并发出回答后经过一段时间即撤销.
全互锁: 主设备请求后必须等待回答才撤销, 从设备接收并发出回答后必须等待主设备先撤销请求才撤销.
半同步定时: 信号发出严格参照系统时钟前沿开始, 界首市采用系统时钟后沿时刻识别, 允许设备不同速度; 增设 Wait 响应信号线, 每个时钟到来时采样 Wait 信号线直至有效.
分离定时: 请求和应答分离, 占用总线时直接发送数据而后立即释放.

异步定时

主设备: 获得总线控制权.
从设备: 被主设备访问, 只能响应主设备发来的命令.
总线仲裁: 多个设备争抢总线控制权时, 选择一个设备优先获得控制权.
集中仲裁: 由总线控制器判优; 请求信号发送到中央控制器 → \to 控制器发送允许信号到指定设备 → \to
分布仲裁: 主模块拥有独立仲裁器与仲裁号; 仲裁号发送到共享仲裁总线 → \to 仲裁器接收后与自己仲裁号比较 → \to 优先级低的不予响应并撤销仲裁号.

链式查询: 轮询固定从 0 0 0 开始.

链式查询仲裁

计数器查询: 轮询可从任意位置开始.
计数查询仲裁

独立请求: n n n 个设备需要 2 n + 1 2n+1 2n+1 个控制线.
独立请求仲裁
程序查询: CPU 预置传送参数 → \to 向 I/O 接口发出命令字启动设备 → \to 从接口读取状态信息 → \to 周期性或持续查询状态信息直至准备就绪 → \to 传送数据 → \to 修改地址和计数器 → \to 继续读取状态信息直至计数器为 0 0 0.
程序中断: I/O 设备就绪 → \to 主动向 CPU 发出中断请求 → \to 中断处理, 中断服务程序完成数据传送.
DMA: DMA请求 → \to 预处理 → \to 数据传送 → \to 后处理.
预处理: 主存起始地址 → \to AR(主存地址计数器), I/O 设备地址 → \to DAR(设备地址计数器), 传送长度 → \to WC(传送长度计数器), 启动 I/O 设备.
数据传送: I/O 设备向数据缓冲器写入数据直至将要溢出.
后处理: 将要溢出时发起中断请求, CPU 或主存读取数据.
传送方式: 停止 CPU 访存; DMA 和 CPU 交替访存; 周期挪用/窃取(CPU 正在访存时等待存取周期结束; 同时请求访存时 DMA 优先).

微指令执行过程: 取指令微程序 → \to 指令对应微程序 → \to 回到取指令微程序入口地址.
取指令微程序: 取指令微程序入口地址(0 号单元) → \to μPC, (CM)(控制存储器) → \to μIR; 执行后主存中取出指令已存入 IR.
指令对应微程序: 指令操作码通过微指令地址形成部件产生指令对应微程序入口地址 → \to μPC, (CM) → \to μIR; 逐条取出并执行微指令, 微指令中后继地址 → \to μPC.

3.3 结构

主存与 CPU 连接
n n n 倍字扩展时, 地址线高 log ⁡ 2 n \log_2 n log2n 位用于片选接 log ⁡ 2 n \log_2 n log2n- n n n 译码器.

数据通路
带标志加法器
FA 为全加器; O F = C n ⊕ C n − 1 {\rm OF}=C_n\oplus C_{n-1} OF=CnCn1, S F = F n − 1 {\rm SF}=F_{n-1} SF=Fn1, Z F = ∼ F {\rm ZF}=\sim F ZF=∼F, C F = C o u t ⊕ C i n {\rm CF}=C_{\rm out}\oplus C_{\rm in} CF=CoutCin.
32 位无符号乘法器
32 位无符号除法器
初始化: Y Y Y=乘数, P = 0 P=0 P=0, 进位寄存器 C = 0 C=0 C=0, C n = 32 C_n=32 Cn=32.
C C C || P P P || Y Y Y 整体右移, 最高位进位移入结果, 仅当乘数当前最低位为 1 1 1 时进行加法, C = C F C={\rm CF} C=CF, C n C_n Cn 自减直至为 0 0 0.
最终 Y Y Y 为乘积.

初始化: R = 0 R=0 R=0, Q = Q= Q=被除数, C n = 32 C_n=32 Cn=32.
默认做减法, Q Q Q 低位上商为 1 1 1; S F = 1 {\rm SF}=1 SF=1 时(即中间余数为负), 下一轮改为加法, Q Q Q 低位上商改为 0 0 0; R R R || Q Q Q 整体左移, C n C_n Cn 自减直至为 0 0 0.
最终 Q Q Q 为商; R R R 为正时为余数, 为负时加回除数得到余数(恢复余数).

微程序控制器

单总线结构
总线结构

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

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

相关文章

CIKM23|基于会话推荐的因果关系引导图学习

论文链接&#xff1a;https://www.researchgate.net/profile/Dianer-Yu/publication/373143453_Causality-guided_Graph_Learning_for_Session-based_Recommendation/links/652b3fe006bdd619c48fdd00/Causality-guided-Graph-Learning-for-Session-based-Recommendation.pdf 这…

Milvus 2.5:全文检索上线,标量过滤提速,易用性再突破!

01. 概览 我们很高兴为大家带来 Milvus 2.5 最新版本的介绍。 在 Milvus 2.5 里&#xff0c;最重要的一个更新是我们带来了“全新”的全文检索能力&#xff0c;之所以说“全新”主要是基于以下两点&#xff1a; 第一&#xff0c;对于全文检索基于的 BM25 算法&#xff0c;我们采…

【机器学习】机器学习的基本分类-监督学习-逻辑回归-Sigmoid 函数

Sigmoid 函数是一种常用的激活函数&#xff0c;尤其在神经网络和逻辑回归中扮演重要角色。它将输入的实数映射到区间 (0, 1)&#xff0c;形状类似于字母 "S"。 1. 定义与公式 Sigmoid 函数的公式为&#xff1a; 特点 输出范围&#xff1a;(0, 1)&#xff0c;适合用…

C++游戏开发入门:如何从零开始实现自己的游戏项目?

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C游戏开发的相关内容&#xff01; 关于【…

HTTP(网络)

目录 1.Http的基本代码 1.1 HttpServer.hpp 1.2 简单测试一下 1.3 用telnet测试一下 1.4 用浏览器访问 1.5 返回相应的过程&#xff08;网页版本&#xff09;​编辑 1.5.1 再次用浏览器访问 1.6 返回相应的过程&#xff08;文件版本&#xff09; 1.6.1网页 1.6.2 测试 …

docker服务容器化

docker服务容器化 1 引言2 多个容器间网络联通2.1 单独创建关联2.2 创建时关联 3 服务搭建3.1 镜像清单3.2 容器创建 4 联合实战4.2 flink_sql之kafka到starrocks4.2 flink_sql之mysql到starrocks 5 文献借鉴 1 引言 ​ 利用docker可以很效率地搭建服务&#xff0c;本文在win1…

Linux系统之iotop命令的基本使用

Linux系统之iotop命令的基本使用 一、iotop命令介绍二、iotop命令的使用帮助2.1 安装iotop2.2 iotop命令help帮助信息2.3 iotop命令选项解释 三、 iotop命令的基本使用四、iotop使用注意事项 一、iotop命令介绍 iotop 是一个类似于 top 的命令行工具&#xff0c;但它专注于显示…

opencv 区域提取三种算法

opencv 区域提取三种算法 1.轮廓查找 findContours()函数&#xff0c;得到轮廓的点集集合 cv::vector<cv::vector<Point>> contours;threshold(roiMat,binImg,m_pPara.m_nMinGray,m_pPara.m_nMaxGray,THRESH_BINARY);//膨胀处理Mat dilaElement getStructuringE…

【深度学习】—CNN卷积神经网络 从原理到实现

卷积神经网络&#xff08;CNN&#xff09;从原理到实现 什么是卷积神经网络&#xff08;CNN&#xff09;&#xff1f; 卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是一种深度学习模型&#xff0c;主要应用于图像分类、目标检测和自然语言处理等领…

A-star算法

算法简介 A*&#xff08;A-star&#xff09;算法是一种用于图形搜索和路径规划的启发式搜索算法&#xff0c;它结合了最佳优先搜索&#xff08;Best-First Search&#xff09;和Dijkstra算法的思想&#xff0c;能够有效地寻找从起点到目标点的最短路径。A*算法广泛应用于导航、…

【数据集划分】训练集train/验证集val/测试集test是如何划分的?

&#x1f680;在跑代码时常常将数据集简单的划分为训练集train和测试集test(二划分)&#xff0c;其实更为全面完整的划分应该是划分为训练集train、验证集val、测试集test(三划分)。那么具体如何划分呢&#xff1f;各个部分起着什么作用呢&#xff1f; 如下图所示&#xff0c;…

Gentoo Linux部署LNMP

一、安装nginx 1.gentoo-chxf ~ # emerge -av nginx 提示配置文件需更新 2.gentoo-chxf ~ # etc-update 3.gentoo-chxf ~ # emerge -av nginx 4.查看并启动nginx gentoo-chxf ~ # systemctl status nginx gentoo-chxf ~ # systemctl start nginx gentoo-chxf ~ # syst…

Ubantu系统非root用户安装docker教程

非root用户没有超级权限&#xff0c;根据docker安装教程安装完毕会发现无法拉取镜像&#xff0c;或者每次运行docker都需要加上sudo&#xff0c;输入密码验证。 解决办法如下&#xff1a; 1、创建docker用户组 sudo groupadd docker2、将非root用户&#xff08;当前用户&am…

python可视化高纬度特征

可视化网络的特征层&#xff0c;假如resnet网络输出的特征维度是(batch_size,512). 如果要可视化测试集的每个图片的512高维度特征分布呢&#xff1f; embeds resnet18(x)&#xff0c;embeds是(batch_size,512)高维度特征。如下可视化。 import torch import matplotlib.pyp…

OceanBase 大数据量导入(obloader)

现需要将源数据库&#xff08;Oracle|MySQL等&#xff09;一些表的海量数据迁移到目标数据库 OceanBase 中&#xff0c;基于常规 jdbc 驱动编码的方式涉及开发工作&#xff0c;性能效率也要看编码的处理机制。 OceanBase 官方提供了的 OceanBase Migration Service (OMS) 数据…

Mac启动服务慢问题解决,InetAddress.getLocalHost().getHostAddress()慢问题。

项目启动5分钟&#xff0c;很明显有问题。像网上其他的提高jvm参数就不说了&#xff0c;应该不是这个问题&#xff0c;也就快一点。 首先找到自己的电脑名称&#xff08;用命令行也行&#xff0c;只要能找到自己电脑名称就行&#xff0c;这里直接在共享里看&#xff09;。 复制…

Ubuntu交叉编译 opencv for QNX

前言 在高通板子上开发一些程序的时候,会用到opencv帮助处理一下图像数据,高通车载板子sa8155和sm8295都有QNX os,需要交叉编译opencv的库,(这个交叉编译真是搞得我太恶心了,所以进行一个记录和分享) 搜了很多资料,有些太过于复杂,有些也存在错误导致最后没有编译成…

.NET 9 AOT的突破 - 支持老旧Win7与XP环境

引言 随着技术的不断进步&#xff0c;微软的.NET 框架在每次迭代中都带来了令人惊喜的新特性。在.NET 9 版本中&#xff0c;一个特别引人注目的亮点是 AOT&#xff08; Ahead-of-Time&#xff09;支持&#xff0c;它允许开发人员将应用程序在编译阶段就优化为能够在老旧的 Win…

Mac 环境下类Xshell 的客户端介绍

在 Mac 环境下&#xff0c;类似于 Windows 环境中 Xshell 用于访问 Linux 服务器的工具主要有以下几种&#xff1a; SecureCRT&#xff1a; 官网地址&#xff1a;https://www.vandyke.com/products/securecrt/介绍&#xff1a;支持多种协议&#xff0c;如 SSH1、SSH2、Telnet 等…

Cookie跨域

跨域&#xff1a;跨域名&#xff08;IP&#xff09; 跨域的目的是共享Cookie。 session操作http协议&#xff0c;每次既要request&#xff0c;也要response&#xff0c;cookie在创建的时候会产生一个字符串然后随着response返回。 全网站的各个页面都会带着登陆的时候的cookie …