首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >计算机组成原理---指令流水线和总线系统的概述

计算机组成原理---指令流水线和总线系统的概述

原创
作者头像
阑梦清川
发布2025-07-01 12:28:48
发布2025-07-01 12:28:48
1110
举报

[!hint] 大家好,我是阑梦清川,一个非正经的计算机专业的学生,兼业余写作爱好者

本篇文章聚焦于指令流水线总线系统的相关的问题:

1.指令流水线

下面的这个图就是指令流水线,一般是5段式的流水线

下面的这个是资源冲突,就是我们在这个流水线的执行的过程里面,假设就是I1和I3两个吧,同时面对与这个3这个时间的时候,我们的3需要的是数据,因为他执行到了我们的这个指令的执行的阶段,需要使用数据;

但是我们的I3执行到的事第一阶段,也就是取指令的阶段,因此这个时候I3流水需要的是我们的的指令,这个时候我们的3这个时间段应该如何抉择呢,面对不同的流水线的不同的需求;

这个时候就是指令cache和数据cache相互分离,搞两个存储器,一个是指令存储器,一个是数据存储器,分别满足不同的这个流水线上面的需求即可;

或者是暂停某一个流水线,让其中一个先执行,我们的这个3分别提供相应的这个资源让我们的两个流水线分别进行操作即可;

fig:
fig:

下面的这个是控制冲突,主要就是有jump跳转指令一起的,导致的后果就是我们的流水线无法按照这个顺序进行执行,出现这个样子的冲突;

fig:
fig:

下面的这个是数据冲突,是因为这个数据之间的相互依赖导致的冲突;

第一个add里面写r1的数值,但是需要等到最后,我们还没有写进去的时候,后面的三个指令都使用到了r1,这个时候就存在冲突,但是这个xor读取这个r1的时候已经不存在这个数据相关了,因为这个时候r1已经在这个流水线上面完成了这个写会的过程;

fig:
fig:

解决方案:数据旁路技术,或者说是专用的数据通路的技术,我们后面需要使用r1的直接把这个add计算的结果拿到手,不等add里面的最后写入的过程;

读写冲突的问题:按照顺序发射乱序发射导致的三种不同类型的这个数据冲突的问题;

fig:
fig:

2.看点题目

通过下面的这个题目,可以帮助我们对于指令流水线的实现的特点进行理解:

fig:
fig:

3.总线系统

主要就是对于总线系统的理解和总线的分类(依据不同的分类的标准):我使用导图展示了出来;

fig:
fig:

4.IO接口和方式

下面的这个是我们的IO接口根据不同的方式进行分类以及我们的IO端口的两种不同的编址的方式

fig:
fig:

下面的这个是4种不同的IO方式

fig:
fig:

下面的这个是我们的一道简单的判断的题目,帮助我们去进行理解:

fig:
fig:

其中针对于这个DMA的传输方式和CPU的关系以及DMA自身的一些特点,我进行了更加详细的总结:

fig:
fig:

5.虚拟存储器的补充

主要分为我们的段式虚拟存储器,页式虚拟存储器和段页式的虚拟存储器:

fig:
fig:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.指令流水线
  • 2.看点题目
  • 3.总线系统
  • 4.IO接口和方式
  • 5.虚拟存储器的补充
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档