首页 > 其他分享 >COD读书笔记

COD读书笔记

时间:2024-06-03 21:12:12浏览次数:15  
标签:CPI frac 读书笔记 text times 指令 COD 时钟

计算机组成与设计课程复习

与 CSAPP 中类似的部分做了忽略或者简化

性能的度量

知识回顾

对于某个计算机 X,定义性能和执行时间的关系表达式:

\[\text{性能}_X = \frac{1}{\text{执行时间}_X} \]

描述时钟周期和时钟频率的关系:

\[\text{时钟周期} = \frac{1}{\text{时钟频率}} \]

对于某个程序,CPU执行时间的计算公式:

\[ \text{CPU执行时间} = \text{CPU时钟周期数} \times \text{时钟周期} \\ = \text{CPU时钟周期数} \times \frac{1}{\text{时钟频率}} \]

指令平均时钟周期数

\[\text{CPI} = \frac{\text{CPU时钟周期数}}{\text{指令数}} \]

基本性能公式

\[\text{CPU执行时间} = \text{CPI} \times \text{指令数} \times \text{时钟周期} = \frac{\text{CPI} \times \text{指令数}}{\text{时钟频率}} \]

SPEC 分值

\[\text{SPECint}_X = \frac{\text{基准测试程序在 X 上的执行时间}}{\text{基准测试程序在标准机器上的执行时间} \times 100} \]

课后练习

解答思路:

a. $ \text{时钟周期} = \frac{1}{\text{时钟频率}} $

$ \text{每秒执行的指令数} = \frac{1}{{\text{时钟周期}}\times{\text{CPI}}} $

b. $ \text{时钟周期数} = \text{时钟频率} \times \text{CPU执行时间} $

$ \text{指令数} = \frac{\text{时钟周期数}}{\text{CPI}} $

c. $ \text{时钟频率} = \frac{1}{\text{时钟周期}} = \frac{CPI \times \text{指令数}}{\text{CPU执行时间}} $

解答思路:

a. $ \text{整体CPI} = \Sigma \text{CPI}_i \times \text{比例}_i $

b. $\text{时钟周期总数} = \text{整体CPI} \times \text{指令总数} $

RISC-V 指令集

知识回顾

存储程序概念

lui 指令:取左移 12 位后的 20 位立即数,目的是给一个寄存器赋一个 32 位的值;比如:将 0x12345678 放入 x19

lui x19, 0x12345
addi x19, x19, 0x678

pkJeQqH.png

通过使用 x0 寄存器,跳转-链接指令也可以实现无条件跳转

jal x0, 0x1000

在 RISC-V 中,栈指针是寄存器 x2,也称为 sp;按照历史惯例,栈按照从高到低的方向增长

x5 ~ x7, x28 ~ x31caller-saved 寄存器,称为临时寄存器 t0 ~ t6 (temporary)

x8 ~ x9, x18 ~ x27callee-saved 寄存器,称为保存寄存器 s0 ~ s11 (saved)

pkJeron.png

x10 ~ x17:参数寄存器 a0 ~ a7 (argument)

关于 RISC-V 对过程的支持,以递归实现的阶乘函数为例:

pkJeyiq.png

观察栈的变化以及 x1 的使用

pkJmiSf.png

RISC-V 的内存(memory)存储模型

pkJmafx.png

一些 RISC-V 编译器使用帧指针 fp (frame pointer) 或者寄存器 x8 来指向过程帧(在一个过程中存储在栈上的寄存器或者局部变量,也称活动记录)的第一个字(实际上就是保存了一个地址)

pkJnUbQ.png

保留加载字(lr.w)和条件存储字(sc.w)指令,用于实现原子操作;这两个指令按序使用,如果保留加载指令指定的内存位置的内容在条件存储指令执行到同一地址前发生了变化,则条件存储指令失败且不会把数据写回内存。这是一种指令对的方法,用于实现原子(atomic)操作(在两个操作之间不能插入其他操作,就像原子不可分一样)。

比如,实现一个原子交换(atomic swap)操作:

again: lr.w x10, (x20)
       sc.w x11, x23, (x20)
       bne x11, x0, again
       addi x23, x10, 0

lr.w 做了两件事:1. 从 x20 指向的内存位置读取一个字到 x10;2. 把 x20 指向的内存位置设置保留标记

sc.w 在把 x23 写进 x20 指向的内存位置之前,先判断 x20 指向的内存位置有没有设置保留标记,如果有,写入成功,x11 被设置为 0;如果没有,写入失败,x11 被设置为 1;无论成功与否,x20 指向的内存位置的保留标记都会被 sc 清除

指路

pkJncKU.png

在第二个例子中,x20 指向了一个锁

标签:CPI,frac,读书笔记,text,times,指令,COD,时钟
From: https://www.cnblogs.com/sysss-blogs/p/18229669

相关文章

  • Floyd判圈算法 leetcode
    龟兔赛跑/Floyd判圈算法概述判断一个链表是否存在环画图演示两个指针相遇的情况:查找链表中环的首个节点在这里插入图片描述数学公式表示为:(对应力扣142.环形链表II,141.环形链表I)判断一个链表是否存在环龟兔赛跑/Floyd判圈算法转换成判断链表是否存......
  • 前端工程化工具系列(六)—— VS Code(v1.89.1):强大的代码编辑器
    VSCode(VisualStudioCode)是一款由微软开发的强大且轻量级的代码编辑器,支持多种编程语言,并提供了丰富的扩展插件生态系统。这里主要介绍如何使用配置ESLint、Stylelint等插件来提升开发效率。1自动格式化代码最终要达到的效果是:在对文件保存时自动格式化Vue、JS/TS......
  • Code First 入门
    CodeFirst是EntityFramework(EF)中一种流行的开发模式,它允许开发者专注于应用程序的域模型(即类),而由EF根据这些类自动生成数据库结构。以下是CodeFirst的详细入门指南:1.安装EntityFramework首先,你需要在你的项目中安装EntityFramework。这通常可以通过NuGet包管理器来完成。......
  • pytest运行报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xaf in posit
    pytest运行报错:UnicodeDecodeError:‘gbk’codeccan’tdecodebyte0xafinposition82:illegalmultibytesequence  D:\Python\environment\python3.9.7\python3.exeD:/Python/nas_autotest/run.pyTraceback(mostrecentcalllast):File"D:\Python\......
  • BK7258--wifi音视频soc芯片,1080P H264 wifi低功耗保活,内置BLE,音频code,psram,flash,USB2.
    BK7258是上海博通推出的高度集成的Wi-Fi+BLE combo音视频芯片,支持UVC和DVP摄像头,该芯片集成音视频外设及接口,1080P,H.264,低功耗,内置flash,dsp,psram,驱屏,回声消除及降噪等,广泛适用于可视猫眼,门锁,门铃,ipc,内窥,儿童相机等应用市场。可视门铃应用:DVP接口支持720p25fps图像采集;MJPE......
  • 记 Codes 开源免费研发管理平台 —— 日报与工时融合集中式填报的创新实现
    继上一回合生成式全局看板的创新实现后,本篇我们来讲一讲日报与工时融合集中式填报的创新实现。  市面上所有的研发管理软件,大多都有工时相关功能,但是却没有日报功能,好像也没什么问题,但是在使用过程中体验非常不好,为什么呢?项目管理对于基层工作人员来说,主要解决这三个问题:开展......
  • LeetCode 1168. Optimize Water Distribution in a Village
    原题链接在这里:https://leetcode.com/problems/optimize-water-distribution-in-a-village/description/题目:Thereare n housesinavillage.Wewanttosupplywaterforallthehousesbybuildingwellsandlayingpipes.Foreachhouse i,wecaneitherbuildaw......
  • LeetCode 720. Longest Word in Dictionary
    原题链接在这里:https://leetcode.com/problems/longest-word-in-dictionary/description/题目:Givenanarrayofstrings words representinganEnglishDictionary,return thelongestwordin words thatcanbebuiltonecharacteratatimebyotherwordsin wor......
  • leetcode第263题:丑数
    丑数的因子只能是2,3,5。但是可能有多个2,多个3,多个5.因此需要循环地除以2、3、5.publicclassSolution{publicboolIsUgly(intn){if(n<=0){returnfalse;}int[]factors={2,3,5};for(inti=0;i......
  • leetcode第1281题: 整数的各位积和之差
    publicclassSolution{publicintSubtractProductAndSum(intn){intsum=0;intji=1;while(n>0){intnum=n%10;sum+=num;ji*=num;n/=10;}returnji-sum;......