- 博客(75)
- 收藏
- 关注
原创 【Linux】常用shell快捷键
反向搜索历史命令(输入关键词快速调出命令):粘贴上一条命令的最后一个参数。:引用上一条命令的最后一个参数。:光标跳转到行首/行尾。
2025-11-24 15:52:22
388
原创 【Excel】将一个单元格内的多行文本,拆分成多个单元格,每个单元格一行
这个方法准确地利用了空格作为分隔符,并通过“转置”功能实现了从“分列”到“分行”的最终目的。:首先,单击选中包含所有文本的那个单元格,根据图片,这应该是 。所有原本堆积在一个单元格里、由空格分隔的文本,现在会整齐地。因此,您不需要处理换行符,而是需要。在B列中,每个文本独占一个单元格。
2025-09-01 19:46:47
4143
原创 【RTC】RTC时钟为什么一般都是32.768KHz?
分频到 1 Hz:32,768 Hz 是 215(32768),通过 15 级二分频(即除以 2 的 15 次方)即可得到 1 Hz 信号(每秒一个脉冲),直接用于驱动秒针计时。这种分频电路只需简单的触发器级联,成本低且可靠性高。频率精确性:若频率非 2 的整数次方,分频后会产生累积误差,而 32.768 kHz 能确保分频后的 1 Hz 高度精确。
2025-07-28 18:19:57
1098
原创 【硬件】高级语言转换为.bin文件的过程【个人草稿】
希望这个详细步骤解析让你清晰地了解了从代码到 BootROM 二进制数据的完整转换过程!在这个过程中,链接器脚本对于控制 Bootloader 在 BootROM 中的物理布局至关重要,这个过程涉及多个工具链组件,最终将程序员编写的高级语言(或汇编)代码转换成可以烧录到 ROM 芯片中的原始二进制字节流() -> 烧录到 BootROM 或 Flash。则是生成最终烧录镜像的关键转换工具。) -> 带地址信息的可执行文件 () -> 纯二进制镜像 () -> 目标文件 () -> 格式转换 (
2025-07-25 18:57:49
783
原创 【AXI】读重排序深度
从设备内部有一个容量为3的请求队列,用于暂存未完成的读请求(pending addresses),允许对不同ARID的请求重排序,但严格保证同ARID的顺序。此例直观展示了读重排序深度为3时,从设备如何通过有限的乱序能力,在保证协议规范的前提下,显著提升存储访问效率。这里要改造,要支持loading 前置图标,内容,后缀图标,按钮箭头图标。这里要改造,要支持loading 前置图标,内容,后缀图标,按钮箭头图标。
2025-07-10 11:17:10
653
原创 【Testbench】在tb中使用状态机
在testbench中同样可以使用verilog语言来描述状态机。下面给出一个实际应用场景,使用状态机来模拟AXI的读请求和响应波形。
2025-07-08 10:59:46
231
原创 【综合】synthesis translate_off 和 synthesis translate_on
在RTL(Register Transfer Level)设计中,和是用于指导综合工具的编译指令(pragma)或注释。它们通常用于在代码中标记一部分代码,告诉综合工具忽略它们之间的代码段。这些指令不是Verilog或VHDL标准的一部分,但是由一些综合工具(如Synopsys Design Compiler, Cadence Genus, 等)所支持。
2025-06-26 11:15:05
556
原创 【Linux】shell内置命令fg,bg和jobs
fg(foreground 的缩写)。它用于将。svn updateCtrl+Zfg bg(background 的缩写)。它用于将。jobs,用于查看和管理当前 Shell 会话中的或(例如通过Ctrl+Z暂停的任务)jobsbjobs。
2025-05-14 20:12:57
927
原创 【CPU】步长【个人草稿】
是缓存预取技术的关键创新,通过识别复杂的地址间隔模式,显著提升了缓存预取的灵活性和效率。尤其在科学计算、图形处理等数据密集型应用中,它能有效减少缓存未命中,提升程序运行速度。是缓存预取技术中的一种机制,用于识别内存访问地址的间隔模式(即“步长”),从而预测未来可能访问的地址并提前加载数据到缓存中。这里要改造,要支持loading 前置图标,内容,后缀图标,按钮箭头图标。这里要改造,要支持loading 前置图标,内容,后缀图标,按钮箭头图标。
2025-05-06 10:18:49
582
原创 【CPU】结合RISC-V CPU架构回答中断系统的7个问题(个人草稿)
通过以上软硬协同机制,RISC-V实现了符合POSIX标准的可抢占式中断系统,典型中断延迟可控制在10-30个时钟周期。RISC-V通过CLINT(Core Local Interrupter)和PLIC(Platform-Level Interrupt Controller)实现中断请求传递。• 外部中断(如GPIO、外设)通过PLIC统一收集,PLIC的每个中断源有独立ID(如UART=10,SPI=14)• 紧急程度:Non-maskable中断(NMI) > 可屏蔽中断。),防止恢复过程中断。
2025-04-21 23:48:49
1417
原创 【CPU】中断即时性
无中断即时性需求”的中断源允许PLIC灵活调度,优化系统资源分配。这类中断的设计使得RISC-V能够兼顾实时性和吞吐量,适用于从嵌入式系统到服务器的多种场景。这类中断允许一定延迟处理,其响应时间不会显著影响系统功能或导致数据丢失。在RISC-V的中断控制器(PLIC)描述中,“无中断即时性需求”指的是。和分发,确保高优先级中断优先处理,而低即时性中断可等待。:指中断需要被处理的紧急程度。
2025-04-20 14:51:39
285
原创 【CPU】Hart ID是什么(草稿)
Hart ID 是计算机体系结构(尤其是 RISC-V 架构)中用于唯一标识 硬件执行线程(Hardware Thread, Hart) 的编号。
2025-03-04 20:14:26
999
原创 【CPU】VIPT为什么不会出现歧义问题【个人草稿】
比如,假设物理地址的tag部分相同,但由于index来自虚拟地址的不同部分,导致相同的tag被放入不同的缓存组,这样即使tag相同,也不会冲突,因为不在同一个组里。不过,这可能不完全正确,因为如果两个不同的物理地址的tag相同,但它们的index部分在物理地址中不同,而缓存的index是来自虚拟地址的,这时候这两个物理地址可能被不同的虚拟地址映射到不同的缓存组中,但因为它们的tag相同,如果它们的index(虚拟的)不同,那么它们会被放在不同的组,但tag相同的情况下,是否会导致问题?
2025-02-12 11:22:59
1152
原创 【CPU】MMU相关草稿
首先,我需要回忆一级页表和三级页表的基本区别。接下来,用户提到原来的设计是4KB页,但改进后支持多种页大小,这说明需要多级页表来支持不同大小的页面,可能通过页表项中的标志位来指示页的大小,从而合并某些层级的页表项,减少转换步骤。例如,32位地址空间下,4KB页需要2^20个页表项,每个项假设8字节,则页表大小为8MB。:假设系统使用一级页表,每个进程需要4MB的页表(假设每个页表项8字节,4KB页)。:使用三级页表,当分配1GB内存时,使用一个1GB的大页,只需一个页表项,减少页表内存占用和TLB压力。
2025-02-10 14:10:51
941
原创 【CPU】RISC-V中的PMP物理内存保护单元
NAPOT模式是最常用的地址匹配模式,适用于大多数场景,尤其是当内存区域大小为2的幂次方且起始地址对齐时。TOR模式需要两个连续的PMP条目来定义一个地址范围,适用于需要精确控制较大区域的情况。NA4模式适用于小型数据结构的保护,但由于其粒度过小,在实际应用中较少使用。理解这些地址匹配模式有助于更灵活地配置PMP,从而增强系统的安全性。
2025-01-21 14:56:29
2544
1
原创 【CPU】上下文切换和ASID(个人草稿)
上下文切换涉及保存当前进程的状态并恢复下一个进程的状态,以便CPU可以继续执行新的进程。ASID用于区分不同的地址空间,使得每个进程都有其独特的标识符。带有ASID的TLB条目允许系统在进程切换时更高效地利用TLB缓存。如果新进程的ASID与前一个进程相同,则可以假设TLB中已经存在的映射仍然是有效的,从而减少了重新加载页表项的需求,提高了性能。通过这种方式,ASID增强了系统的并发能力和性能,同时确保了地址空间的隔离性和安全性。
2025-01-21 11:06:54
1136
原创 【CPU】cache和MMU的关系
之前想不清楚一个问题,当CPU需要获取某个数据时,是直接查找数据cache中的内容,找不到再去执行虚拟地址转换?那转换过后的物理地址是直接去内存中找数据,还是会先再拿着物理地址去cache中找,找不到再去内存?这个问题涉及到的知识点是和找到一篇文章能解答我的部分疑问。
2025-01-16 11:34:22
619
原创 【CPU】MMU的分页机制与内存碎片
是指在内存中存在许多小的、不连续的空闲空间,这些空间虽然总和起来可能足够大,但由于它们是分散的、不连续的,无法用于存储一个完整的程序或数据块。
2025-01-07 10:31:21
816
原创 【CPU】堆栈和堆栈指针(个人草稿)
什么是堆栈?堆栈(Stack)是一种后进先出(LIFO, Last In First Out)的数据结构,广泛用于计算机系统中,尤其是在程序执行过程中管理函数调用、局部变量、返回地址等。堆栈通常位于内存的特定区域,称为堆栈段或栈区。特性后进先出(LIFO):最后入栈的数据最先被弹出。自动管理:大多数编程语言和操作系统会自动管理堆栈的分配和释放,程序员不需要手动操作。快速访问:由于堆栈的操作(如压栈和弹栈)非常简单,因此访问速度较快。
2025-01-06 22:41:40
2080
原创 【CPU】编译器的功能,以及指令转换执行的过程(个人草稿)
CPU执行指令的过程看似简单,但实际上涉及到了复杂的硬件结构和优化技术。理解这些基本原理有助于你更好地掌握计算机体系结构的知识,也为学习更高级的主题打下了坚实的基础。希望这个解释能帮助你对CPU的工作方式有一个清晰的认识。如果你有任何问题或需要更详细的说明,请随时提问!要理解指令是如何被放入内存中以及CPU如何知道会执行哪些指令,我们需要探讨程序的加载和执行过程。这涉及到编译、链接、加载等多个步骤,以及操作系统在其中扮演的角色。让我们一步一步地来了解。
2024-12-31 15:52:03
1244
原创 【CPU】risc-v指令集和其他指令集的差别(个人草稿)
RISC-V的寄存器字段位置固定,且立即数字段总是符号扩展,这使得处理器可以在解码指令之前就开始访问寄存器和进行符号扩展,从而提高了指令执行的速度。其他 ISA(如ARM-32和MIPS-32)中,某些指令字段在不同的指令中具有不同的含义,这虽然节省了指令编码空间并简化了指令集,但也增加了解码的复杂性和延迟。这种设计差异反映了 RISC-V 和其他 ISA 在设计理念上的不同:RISC-V 更注重简洁性和高效性,而其他 ISA 则在节省指令空间和保持灵活性方面做出了妥协。ARM-32和。
2024-12-30 22:36:42
1045
原创 【CPU】RISC-V 与 x86 操作数字段的区别
在早期的 x86 架构中,指令长度是有限的,因此减少操作数的数量可以帮助节省指令空间。具体来说,RISC-V 的指令通常提供三个寄存器操作数,而 x86-32 的指令则让源操作数和目的操作数共享一个字段。在 x86-32 中,由于指令格式的限制,我们不能直接指定三个不同的寄存器。这意味着,当需要执行涉及三个不同操作数的运算时,编译器或程序员可能需要使用额外的指令来保存中间结果。在这种情况下,RISC-V 的指令可以直接指定三个不同的寄存器,而不需要额外的操作来保存中间结果。的值相加,并将结果存储到寄存器。
2024-12-30 18:04:54
1331
原创 【CPU】分支条件计算结果的等待时间与流水线级数的关系
分支条件的计算结果通常发生在流水线的较晚阶段(如执行阶段或更晚),因此,流水线越深,分支条件的结果就越晚到达。流水线越深,分支条件的结果出来之前,已经有更多的指令被送入了流水线的前几级。如果分支发生,这些指令可能会被浪费,导致流水线阻塞。分支预测可以帮助减少分支带来的性能损失,但如果预测错误,流水线的深度越大,性能损失就越严重。
2024-12-30 15:12:35
1177
原创 【CPU】专业术语记录
典型的例子是ARM的big.LITTLE架构,它将高性能的核心(称为“big”核心)和低功耗的核心(称为“LITTLE”核心)组合在一起。高性能核心适合处理复杂的计算任务,而低功耗核心则用于处理轻量级任务,从而在性能和功耗之间取得平衡。集群的概念主要用于异构多核处理器(Heterogeneous Multi-Core Processor),其中不同集群的核心可能有不同的性能、功耗或功能特性。例如,Intel和AMD的大多数消费级CPU都是同构的,所有核心都可以执行相同类型的指令,并且性能一致。
2024-12-30 09:48:53
568
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅