当前位置: 首页 > news >正文

[学习笔记]《CSAPP》深入理解计算机系统 - Chapter 4 处理器体系结构Chapter 5 优化程序性能

总结一些第四章和第五章的一些关键信息

  • Chapter 4 处理器体系结构
    • 将处理组织成阶段
  • Chapter 5 优化程序性能

Chapter 4 处理器体系结构

在硬件中,寄存器直接将它的输入和输出线连接到电路的其他盆。
在机器级变成中,寄存器代表的是 CPU 中为数不多的可寻址的字,这里的地址是寄存器的 ID。这些字通常都存在寄存器文件中,虽然我们会看到硬件有时
可以直接将一个字从一个指令传到另一个指令,以避免先写寄存器文件再读出来的延迟。

  • 寄存器(Register):
    寄存器是CPU内部的小型、快速的存储单元。
    它们用于存储指令、数据、地址等信息,以便快速访问和处理。
    寄存器通常用于临时存储操作数、中间计算结果、地址等。
    寄存器可以被看作是CPU内部的“工作区”,用于执行算术和逻辑运算。

  • 寄存器文件(Register File):
    寄存器文件是一组寄存器的集合,它们被组织在一起,形成一个存储结构。
    寄存器文件通常包含多个寄存器,每个寄存器都有一个唯一的标识符或编号。
    寄存器文件允许CPU通过寄存器的编号来访问和操作这些寄存器。
    寄存器文件是CPU内部的一个物理结构,它实现了寄存器的物理存储和访问。
    简单来说,寄存器是单个的存储单元,而寄存器文件是这些寄存器的集合。寄存器文件提供了一个结构化的方式来管理和访问多个寄存器。在CPU的设计中,寄存器文件是实现寄存器存储和访问的关键组件。

将处理组织成阶段

  • 取指(fetch): 取指阶段从内存读取指令字节,地址为程序计数器(PC)的值。
  • 译码(decode): 译码阶段从寄存器文件读入最多两个操作数,得到值 valAvalB。通常,它读入指令rArB字段指明的寄存器,不过有些指令是读寄存器%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

  1. 当表明一个系统有 4GHz 处理器,这表示处理器时钟运行频率为 4 × 1 0 9 4 \times 10^{9} 4×109个周期.每个始终周期的时间是始终频率的倒数。通常以纳秒(nanosecond, 1纳秒的 1 0 − 9 10^{-9} 109秒)或皮秒(picosecond, 1皮秒等于 1 0 − 12 10^{-12} 1012秒)为单位.
    一个4GHz的时钟,其周期为 0.25纳秒或250皮秒.

  2. 在实际的处理器中,是同时对多条指令进行求值的,这个现象被称为指令级并行.但是存在两个下界描述了程序的最大性能

    • 延迟界限:在下一条指令开始之前,这条指令必须结束
    • 吞吐量界限: 处理器功能单元的原始计算能力。这个界限是程序性能的终极限制
  3. SIMD"Single Instruction, Multiple Data"的缩写,最新版本为 AVX (advanced vector extension),指用单条指令对整个向量数据进行操作。具备特殊的寄存器,比如长为512位长64字节的寄存器,每个寄存器都可以存放864位数,1632位数。(一般长4个或8个字节,分别对应32位和64位机器)

  4. 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——看门狗通俗解析

笔者在学习看门狗的视频后,对看门狗仍然是一知半解,后面在实际应用中发现它是一个很好用的检测或者调试工具。所以总结一下笔者作为初学小白对看门狗的理解。 主函数初始化阶段、循环阶段和复位 众所周知,程序的运行一般是这样的&#xff1…...

点亮第一盏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 …...

红日靶场通关

初始准备 首先是网络配置&#xff0c;看教程来的&#xff0c;我配置完的效果如下 windows7&#xff1a;(内&#xff1a;192.168.52.143 / 外&#xff1a;192.168.154.136) windows2003&#xff1a;(内&#xff1a;192.168.52.141)windows2008:&#xff08;内&#xff1a;192.…...

用Python爬虫制作一个简易翻译器

我们通常是通过requestsBS4的方法来获取网页内容&#xff0c;这种方法导入模块较多&#xff0c;速度相对有点儿慢&#xff0c;此时我们可以用requests的post方法向指定服务器发送请求&#xff0c;获取数据后格式化为json&#xff0c;然后获取相关键值。这种方法用到了requests和…...

Shader Graph Create Node

一、Artistic 1、Adjustment 1)、Channel Mixer(通道混合) 根据权重对每个通道进行混合。 Contrast(对比度) 可调整对比度 调整对比度可以改变图像的鲜明度和层次感。增加对比度会使图像中的明暗差异更加显著&#xff0c;使图像看起来更加清晰、明亮&#xff1b;减少对比…...

共模干扰的形成和滤除

1、共模就是共同对地的干扰&#xff1a; 如图&#xff0c;我们可以看到共模的原理图。UPQ就是共模电压&#xff0c;ICM1 ICM2 就是共模电流。 ICM1 ICM2 大小不一定相同&#xff0c;方向相同。 2、共模信号和差模信号的区别&#xff1a; 通常电源线有三根线&#xff1a;火线L、…...

IDEA 2018.2.3 下 Maven 依赖包消失?别慌,可能是版本兼容性在作祟

IDEA 2018.2.3 下 Maven 依赖包消失的深度排查指南 当你打开一个尘封已久的老项目&#xff0c;准备继续维护或迁移时&#xff0c;突然发现IDEA的External Libraries里空空如也&#xff0c;只剩下孤零零的JDK包&#xff0c;整个项目文件一片飘红——这种场景对许多维护历史代码库…...

高性能键盘映射与SOCD清理架构解析:解决游戏输入冲突的技术方案

高性能键盘映射与SOCD清理架构解析&#xff1a;解决游戏输入冲突的技术方案 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在竞技游戏和高速动作游戏中&#xff0c;键盘输入的处理方式直接影响玩家的操作精度和…...

从零构建团队技能仓库:结构化知识管理与VuePress实践

1. 项目概述&#xff1a;一个技能仓库的诞生与价值 最近在整理团队内部的技术资产时&#xff0c;我一直在思考一个问题&#xff1a;如何让那些散落在个人笔记、项目代码片段、会议纪要里的“隐性知识”和“最佳实践”沉淀下来&#xff0c;变成团队可复用、可传承的“显性资产”…...

别再为嵌入式设备大内存发愁了!手把手教你用CMA(连续内存分配器)搞定Linux视频编解码缓冲区

嵌入式多媒体开发中的连续内存优化实战&#xff1a;CMA技术深度解析 在嵌入式多媒体开发领域&#xff0c;视频编解码、图像处理等任务对内存管理提出了严苛要求。当你在树莓派上部署视频监控系统&#xff0c;或在工业摄像头中实现实时H.264编码时&#xff0c;是否经常遇到这样的…...

开源AI图像生成工具Dream-Creator:本地部署与Stable Diffusion实战指南

1. 项目概述&#xff1a;一个开源的AI图像生成与创作工具 最近在GitHub上闲逛&#xff0c;发现了一个挺有意思的项目叫“Dream-Creator”。光看名字&#xff0c;你可能会联想到一些AI绘画或者创意生成工具。没错&#xff0c;这确实是一个围绕AI图像生成的开源项目。作为一个在…...

Kubernetes部署Valheim游戏服务器:云原生技术赋能游戏运维实践

1. 项目概述&#xff1a;当维京英灵殿遇上容器编排如果你和我一样&#xff0c;既沉迷于《英灵神殿》&#xff08;Valheim&#xff09;里与好友共建家园、挑战上古巨兽的乐趣&#xff0c;又恰好是一名整天和Kubernetes&#xff08;k8s&#xff09;打交道的开发者或运维&#xff…...

OCT-X算法:早期胃癌AI检测的技术突破与应用

1. OCT-X算法&#xff1a;早期胃癌AI检测的技术突破在医疗影像分析领域&#xff0c;胃癌早期检测一直面临着巨大挑战。传统内窥镜检查依赖医生经验判断&#xff0c;存在主观性强、漏诊率高等问题。我们团队开发的OCT-X&#xff08;One Class Twin Cross Learning&#xff09;算…...

基于HalloWing的交互式徽章:传感器融合与事件驱动编程实践

1. 项目概述&#xff1a;当硬件开发遇上节日创意如果你和我一样&#xff0c;是个喜欢在万圣节搞点“技术流”小把戏的硬件爱好者&#xff0c;那么手头有一块Adafruit的HalloWing开发板&#xff0c;绝对能让你的节日装备脱颖而出。这不仅仅是一个简单的微控制器项目&#xff0c;…...

All in Token, 移动,电信,联通,阿里,百度,华为,字节,Token石油战争,Token经济,百度要“重写”AI价值度量

AI Agent的价值&#xff0c;应该怎么被衡量&#xff1f; 2026年&#xff0c;AI行业的标志性拐点是Agent&#xff08;智能体&#xff09;快速普及。Agent作为核心生产力载体&#xff0c;将AI从Chatbot聊天模式带进主动执行的办事时代。 这个时候&#xff0c;如果我们还用旧尺子…...

基于WebSocket的机械爪远程控制桥接系统设计与实战

1. 项目概述&#xff1a;一个连接物理世界与数字世界的“机械爪”远程控制桥最近在捣鼓一个挺有意思的开源项目&#xff0c;叫lucas-jo/openclaw-bridge-remote。光看名字&#xff0c;你可能觉得这又是一个关于机器人或者机械臂的遥控项目&#xff0c;但实际深入进去&#xff0…...