中断挂起是什么意思_浏览器输入网址并回车发生了什么你真的清楚吗? 硬件篇...

32cda098c33c8cf253076703faff2cf5.png

相信很多人对这个问题可能嗤之以鼻,浏览器输入网址后回车不就是发生了dns解析,找到ip,然后建立tcp连接,什么三次握手,四次挥手,然后服务端接受请求回传给浏览器,浏览器渲染出页面吗,这有什么好说的。

可是真的是这样吗,真的有这么简单吗?

相信我问一个问题90%的搞软件的同学都答不上来,按下键盘到该字符显示到屏幕上都发生了什么?是不是开始怀疑自己了,要想弄清楚这个问题涉及到中断,cpu动态流水线等,本文就来厘清这些概念。本文中参考了胡伟武老师的 计算机体系结构课件相关内容,以国产CPU龙芯为例进行讲解,本质跟Intel CPU机制类似。

因本人研究生搞的是硬件,CPU研发(胡老师就是我老师哦),一以贯之贯吾道!

键盘输入的硬件过程

• 以龙芯处理器为例

* 键盘产生一个信号送到桥片(南桥、北桥)

* 桥片通过HT总线向处理器发出外部中断信号

* 外部中断信号传到控制寄存器模块与Cause的屏蔽位相与

* 如果没有被屏蔽,再传到寄存器重命名模块并附在四条指令的第一条

中送到ROB模块;由于该指令发生了例外,不会送到功能部件执行

* 当该指令成为ROB的第一条指令被提交时向所有模块发出取消信号,

取消该指令后面的所有指令,在EPC等寄存器中保存例外现场,同时

在控制寄存器Status中把系统状态置为核心态。

* 向取指模块发出中断信号,取指模块根据中断类型到0x80000180取指

以龙芯处理器+Linux操作系统为例

• 0x80000180为操作系统例外处理代码

• 操作系统保留现场(把通用寄存器保存到堆栈区)

• 操作系统通过读Cause寄存器分析例外原因是外部中断

• 操作系统向桥片中的中断控制器读中断原因,读的同时清中断

• 操作系统根据中断原因调用驱动程序,读取键盘数据

• 操作系统唤醒正在由于等待数据而阻塞的进程

• Chrome根据读到的键盘数据决定显示出来,调用显示驱动程序

• 驱动程序把要显示的内容送到显存,并通知GPU

• GPU通过访问显存空间刷新屏幕

等等,是不是看到里面很多个概念,其余的大家自行百度搜索,此处终点讲解下ROB模块是什么。

首先需要讲下Tomasulo算法:

Tomasulo算法是用来实现动态流水线的一个算法结构,大量用在现代CPU的设计中,Intel、龙芯等CPU都是用的该技术。

5fd65264d4d19c45088655c43fd54cda.png

不知上图你看懂了没有,保留站就是类似软件系统中的缓冲队列,寄存器就是通常意义上的寄存器,就是在各个部件前面加了一些保留站,为什么要加这个呢,以为指令执行的时候有些源操作数还没有准备好,需要等它们准备好后再送到加/减法器等去执行。

aa6b2899db17bc08b02c1dbf4fe94774.png

a9fcee9350d590f1395d121d17e4121e.png

例外的意思就是中断和异常等了,很多事情可以触发例外,比如本文的敲击键盘就会触发,例外给CPU动态流水线的实现增加了难度,因为是乱序执行,需要有个机制保证例外前的指令都执行了,例外后的执行都未执行,此时重排序缓存该出场了,就是用来做顺序提交的。

9dd4d8962c133d944fc93fa79f6aaad1.png

下图是增加了ROB的流水线,注意图中右下角。

30e461da155ceaabda7010839a5c43e6.png

e9db56428162ffdf40ab93bd0e7d86a5.png

ROB的重要思想就是先将对寄存器的修改写到ROB中,指令的读取也去ROB中读,这样可以避免在指令的中间执行过程中,去修改寄存器的问题。

这时候下次面试官问你发生了什么的时候,这个时候你可以扶一下自己的眼镜,背部靠到椅子上,开始装逼了~

声明: 本文中图片的内容引用了 胡伟武老师的计算机体系结构课件。

想要获取完整版,关注并回复公众号: "胡伟武" 即可获取课件完整版下载链接。

文中主要引述了。其中01_计算机系统结构基础.pdf和LEC05_动态调度.pdf ,想要有更深入了解的可以去仔细研读下。

如果您觉得公众号对您有帮助,关注如下图的公众号支持下,最新文章都将先发布在公众号中~

df552c99e0b38415d8fa51a242b595a5.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值