- 博客(19)
- 收藏
- 关注
原创 Windows 端口映射
在 Windows 中,可以使用 netsh 命令来添加、查看和删除端口转发规则。要要要其中的和应该与你想删除的规则匹配。请注意,执行这些操作通常需要管理员权限。
2023-09-09 12:07:53 754
原创 C 语言实现简单有限状态机
常说的状态机是有限状态机 FSM,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。状态总数(state)是有限的。任一时刻,只处在一种状态之中。某种条件下,会从一种状态转变(transition)到另一种状态。设计状态机的关键点:当前状态、外部输入、下一个状态。
2023-01-08 13:51:42 2645
原创 CPU 亲和性与中断亲和性
CPU 的亲和性 (Affinity),属于一种调度属性,可以绑定进程到指定 CPU 上。换句话说,就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器。为何会出现这种技术?在 SMP(Symmetric Multi-Processing 对称多处理) 架构下,调度器会试图保持进程在相同的 CPU 上运行,这意味着进程通常不会在处理器之间频繁迁移,进程迁移的频率小就意味着产生的负载小。
2023-01-07 15:22:52 2597
原创 CPU Cache 高速缓存
如果发现,要写入的数据所对应的 Cache Block 里,放的是别的内存地址的数据,那么就要看一看,那个 Cache Block 里面的数据有没有标记成脏的。相比而言,如果使用中间的位作为组索引,那么相邻的块总是映射到不同的组,图中的情况能够存放整个大小的数组片。CPU 的读(load)实质上就是从缓存中读取数据到寄存器(register)里,在多级缓存的架构中,如果缓存中找不到数据(Cache miss),就会层层读取二级缓存三级缓存,一旦所有的缓存里都找不到对应的数据,就要去内存里寻址了。
2023-01-06 20:40:25 2164
原创 AMBA 总线协议-AXI 协议
在握手过程中,还会用到 LAST 信号。为了防止死锁发生,信号之间要遵循一些规矩,举例来说,如上面提到的 READY 信号依赖 VALID 信号,但是 VALID 信号不能根据 READY 信号来判断是否数据已准备好,否则将会造成死锁。这里也体现了双向流控机制,发送方的 VALID 信号只要置高,再握手完成之前都不能置低,必须等到接收方 READY 信号置高。AXI 协议是基于 Burst 的,地址结构里声明了一些传输过程中需要的信号,如起始地址,burst 传输长度,传输模式等等。
2023-01-06 20:34:40 1830
原创 Clang-Format 格式化代码
上文多次提到了配置文件,该文件决定了代码如何格式化,现在来介绍如何使用该文件。# 宏定义对齐使用宏定义对齐更详细的配置,可以参考官方文档。使用该配置一定要使用等宽的字体,否则配置生效但是显示不正确。比如我是用微软雅黑字体作为编码字体,因为该字体每个字符不等宽,导致格式化正确,但是显示不正确。如果将字体换位等宽字体如常用的Consolas,就可以正常显示。
2023-01-06 20:33:36 1930
原创 Git clone下来的分支不完整
设置克隆深度时发生。因为有些大型项目一次性克隆容易出错,所以只克隆一层深度。到本地后发现本地缺失了一些远程仓库的分支。命令查看所有分支没有显示该分支,该如何解决?
2023-01-06 20:30:44 2796
原创 DEBUG 原理
1985 年,几家半导体厂商为了解决板级测试的问题,成立了 Joint Test Action Group(JTAG)联合测试行动小组,他们希望将测试点和测试电路集成在芯片内部引脚处。同时,留出一个统一协议的接口,大家都能通过这个接口来访问芯片的输入与输出状态。这样就省去了板级测试是的物理接触,同时还能进行逻辑性调试。后来 IEEE 组织,将这个方案制定成了标准 IEEE 1149.1,这就是现在我们常听到的 JTAG 调试。
2022-12-28 19:16:21 1995
原创 CPU 缓存一致性 MESI 协议
目前主流电脑的 CPU 都是多核心的,多核心的有点就是在不能提升 CPU 主频后,通过增加核心来提升 CPU 吞吐量。需要注意的是,对于不同状态触发的事件操作,可能来自于当前 CPU 核心,也可能来自总线里其他 CPU 核心广播出来的信号。这个策略,本质上就是把所有的读写请求都通过总线广播给所有的 CPU 核心,然后让各个核心去“嗅探”这些请求,再根据本地的情况进行响应。这里的问题就是所谓的缓存一致性问题,因为 CPU A 的缓存与 CPU B 的缓存是不一致的。加载到自己的缓存中,然后将变量。
2022-12-26 21:04:33 882
原创 解决/usr/bin/env:python:No such file or directory
在执行的程序源码开头有这么一句,!#这玩意叫shebang也叫hashbang。他用来指定脚本的解释器,也就是说这个程序指定python解释器。再看这个错误提示,罪魁祸首就是这句命令,就是说在环境变量找不到python,通俗点说,假如我要能直接用python来跑这个程序,我在命令行直接输入python应该是可以进入python环境的,但是此时肯定不能。我们可以试试。
2022-12-22 11:40:37 4064 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人