6.6aaaaaa

BTB

那BTB判断是怎么完成判断的?对于某个pc,是所有的pc都会由BTB进行判断吗?

那BTB里的结构是怎样的?即代码是如何实现的?valid entry当中有哪些数据?她的btb_pc地址是虚拟地址还是物理地址?


现在的理解是,在T时刻取出a的pc地址,假设是跳转和不是两种情况;BTB完成预测是在ID还是IF,我知道BTB在ID阶段会有作用;对于跳转指令,当T1时刻,a取完指令到了ID,分析判断完是跳转,此时IF阶段去取指令的pc是+4还是预测的pc?我知道如果没有BTB就肯定是+4,然后分支跳转会清除掉此时IF上的错误指令,造成IF上的气泡;然后T3时刻,ID上就是空气泡,IF上才是对的真指令,

以及对于分支指令,是只到ID是吧,EX没作用,是不是就相当于EX,MEM,WB都是空气泡了?

然后如果拆分到六级流水线了,ID2才是动态发射,那T1时刻a还在ID1不知道要不要跳转,T2时刻BTB才知道是不是真的跳转,那么此时流水线上已经填充了两条错误指令了,即IF和ID1,这样理解对吗?

结构

RAS

RAS是什么?和BTB有什么区别?

分支指令

你说BTB负责b/bl和条件分支,RAS负责jirl,但问题是来了一个pc后,没到ID阶段,BTB和RAS都不知道这个PC对应的指令到底是什么,那返回的结果到底取哪个?


TLB

当前代码中关于TLB的设计,关于虚实地址转换的机制和流程是怎样的?以及CPU能同时运行多个进程吗?即对于相同的虚拟地址,CPU能知道这是不同进程的,转换到物理地址后能从实际的RAM中访存吗?

DMW

DMW不区分进程,那举一个它完整应用的流程?就是有背景的那种,现在完全理解不到不区分进程的虚实地址转换是如何保证安全性以及做数据区分的

比如进程A在内存上有物理页pa,那么CPU访问就是用va,然后结合A的进程号来得到pa;那内核要直接访问pa,"内核 VA = 0x8000_0000 + 0x0123_4000

= 0x8123_4000"前面加的这个东西是什么?以及后面的是pa吧?这不就相当于一开始加了个数,后面又减去,有什么意义?以及内核为什么要访问一个进程A的物理页?


那"0x8000_0000 + pa"是在哪进行的?IF阶段?我只知道解析VA是在ID阶段的;以及内核也得知道要访问的地址是用户进程的页才加这个0x8,还是说对任意的pc,都会加0x8?以及真实内存空间中,除了进程的物理页以外还有哪些数据?CPU是如何访问的?

那既然内核已经知道是要访问一个地址了,为什么还要加上一个数?就是说,为什么不直接发物理地址呢?更进一步地说,我完全不理解DMW存在的意义是什么,关键不是在于对PLV是否为内核的判断,而不是是否落在DMW窗口内的判断;即,如果是处于内核态,那不就可以直接把地址当成物理地址来访问

那DMW窗口值,是由谁来确定的?操作系统内核?还是CPU?我只知道操作系统内核和CPU都知道DMW的窗口值,这个值是否会发生变化,如果发生变化或由一方建立时,如何让另一方也知道?以及DMW窗口是否是最多只能有一个?


那对于普通的虚拟地址,CPU是如何结合ASID,来锁定到真实物理地址的?

相关推荐
feng_you_ying_li5 分钟前
linux之Udpsocket实践
linux·运维·c#
SatanII9 分钟前
从零认识云计算|走进云时代,看懂服务器底层基石
运维·服务器·云计算
电商API_1800790524715 分钟前
自动化获取淘宝评论数据技术分享之API调用示例
大数据·运维·人工智能·自动化·网络爬虫
数智启示录16 分钟前
实时数据湖 flink CDC + Kafka +Doris 【企业级实战】性能调优与生产运维闭环 09
运维·flink·kafka
福建佰胜张工19 分钟前
西门子 ULTRAMAT23 分析仪 7MB2337‑0NH10‑3PW1 原理、调试、故障处理与现场运维全记录
大数据·运维·人工智能·自动化
啦啦啦啦啦zzzz20 分钟前
ET和LT详解
linux·运维·服务器·网络·c++·网络编程
田径他爸来了23 分钟前
嵌入式学习第32天(同时多个用户访问的服务器)
运维·服务器·学习
wefg126 分钟前
C++ 仿 muduo 库实现高并发服务器
运维·服务器
梦難33 分钟前
linux的系统命令
linux·服务器·网络
Java小白笔记35 分钟前
Java中PDF文件导出,生成链路与实现
服务器·网络·oracle