- 博客(23)
- 收藏
- 关注
原创 超标量处理器设计笔记(11)发射内容:分配、仲裁、唤醒
Allocation分配已被重命名的的指令发射队列存储已被重命名,但没有被送入到 FU 的指令选择 arb 电路多个指令操作数都准备好后,找到最合适的指令,送到 FU唤醒电路指令经过 FU 后,计算得到结果,通知给等待其结果的指令数据捕捉:两读一写,从寄存器读出,写入发射队列,再继续读出,功耗大在 ROB 进行寄存器重命名时,会使用数据捕捉#问题 不用关心指令结果的变化是什么意思?压缩式发射队列非压缩式发射队列功耗每个周期都需移动,大小分配电路。
2024-12-15 22:13:44
1043
原创 超标量处理器设计笔记(10) 寄存器重命名过程的恢复、分发
复位方式CheckpointWALK内容将 RAT 内容复制出来根据 ROB 序列完成删掉、恢复指令等待分支指令成为最老指令利用 ARAT 复制占用资源多少直接复制比较简单处理速度快慢可能由于 D-cache 原因变慢常用于异常发生概率低的处理器中不需要过多处理,降低功耗。
2024-12-14 22:41:20
850
原创 超标量处理器设计笔记(9) 重命名映射表、超标量处理器重命名中相关性问题
为了释放不再使用的物理寄存器,需要从 RAT 读出以前对应的物理寄存器,并且写到 ROB 当中,告诉 ROB 我的值是在哪里,而不是让 ROB 去检查 ART 查到错误的值。只有最新的指令 D 才能写到 RAT,对周期内进行寄存器重命名的所有 WAW。#问题 CAM 的 check points 只需要一位?#问题 R1 映射出来结果应该一致,为什么会不一致?一条指令重命名,RAT 一共需要 3 读 1 写端口。在不出现 RAW 和 WAW 相关下的映射。如果寄存器地址,同时读写操作,先读后写。
2024-12-14 22:39:58
876
原创 超标量处理器设计笔记(8) 寄存器重命名概述和方式
数据相关性 (寄存器相关)WAWWARRAW存储器数据的相关性WAWWARRAW控制相关性分支指令引起,分支预测可以解决结构相关性处理器当中部件可以使用才可以继续执行WAW 和 WAR 相关性可以通过修改寄存器名字,但依旧存在的原因有限的寄存器个数循环体(重复写入,消耗大量寄存器名)代码重用,和循环体类似而直接新增通用寄存器,会导致之前编译好的程序需要重新编译为什么会被消耗完?
2024-12-14 22:32:55
963
原创 超标量处理器设计笔记(7) Cache同义重名问题、同名问题,VIPT PIPT VIVT 介绍和对比
相同名字对应不同的物理地址类型优点缺点应用场景PIPT没有重名问题查找速度慢用于 L2VIPT适中适中大部分处理器使用VIVT访问速度快,不需要 TLB 转换物理地址重名问题出现频繁引入虚拟存储器的优点可以让程序有独立的地址空间,每个程序都有 32 位 4GB 的地址空间,不需要限定范围引入虚拟空间和物理空间的映射,有效利用碎片化的物理空间。
2024-12-08 19:36:51
1425
原创 超标量处理器设计笔记(6)TLB缺失、替换、写入
如果采用 1MB 大小的页时,只需要比较 VA[31:20]作为 Tag 索引即可,VA[19:0]寻址页的内部。为了避免异常处理程序再出现 TLB 缺失时,会将该段程序放在不需要地址转换的区域(操作系统地址范围)发生 TLB 缺失时,将 TLB 缺失的虚拟地址保存到特殊寄存器中,产生 TLB 缺失类型异常。异常处理程序利用虚拟地址去寻址物理内存的页表,如果再缺失,则报 page fault 异常。软件处理 TLB miss 时,需要将流水线中的全部指令清空,适合深度不深的处理器。该页面有以下几种情况。
2024-12-08 19:34:35
1100
原创 超标量处理器设计笔记(5)虚拟存储器、地址转换、page fault
当程序比物理内存空间更大时,无法全部装在物理内存中,需要对程序进行切片虚拟存储器优点(需要操作系统调度)将当前使用的部分程序放到物理存储器中,其余部分放在下一级存储器里。不需要切割程序如果同时运行多个程序,不需要限制每个程序在规定的地址空间保护各程序的内容不会互相改写将相同功能的程序可以映射到相同位置虚拟内存的地址范围32 微处理器 0 ~ 0xFFFF FFFF 4GB64 微处理器 0 ~ 0xFFFF FFFF FFFF FFFF物理存储器的地址范围。
2024-12-08 19:32:19
707
原创 超标量处理器设计笔记(4) 多端口cache设计、多bank设计、取指cache设计
将 data sram 拆成多个 bank,不同端口访问不同 bank 时,不会引发冲突。此时每周期平均采出的指令数为:(1/4) * 4 + (1/4) * 3 + (1/4) * 2 + (1/4) * 1 = 2.5。缺点:在容量一定时,cache set 的个数变小,也可能引起 cache 缺失,缺失概率和取指令需要具体情况具体分析。Tag sram 由于需要判断 Cache 端口是否命中,仍需要多个端口同时读取。实际上,为了降低面积,会采用 4 块 sram 拼成,但需要重新排序。
2024-12-03 19:05:17
892
原创 超标量处理器设计笔记(3)提高 Cache 性能的经典方式
提升性能的方式写入到当前存储器时新增流水线,Tag arry 和 data arry 逐级访问在写入到下级存储器时写缓存设置 buffer,避免端口占用从下级存储器读取预取Cache 剔除阶段Victim Cache,存储被剔除的 cacheRAM 大小和访问速度相关多级结构,分级别访问。
2024-12-02 21:25:55
773
原创 超标量处理器设计笔记(2)Cache 的组成方式、写入、替换(伪LRU的缺点)
访问类型优点缺点适合并行访问流水线深度低功耗大、时钟频率低顺序(多一拍,后面所有程序都需要等待)串行访问功耗小(节约 way MUX)、时钟频率高流水线深度深乱序(多一拍的时间不耽误其他指令执行)映射种类特点面积访问延迟组内冲突和命中率直接映射只需要比较一次 tag小低组内冲突多,经常替换,命中率低组相联需要比较组内的所有 tag中中适中全相联需要比较所有行的 tag大高无组内冲突,不需要替换,命中率最高。
2024-11-29 20:33:41
919
原创 超标量处理器设计笔记(1)超标量流水线概况
加入流水线的利弊:提高主频但开销更大CostPerformanceGn∗L1DnSGDnSL∗nLDGSCostPerformanceGn∗L1/DnS))GDnSL∗nLDGSn:流水线级数L:流水线寄存器面积G:不加流水线消耗的总面积D:不加流水线的电路延迟S:流水线寄存器的电路延迟。
2024-11-28 21:59:38
1000
原创 跨时钟处理详解
Clk1 下数据变化后稳定时,发出 vld1 信号,clk2 接到 vld2 时对数据采样。前提要求,data_in 在 vld2 采样之前不发生变化,如果可能发生变化,则进行锁存。为什么使用 c 作为反馈,而不是 b 直接反馈?(b 的脉冲在 clk1 相当于电平)通过寄存器打两拍进行同步,也就是电平同步器。适用于慢时钟域向快时钟域,或者差异不大的时钟。窄脉冲跨到慢速时钟里,可能会被当毛刺过滤。为什么跨时钟域可能出现亚稳态?采样时可能采到上升沿和下降沿。慢速时钟到快速时钟,脉冲变长。
2024-11-06 22:05:18
655
原创 亚稳态详解
如果信号在建立时间和保持时间内发生变化,则输出是未知,也就是亚稳态的。主要发生在异步电路中。当不满足 Th or Tsu 时,Q 需要 Tmet 后才稳定,而要求是 Tco 阶段。用下图来表示亚稳态,如果满足建立时间和保持时间,则小球会直接滑到稳态 0 or 1。但是亚稳态状态在一定时间后总会趋近一个稳定的状态,这也是可以降低亚稳态的底层原理。亚稳态,是因违反寄存器的建立时间和保持时间而产生的。出现逻辑混乱,最糟糕是系统直接崩掉。但如果推力不够,则会出现两种情况。
2024-11-05 17:10:19
450
原创 同步异步FIFO详解(介绍、异同、为什么要用格雷码、深度)+ 各自verilog代码+testbench
FIFO 的参数宽度:一次读写操作的数据位深度:可以存储的 N 位数据的数目 (宽度为 N)满标志:FIFO 已满或将要满时,由 FIFO 的状态电路送出的信号,阻止 FIFO 写操作空标志:FIFO 已空或将要空时,由 FIFO 的状态电路送出的信号,阻止 FIFO 读操作读时钟:读操作所遵循的时钟写时钟:写操作所遵循的时钟设计空满标志位电路正确产生空满信号是任何 FIFO 设计的关键。其设计原则是:能写满而不溢出,能读空而不多读。在写时钟域下,判断读写指针的关系,生成满标志。
2024-11-04 21:31:07
1362
1
原创 异步脉冲检测问题
使用上篇博文的代码,下载到 FPGA 后,计数 GPIO 口的外部脉冲个数出现问题。FPGA 的采样时钟是 50MHz。外部脉冲频率是 10KHz。
2024-10-30 11:16:54
301
原创 六路脉冲计数器+uart传输
获取count_IO 0-5 路脉冲计数值,再以 符合uart传送格式 到 uart_tx 端。每次按下key键后,开始对1s的六路脉冲进行计数,通过uart 传送到上位机上。利用50MHz的时钟产生分频脉冲,模拟六路io口的脉冲。当按下key后,对六路脉冲进行1s 计数。
2024-10-12 08:23:18
216
原创 数字ic设计方法和流程
门阵列芯片在生产时已经包含触发器、逻辑门等基本电路,只需要客户完成器件之间的布线。设计师使用硬件描述语言完成设计,这个描述随后会转换为标准单元的实例,并且进行逻辑优化。对性能、功耗要求极高的高端产品,适用于高性能微处理器,高精度模拟电路。适合复杂性高,要求硬件与软件紧密集成,PPA高度优化的芯片设计中。工程师从晶体管开始设计,完成电路设计、仿真和版图设计的方式。适用于中等复杂程度的集成电路设计,快速生产和较低成本。精度高,最大程度优化芯片性能,不会浪费芯片资源。后端:版图设计、时序分析、版图级仿真。
2023-12-24 17:04:26
555
1
原创 Linux 系统启动卡死在reached target cloud-init target,原因是HOME空间不够,给磁盘对应卷扩容
lsblk 查看磁盘使用情况loop 设备这些设备(loop0, loop1, …)通常与Snap包关联,用于在Linux上运行容器化的应用程序。每个设备都关联有一个特定的Snap应用或库。nvme0n1 设备这是一个NVMe SSD驱动器,磁盘。它被分为三个分区:nvme0n1p1: 大小为 953M,EFI系统分区。nvme0n1p2: 大小为 1.8G,nvme0n1p3: 大小为 17.3G,主要的文件系统或数据分区。ubuntu–vg-ubuntu–lv 设备。
2023-10-23 22:39:38
4413
3
原创 MACos VMware FUsion 下 ,VMware Tools 安装失败 open-vm-tools 共享文件夹 & 复制粘贴文本
第一步: sudo apt-get autoremove open-vm-tools (该库为命令端版,有就移出,没有也可以不管)该文章建议对于Ubuntu14.x以上版本,直接使用Open-VM-Tools,所以我开始利用这个库达到共享文件夹和复制粘贴功能。其中只有x86_x64下包含,Linux.iso 文件,而arm64下只有windows.iso。该方案应该也适合windows 下的虚拟机,可直接查看 open-vm-tools使用教程。刚装好桌面端,设置共享文件夹路径后,能正常访问共享文件夹。
2023-10-20 21:38:48
1323
1
原创 CortexM4内核Stm32-HAL_Init()及HAL_InitTick(TICK_INT_PRIORITY()详解——Systick中断优先级
上次写完HAL_NVIC_SetPriorityGrouping(),设置分组为2,抢占优先级与响应优先级都是2HAL_Init还剩下一个HAL_InitTick(TICK_INT_PRIORITY)函数就讲完了,其中,TICK_INT_PRIORITY为Systick时钟默认中断,为0x0F。如上文抢占有限级和响应优先级都是2来说,那么Systick的中断优先级是最低的只要任何出现中断优先级高的,就会打断Systick中断,这样怎么保障如何保障其定时准确呢?首先看了正点原子的开发指南他的意思是
2020-07-27 00:26:22
7740
3
原创 CortexM4内核Stm32-HAL_NVIC_SetPriorityGrouping()详解
开始稍微带一点点质量的博客生涯——准备记录研究生所学的内容了对32的学习还是比较感兴趣,想对一个内核进行深刻的理解,所以想更深层次的去理解,很佩服32HAL库代码的可读性~废话不多说,开始主题:HAL库在main函数中会有一个HAL_Init()其具体如下HAL_StatusTypeDef HAL_Init(void){ /* Configure Flash prefetch, Instruction cache, Data cache */ #if (INSTRUCTION_CACHE_
2020-07-22 00:11:00
9957
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人