首页 > 其他分享 >CPU Study - Instructions Fetch

CPU Study - Instructions Fetch

时间:2024-11-06 20:47:45浏览次数:6  
标签:取指令 Study Cache Fetch 指令 处理器 Line CPU

参考来源:《超标量处理器设计》—— 姚永斌

N-Way CPU 取指问题

如果CPU可以在每个周期内同时解码N条指令,则此类CPU为N-Way超标量处理器。
N-Way超标量处理器需要每个周期从I-Cache中至少取得N条指令,这N条指令成为一组Fetch Group。
为了保证处理器能够每个周期在I-Cache取得N条指令,最简单的方法就是把I-Cache的Data Block大小设置为N。

Data Block Output

理想情况下,CPU的取指令也是N Words对齐,那么I-Cache命中时,可以直接输出Cache Line中的value。
但是真实场景下,由于存在跳转指令,取指令地址不总是N Words对齐。
取出指令

这就导致一个周期内需要访问2行Cache Line才能一次取出N条指令,但是CPU设计中单周期只能访问一个Cache Line。

Solution - Instruction Buffer

对于N-Way CPU,假设一次能够从Cache中取出M条指令,只要满足M>N就能够满足性能最大化。例如下图的2-way处理器可以取出4条指令。
因此某些处理器中采用每周期取出来的指令数量大于能够解码数量的设计,通过一个缓存 Instruction Buffer将多余指令保存,避免硬件资源浪费。
并且除了分支指令以及异常的场景,取指令的地址都会按照字节对齐方式增加。
取出四条指令

Solution - 增加Data Block

增加Data Block为8,只要取指令地址不在最后的三个Word上就可以每周期读取四个指令。
取4条指令

不过在Cache Size固定场景下,增加Cache Line Size会减少Cache Set数量,导致Cache Miss概率增加。
并且如果Cache Line Size为8Byte,就需要8个32位SRAM电路及保护电路,但最终只输出4个字会比较浪费资源。
因此实际当中,仍然只使用4个SRAM实现八个字的data block。
SRAM CACHE

一个Cache Line的8个Byte数据占用4个SRAM的两行。
每次Cache Line命中,SRAM命中的两行均为有效。
命中后需要根据指令顺序对SRAM0/1/2/3进行重排序。
重排序

如果有分支预测,那么一旦预测失败,上述行为只是消耗处理器性能,都要被flush掉,属于无用消耗。
对于取指令阶段,如果被预测执行分支跳转,则指令组中之后的指令就不应该进入到后续的流水线中。
分支预测

标签:取指令,Study,Cache,Fetch,指令,处理器,Line,CPU
From: https://blog.csdn.net/weixin_43948262/article/details/143579620

相关文章

  • CPU算法分析LiteAIServer视频智能分析平台视频智能分析:抖动、过亮与过暗检测技术
    随着科技的飞速发展,视频监控系统在各个领域的应用日益广泛。然而,视频质量的好坏直接影响到监控系统的效能,尤其是在复杂多变的光照条件下和高速数据传输中,视频画面常常出现抖动、过亮或过暗等问题,导致监控视频难以提供有效的信息。为了解决这些挑战,视频智能分析平台LiteAIServer引入......
  • 深入理解 JVM 虚拟机之 CPU 飙高的排查方案及思路(JVM 虚拟机篇 - 19)
    目录《深入理解JVM虚拟机之CPU飙高的排查方案及思路(JVM虚拟机篇-19)》什么是CPU飙高问题?CPU飙高的排查思路在Java应用程序的运行过程中,CPU使用率异常飙高是一个需要关注的问题,这可能严重影响系统的性能和稳定性。对于JVM(Java虚拟机)而言,了解如何排查CPU飙......
  • 简易CPU设计入门:译码模块(一)
    项目代码下载还是请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。下载本项目代码准备好了项目源代码以后,我们接着去讲解。本节前言有一段时间没写本专栏的教程了。在之......
  • DDR Study -LPDDR5 DFE / Data Copy / Write X / Link ECC / FSP
    参考来源:JESD209-5B简单分享下LPDDR5中部分功能模块DFE,WriteX,DataCopy的设计。以及对比LPDDR4,ECC和FSP的变化。DFE-DecisionFeedbackEqualization首先需要了解在LPDDR5的高频工作模式下,最高的DataRate可以逼近6400Mbps,而LPDDR5x最高速率更是可以达到8533Mbps......
  • 静态库、动态库、framework、xcframework、use_frameworks!的作用、关联核心SDK工程和
    1.1库的概念库:程序代码的集合,编译好的二进制文件加上头文件供使用,共享程序代码的一种方式。1.2库的分类根据开源情况分为:开源库(能看到具体实现)、闭源库(只公开调用的的接口,是编译后的二进制文件,看不到具体实现,使用时链接即可。)闭源库分为:动态库.td(之前叫.dylib)或.framework......
  • Linux查看当前服务占用CPU,内存以及硬盘使用情况
        执行top命令此处为当前服务器运行CPU等待率,越低速度越快。左侧展示每个集成的CPU使用情况,右侧为每个进程对应的运行内存使用其中:%us:表示用户空间程序的cpu使用率(没有通过nice调度)%sy:表示系统空间的cpu使用率,主要是内核程序。%ni:表示用户空间且通过nice调度过......
  • java.数据流.study
         (紧接输出流代码,需要与输入流代码中类型对应)  对象字节输入流与对象字节输出流:     可以使用transient可以实现变量不会序列化:  ......
  • java.IO打印流.study
            ......
  • 视频去除马赛克codeformer【本地部署文件】需要电脑显卡或者CPU 算力
    CodeFormer是一款强大的人工智能工具,专注于图像和视频的修复和优化。它利用深度学习方法,尤其是人脸复原模型,轻松解决面部图像的修复问题,提高照片和视频的视觉质量。这款工具的工作原理如下:首先,CodeFormer通过自动编码器实现人脸的变换,包括色彩化、清晰化和去马赛克修复等......
  • java.IO转换流.study
            ......