搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
木道寻08
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
github上传文件/项目-拉取项目_github复制url在哪找
2
不输ChatGPT!盘点国产功能强大且免费的大语言模型Top6!_路线1路线2路线3国产_国产大语言模型
3
【AI】一键视频转动漫工具 | 画面连续一致 | 完全无闪烁 | 神级软件
4
ffmpeg 内存模型
5
学内核之一:基于QEMU搭建Linux内核启动调试环境_(qemu:17332):
6
python的gui界面怎么打开,python的gui界面程序爬虫_python如何打开代码ui
7
自然语言处理(NLP)技术_nlp技术 csdn
8
Python - 实现数据库的数据导出到 Excel_python sql 导出excel
9
kafka零拷贝sendfile及mmap简述_kafka使用sendfile
10
Elastic 线下 Meetup 将于 2024 年 8 月 25 号在南京举办
当前位置:
article
> 正文
深入理解计算机系统(csapp)阅读笔记——第四章处理器体系结构_csapp第四章好难
作者:木道寻08 | 2024-08-13 06:05:44
赞
踩
csapp第四章好难
文章目录
Y86-64指令集体系结构
2.逻辑设计和硬件控制语言HCL
3.Y86-64的顺序实现
(1)将处理组织成阶段
(2)一些指令的通用模式
(3)SWQ的硬件结构
4.流水线的通用原理
Y86-64指令集
体系结构
定义一个指令集体系结构包括定义各种状态单元、指令集和它们的编码、一组编程规范和异常事件的处理
程序员可见状态:程序中的每条指令都会读取或修改处理器状态的某个部分
Y86-64指令
movq前面的两个字母的意义:显式指明源和目的地格式。源可以是立即数(i)、寄存器(r)或内存(m)。
OPq包含addq、subq、andq和xorq。
halt指令停止指令的执行,并将状态码设置为HLT
rA或rB,用于指定数据源和目的地寄存器,没有寄存器操作数的指令,就没有寄存器指示符字节。
那些只需要一个寄存器操作数的指令将另一个寄存器指示符设为0xF
有的指令需要一个附加的4字节常数字。这个字能作为irmovq的立即数数据,rmmovq和mrmovq的地址指示符的偏移量,以及分支指令和调用指令的目的地址
Y86-64 指令编码
每个指令1~10个字节不等,第一个字节高四位是代码部分,低四位是功能部分
寄存器编码
程序寄存器存在CPU的一个寄存器文件中,这个寄存器文件就是一个小的、以寄存器ID作为地址的随机访问存储器。在指令编码中以及在我们的硬件设计中国,当需要指明不应访问任何寄存器时,就用ID值0xF表示
Y86-64异常
2.逻辑设计和硬件控制语言HCL
逻辑门
逻辑门总是活动的,一旦一个门的输入变化了,在很短的时间内,输出就会相应的变化
组合电路:将很多的逻辑门组成一个网,就能构建计算快,称为组合电路。如何构建这些网有几个限制:
字级组合电路的位级实现:
在HCL中,我们将所有字级的信号都声明为int,不指定字的大小
考虑两类存储器设备:
硬件寄存器是如何工作:
程序寄存器是如何工作:
处理器有一个随机访问存储器来存储程序数据:
3.Y86-64的顺序实现
SEQ处理器:每个时钟周期上,SEQ执行处理一条完整指令所需的所有步骤。
(1)将处理组织成阶段
取指(fetch)
:取指阶段从内存读取指令字节,地址为程序计数器(PC)的值。取出的指令可能有如下:、
指令指示符字节的两个四位部分。
寄存器指示器字节
四字节常数字valC
译码(decode)
:译码阶段从寄存器文件读入最多两个操作数(ra和rb字段指明的寄存器),得到值valA和/或valB
执行(execute)
:算数/逻辑单元要么执行指令指明的操作,计算内存引用的有效地址,要么增加或减少栈指针。得到的值我们称为valE
访存(memory)
:访存阶段可以将数据写入内存,或者从内存读出数据,读出的值称为valM
写回(write back)
:写回阶段最多可以写两个结果到寄存器文件
更新PC(PC upodate):将PC设置成下一条指令的地址
(2)一些指令的通用模式
整数操作指令
进栈出栈指令(访存阶段右边应该是valM)
控制转移指令
跳转指令在执行阶段,检查条件码和跳转条件来确定是否要选择分支,产生出一个一位信号Cnd,如果为1就跳转,为0就执行下一条指令
(3)SWQ的硬件结构
SEQ的抽象视图
SEQ的详细硬件结构
SEQ时序控制的理由:
SEQ时序控制的原则:从不回读,即处理器从来不需要为了完成一条指令的执行而去读由该指令更新了的状态。
每次时钟由低变高时,处理器开始执行一条新的指令
4.流水线的通用原理
流水线化的一个重要特性就是
提高了系统的吞吐量
,也就是单位时间内服务的顾客总数,
不过它也会轻微地增加延迟
。
在现代逻辑设计中,电路延迟以微微秒或皮秒(ps),也就是10
-12
秒为单位来计算。
系统最大吞吐量 = 1 / 处理一条指令的延迟
即每秒能执行多少条指令,单位为IPS
流水线操作实现
流水线的局限性(降低流水线效率的因素)
不一致的划分
不同于刚刚的等分,我们把三个阶段分为50ps,150ps,100ps,会导致如下效果
流水线必须以最长的时间为准,从而导致大量时间的浪费
流水线过深,收益反而下降
分成多块后延迟也增加到了每一块,总延迟增大,并没有什么好处
为了提高时钟频率,线代处理器采用了很深的流水线。处理器架构师将指令的执行划分成很多非常简单的步骤,将每段延迟将至最低。
流水线的数据和控制相关
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/木道寻08/article/detail/973540
推荐阅读
article
CSAPP
B
站陪跑
视频
学习
笔记...
视频
地址栈的作用:局部变量和参数:当函数被调用时,函数的局部变量和参数会被分配到栈上。这是因为这些变量的生命周期通常只限...
赞
踩
article
CSAPP
: Attack
lab
_
csapp
之
attach
lab
为什么
一直成功不了...
命运多舛的attack
lab
从上周卡到今天,愣是卡死在phase2一度以为这次要gg了…不过今天心理学课灵感大开!!瞬间...
赞
踩
article
【
CSAPP
】探究
BombLab
奥秘:
Phase
_6的解密与实战_
csapp
bomb
lab: p...
这篇博文深度挖掘了
CSAPP
(Computer Systems: A Programmer's Perspective)...
赞
踩
article
【
CSAPP
】探究
BombLab
奥秘:
Phase
_3的解密与实战_
bomb
lab
phase3
...
在这篇博文中,作者深入解析了
CSAPP
(Computer Systems: A Programmer's Perspec...
赞
踩
article
CSAPP
深入
理解
计算机系统
笔记_不周
山之读
薄
csapp
...
csapp
的学习从2019.3.18开始。从05.10-08.01这几个月一直工作,重心转去学了点软件工程和面向对象的东...
赞
踩
article
《
CSAPP
》笔记——
信息
表示、指令、
处理器
、性能
优化
、储存层次_
csapp
笔记...
简言之,这门课不会帮助你更好的写代码,但是会让你深刻地认识到计算机体系中各个部件的构成,配合,可能出现的问题,以及如何优...
赞
踩
article
《
深入
理解
计算机系统
》(
CSAPP
)
读书笔记
——
第一章
计算机系统
漫游...
本章通过跟踪hello程序的生命周期来开始对
计算机系统
进行学习。一个源程序从它被程序员创建开始,到在系统上运行,输出简单...
赞
踩
相关标签
学习
笔记
CSAPP
attacklab
计算机系统基础
BombLab
Phase_6
解密技巧
实战经验
Phase_3
逆向工程
程序攻击
csapp
深入理解计算机系统
系统架构
嵌入式软件
操作系统
读书笔记
计算机组成原理