[学习笔记]《CSAPP》深入理解计算机系统 - Chapter 4 处理器体系结构Chapter 5 优化程序性能
总结一些第四章和第五章的一些关键信息
- Chapter 4 处理器体系结构
- 将处理组织成阶段
- Chapter 5 优化程序性能
Chapter 4 处理器体系结构
在硬件中,寄存器直接将它的输入和输出线连接到电路的其他盆。
在机器级变成中,寄存器代表的是 CPU 中为数不多的可寻址的字,这里的地址是寄存器的 ID。这些字通常都存在寄存器文件中,虽然我们会看到硬件有时
可以直接将一个字从一个指令传到另一个指令,以避免先写寄存器文件再读出来的延迟。
-
寄存器(
Register):
寄存器是CPU内部的小型、快速的存储单元。
它们用于存储指令、数据、地址等信息,以便快速访问和处理。
寄存器通常用于临时存储操作数、中间计算结果、地址等。
寄存器可以被看作是CPU内部的“工作区”,用于执行算术和逻辑运算。 -
寄存器文件(
Register File):
寄存器文件是一组寄存器的集合,它们被组织在一起,形成一个存储结构。
寄存器文件通常包含多个寄存器,每个寄存器都有一个唯一的标识符或编号。
寄存器文件允许CPU通过寄存器的编号来访问和操作这些寄存器。
寄存器文件是CPU内部的一个物理结构,它实现了寄存器的物理存储和访问。
简单来说,寄存器是单个的存储单元,而寄存器文件是这些寄存器的集合。寄存器文件提供了一个结构化的方式来管理和访问多个寄存器。在CPU的设计中,寄存器文件是实现寄存器存储和访问的关键组件。
将处理组织成阶段
- 取指(
fetch): 取指阶段从内存读取指令字节,地址为程序计数器(PC)的值。 - 译码(
decode): 译码阶段从寄存器文件读入最多两个操作数,得到值valA和valB。通常,它读入指令rA和rB字段指明的寄存器,不过有些指令是读寄存器%rsp的。 - 执行(
execute): 在执行阶段,算数/逻辑单元(ALU)要么执行指令指明的操作,计算内存引用的有效地址,要么增加或减少栈指针,这个阶段会检验条件和传送条件,如果条件成立,则更新目标寄存器。 - 访存(
memory): 访存阶段可以将数据写入内存,或者从内存读出数据。 - 写回(
write back): 写回阶段最多可以写两个结果到寄存器文件 - 更新
PC(PC update): 将PC设置成下一条指令的地址。
在计算机体系结构中,CPI(Cycles Per Instruction)是一个重要的性能指标,它表示执行一条指令所需的时钟周期数。CPI是衡量计算机运算速度的一个指标,它与程序的编写、ISA指令集和计算机的架构有关。CPI
的值越低,意味着每条指令平均需要的时钟周期数越少,从而计算机的性能越高效。
Chapter 5 优化程序性能
1 g 00 0 m 00 0 k 000 = = 1 × 1 0 9 1_{g}000_{m}000_{k}000 == 1 \times 10^9 1g000m000k000==1×109
-
当表明一个系统有
4GHz处理器,这表示处理器时钟运行频率为 4 × 1 0 9 4 \times 10^{9} 4×109个周期.每个始终周期的时间是始终频率的倒数。通常以纳秒(nanosecond,1纳秒的 1 0 − 9 10^{-9} 10−9秒)或皮秒(picosecond,1皮秒等于 1 0 − 12 10^{-12} 10−12秒)为单位.
一个4GHz的时钟,其周期为0.25纳秒或250皮秒. -
在实际的处理器中,是同时对多条指令进行求值的,这个现象被称为指令级并行.但是存在两个下界描述了程序的最大性能
- 延迟界限:在下一条指令开始之前,这条指令必须结束
- 吞吐量界限: 处理器功能单元的原始计算能力。这个界限是程序性能的终极限制
-
SIMD是"Single Instruction, Multiple Data"的缩写,最新版本为AVX (advanced vector extension),指用单条指令对整个向量数据进行操作。具备特殊的寄存器,比如长为512位长64字节的寄存器,每个寄存器都可以存放8个64位数,16个32位数。(一般长4个或8个字节,分别对应32位和64位机器) -
在
CPU架构中,CPE(Cycles Per Element)是一个衡量处理器性能的指标,它表示处理器执行特定计算任务时,每个数据元素所需的平均时钟周期数。CPE值越低,意味着处理器处理数据的效率越高。CPE的计算公式为:CPE = Total Cycles / Number of Elements,其中Total Cycles是执行任务所需的总时钟周期数,Number of Elements是处理的数据元素数量。
CPE值通常不会低于0.5,这主要是因为现代处理器的设计和工作方式。在执行计算任务时,即使是最简单的操作,如加载数据、执行算术操作或存储结果,也会涉及到多个时钟周期。例如,一个简单的浮点加法可能就需要多个周期来完成,包括取指令、执行指令、访存等步骤。此外,现代处理器的流水线和超标量设计允许在一个时钟周期内开始多条指令的执行,但这并不意味着每个元素的处理可以在一个时钟周期内完成。
相关文章:
[学习笔记]《CSAPP》深入理解计算机系统 - Chapter 4 处理器体系结构Chapter 5 优化程序性能
总结一些第四章和第五章的一些关键信息 Chapter 4 处理器体系结构将处理组织成阶段 Chapter 5 优化程序性能 Chapter 4 处理器体系结构 在硬件中,寄存器直接将它的输入和输出线连接到电路的其他盆。 在机器级变成中,寄存器代表的是 CPU 中为数不多的可寻…...
案例分享|我是这样转型做数据产品经理的?
本文为才聚学员投稿的原创作品,现在才聚正面向专业项目管理者征集“项目管理实战案例”原创文章,被采纳即可获得丰厚稿酬,欢迎大家关注公众号踊跃投稿。 如您有意向投稿,可将稿件投递给我们。 故事介绍 三段故事,讲…...
ffmpeg面向对象-rtsp拉流相关对象
目录 1.AVFormatContext和FFFormatContext类。1.1 概述1.2 构造函数1.3 oopc的继承实现 2. AVInputFormat 类。2.1 多态的实现 3.所用设计模式3.1模板模式3.2 工厂模式? 3.3 rtsp拉流建链 4.this指针5.小结6.rtsp拉流流程 1.AVFormatContext和FFFormatContext类。 …...
feign client发送Post请求,发送对象参数,服务端接收不到正确参数报错排查
记一次feignclient发送请求服务端接收不到正确参数排查 服务端代码: Operation(summary "Create team")PostMapping("post")RequiresPermissions("team:add")public RestResponse addTeam(Valid Team team) {this.teamService.crea…...
Hadoop林子雨安装
文章目录 hadoop安装教程注意事项: hadoop安装教程 链接: 安装教程 注意事项: 可以先安装ububtu增强功能,完成共享粘贴板和共享文件夹 ubuntu增强功能 2.这里就可以使用共享文件夹 或者在虚拟机浏览器,用 微信文件传输助手 传文…...
Springboot项目总结
1.为了调用写在其他包里面的类的方法 但是不使用new来实现调用这个类里面的方法,这个时候我们就需要将这个类注入到ioc容器里面,通过ioc容器来实现自动生成一个对象。 对ioc容器的理解:自动将一个对象实现new. 考察了and 和 or组合使用&…...
目标检测从入门到精通——数据增强方法总结
以下是YOLO系列算法(从YOLOv1到YOLOv7)中使用的数据增强方法的总结,包括每种方法的数学原理、相关论文以及对应的YOLO版本。 YOLO系列数据增强方法总结 数据增强方法数学原理相关论文图像缩放将输入图像缩放到固定大小(如448x44…...
SQL server 的异常处理 一个SQL异常 如何不影响其他SQL执行
在 SQL Server 中,存储过程中的 SQL 语句是顺序执行的。如果其中任何一个 SQL 语句遇到了错误或异常,那么默认情况下,这个错误会导致整个事务(如果有的话)回滚,并且存储过程会立即停止执行,不会…...
STM32——看门狗通俗解析
笔者在学习看门狗的视频后,对看门狗仍然是一知半解,后面在实际应用中发现它是一个很好用的检测或者调试工具。所以总结一下笔者作为初学小白对看门狗的理解。 主函数初始化阶段、循环阶段和复位 众所周知,程序的运行一般是这样的࿱…...
点亮第一盏LED灯 5): stm32CubeMX生成Keil代码
嵌入式入门,继续点亮第一盏LED灯,前面文章已经配置了GPIO引脚和时钟,那么基本上stm32CubeMX的配置就完成了,还有一点就是可以对PC13这个引脚起个别名, 这里起的别名是 LED_PC13,还有注意地方就是GPIO mode…...
ollama语言大模型部署使用
ollama语言大模型部署使用 前言一、下载安装maxkb1、下载解压赋权2、安装 二、安装ollamadocker运行 三、无需获取api_keymaxkb安装ollama模型对,就是这,你选好基础模型后,只需要给他地址,添加完成后自行调用ollama安装你选择好的…...
redis 基本数据类型—string类型
一、介绍 Redis 中的字符串,直接就是按照二进制数据的方式存储的,不会做任何的编码转换。 Redis对于 string 类型,限制了大小最大是512M 二、命令 SET 将 string 类型的 value 设置到 key 中。如果 key 之前存在,则覆盖&#…...
Git 使用教程:从入门到精通
Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 创建,用于有效、高速地处理从小到大的项目版本管理。本教程将带你从 Git 的安装开始,逐步学习到如何使用 Git 进行日常的版本控制操作。 安装 Git Windows 访问 Git 官方网站 下载 …...
ES查询的一些优化方式
ES查询的一些优化方式 filter和query Query会计算得分,filte不是, 整体上query会更耗时 字段方式: KEYWORD 和 text, Text检索的方式往往会占用更多性能,它往往需要伴随着模糊匹配和分词 分页的大小 From 和size的大小合理设置…...
计算左边(比自己小的元素)的最长距离
前言:一般做的题目都是使用单调栈来求出距离这个点最近的那个比这个数大或小的元素,但是如果是需要找到最远的那个元素呢?我们可以用到类似逆序对的思路,我们先进行排序从小到大,接着我们先处理左边,每次维…...
【C++算法】二分查找
二分查找 题目链接 二分查找https://leetcode.cn/problems/binary-search/ 算法原理 代码步骤 代码展示 class Solution { public:int search(vector<int>& nums, int target) {int left 0, right nums.size() - 1;while(left < right){// 防止溢出int mid …...
红日靶场通关
初始准备 首先是网络配置,看教程来的,我配置完的效果如下 windows7:(内:192.168.52.143 / 外:192.168.154.136) windows2003:(内:192.168.52.141)windows2008:(内:192.…...
用Python爬虫制作一个简易翻译器
我们通常是通过requestsBS4的方法来获取网页内容,这种方法导入模块较多,速度相对有点儿慢,此时我们可以用requests的post方法向指定服务器发送请求,获取数据后格式化为json,然后获取相关键值。这种方法用到了requests和…...
Shader Graph Create Node
一、Artistic 1、Adjustment 1)、Channel Mixer(通道混合) 根据权重对每个通道进行混合。 Contrast(对比度) 可调整对比度 调整对比度可以改变图像的鲜明度和层次感。增加对比度会使图像中的明暗差异更加显著,使图像看起来更加清晰、明亮;减少对比…...
共模干扰的形成和滤除
1、共模就是共同对地的干扰: 如图,我们可以看到共模的原理图。UPQ就是共模电压,ICM1 ICM2 就是共模电流。 ICM1 ICM2 大小不一定相同,方向相同。 2、共模信号和差模信号的区别: 通常电源线有三根线:火线L、…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
DAY 45 超大力王爱学Python
来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...
