计算机组成原理笔记-程序员宅基地

技术标签: 计算机基础  



在这里插入图片描述

一、计算机的基本组成

在这里插入图片描述在这里插入图片描述

  • MDR:memory data register主存数据寄存器
  • MAR:memory address register主存地址寄存器

在这里插入图片描述
完成一条指令分为了三个阶段:取指令-分析指令-执行指令。

下面我们分析上图的取数指令。(取数指令 ≠ 取指令 , 取数指令需要实施取指令、分析指令)

  1. 取指令

    要执行的指令的地址我们是保存在PC当中的,取数指令这条指令的地址是保存在存储体当中的。所以,取指令的第一个操作,就是PC(PC给出了取数指令这条指令它所在的内存单元地址)要把指令的地址送给MAR,再由MAR送给存储体。在控制器的控制下,存储体把指定存储体中保存那条取数指令取出送到MDR中。取出的指令送到IR(IR的功能就是保存当前正在执行的指令)。总结就是取指令将内存中的取数指令取出送到了IR。
  2. 分析指令

    指令寄存器IR当中保存的指令(当前为取数指令)的操作码部分送给CU,经过译码,CU上面的信号将控制相应的执行部件去执行指令要去的相关操作。
  3. 执行指令

    我们这条指令是取数指令,取数指令的功能是把保存在内存单元M中的数据取到ACC寄存器中,为了完成这个操作,在控制器的控制下,我们要把指令当中的地址部分送给存储器,以便我们把数据从存储体取出。

    这个操作还是从IR开始,因为IR当中保存了当前这条指令,同时也保持了当前这条指令操作数的地址,我们从IR的地址码部分把地址取出送给MAR,然后由MAR送入给存储体,在控制器的控制之下,从存储体中把我们取数指令取的数取出送入MDR,然后送给ACC。总结就是执行取数指令,将取出的数放到ACC。

二、总线

我们采用总线方式实现外部设备与系统主机的连接,外部设备有地址,主机通过地址确认这次数据传输与哪个设备参与此次输入输出。
在这里插入图片描述

2.1 总线控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
问,小端不是87654321吗?

三、主存储器

3.1 RAM

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 存储器与CPU相连

在这里插入图片描述在这里插入图片描述

3.3 存储器校验

在这里插入图片描述
在这里插入图片描述

3.4 提高存储器访问速度

  • 采用更高速器件
  • 采用层次结构 cache - 主存
  • 调整主存结构

下面主要介绍第三种。

原本我们介绍的主存的结构都是主存当中一个存储字长等于机器字长,也就是说cpu在执行一条指令的时候,如果想取指令的话,指令长度假设和存储字长相等,一次在存储器当中只能取一条指令(一次在存储器当中,如果取数也只能取机器字长相等的数据)。

这是我们就需要调整主存结构使得CPU和存储器存储速度能够匹配。
在这里插入图片描述

多体并行方式有两种,其中高位交叉编址的多体存储器中,程序按体内地址顺序存放,而低位交叉编址的多体存储器中,程序连续存放在相邻体中

  • 高位交叉:各个体并行工作

    并行工作的高位交叉编址的多体存储器结构示意图,图中程序因按体内地址顺序存放(一个体存满后,再存入下一个体),故又有顺序存储之称。

    高位地址可表示体号,低位地址为体内地址。按这种编址方式,只要合理调动,使不同的请求源同时访问不同的体,便可实现并行工作。例如,当一个体正与CPU交换信息时,另一个体可同时与外部设备进行直接存储器访问,实现两个体并行工作。这种编址方式由于一个体内的地址是连续的,有利于存储器的扩充。

    优点:主要有利于扩大常规主存容量。
    缺点:即使每个存储体都可独立工作,但因为程序的连续性和局部性,在程序执行过程中被访问的指令序列和数据绝大多数会分布在同一存储体中,那么,就只有一个存储体在不停地碌,其他存储体是空闲的。

  • 低位交叉:各个体轮流编址

    低位交叉编址的多体模块结构示意图。由于程序连续存放在相邻体中,故又有交叉存储之称。低位地址用来表示体号,高位地址为体内地址。这种编址方式又称为模M编址(M等于模块数),一般模块数取2的方幂,使硬件电路比较简单。有的机器为了减少存储器冲突,采取质数个模块。

    优点:大幅度提高主存储器的速度。
    缺点:从直观上看,增加存储体个数能够提高主存储器的速度,但是,主存储器的速度不是随存储体个数的增加而线性提高的。

以实际数据为例,比如说某个存储体的有2个存储芯片,每个芯片的存储周期为100ns,如果你去读数据,如果你的数据按照这种放置方法,先放第一个芯片,放满后再放第2个芯片(顺序方式)。那么你读数据的过程就是这样:

读0位置数据,等100ns,读1位置数据,等100ns读2位置数据。很容易理解。

但如果你换个方式来放,比如说我0位置是1号芯片起始,1位置是2号芯片起始位置,2位置是1号芯片第2个单元,3位置是2号芯片的第2个单元这样交叉来编址。再回忆存储周期的概念:其实从芯片中把数据读到缓冲区,再从缓冲区读到CPU,这个读的过程非常短,仅仅是个脉冲就可以解决的问题,但由于芯片的物理属性,你读一个芯片后,必须间隔一段时间才能去读。采用交叉编址后,你的读过程就像这样:

读0位置数据到缓冲区,40ns后,CPU取走了数据。这时1号芯片的100ns的周期还没过,不能去读,但幸运的是我们读的不是1号芯片,而是2号芯片,这样,我们就把2号芯片的数据读到缓冲区。过了40ns后,CPU取走数据,此时过去了80ns,我们只需再等20ns就可以继续去读3号位置数据,这样速度就比以前快了很多

练习:
一个4体并行低位交叉存储器,每个模块的容量是64K×32位,存取周期为200ns,在以下说法中,( )是正确的。
A. 在200ns内,存储器能向CPU提供256位二进制信息
B. 在200ns内,存储器能向CPU提供128位二进制信息
C. 在50ns内,每个模块能向CPU提供32位二进制信息
D. 都不对
解:对CPU来说,它可以在一个存取周期内连续访问4个模块,32位×4=128位。本题答案为B。

3.5 cache

在这里插入图片描述
cache的改进

  1. 增加cache的级数
  • 片载(片内)cache
  • 片外cache
  1. 统一缓存和分立缓存

    冯诺依曼结构是把指令和数据以同等的方式保存在存储器当中,chache也是一种存储器,而现代计算机有的时候是把指令cache和控制cache分开(比如MIPS),这个和指令执行的控制方式有关。这样做避免在流水过程中造成资源冲突。–参考

cache主存的三种映射

  • 直接映射
  • 全相联映射
  • 组相联映射
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

四、输入输出系统

1. 将I/O设备中内容送入主存:

  • 程序中断方式(需要CPU作为缓冲完成缓存操作)
  • DMA方式

在这里插入图片描述

2. I/O设备与主机信息传送的控制方式:

  • 程序查询方式
  • 程序中断方式
  • DMA方式


    在这里插入图片描述

4.1 I/O接口

为什么要设置接口?

  1. 实现设备的选择
  2. 实现数据缓冲达到速度匹配
  3. 实现数据串——并格式转换
  4. 实现电平转化
  5. 传送控制命令
  6. 反映设备的状态(忙,就绪,中断请求)

在这里插入图片描述
在这里插入图片描述

4.2 程序中断方式

在这里插入图片描述

ISR1没有触发中断,INTR1为低电平。

ISR2触发中断,INTR2拉高电平,它的非就是低电平,即引脚左端输入为低电平,导致与非门输出为高电平,传递到INTP3’ 就变成了低电平(中间还有一个非门),并一直向下传递INTP4’ … (紫色为低电平,黄色为高电平)

然后我们需要将中断筛选出来,将INTP’ 与INTR做一次与非门然后取非。

硬件排队器对中断请求源进行排队后,他的输出 I N T P i INTP_i INTPi在从1到N的这些 I N T P INTP INTP中只有一个值为1,该值表明了在所有有中断请求的中断源中,优先级最高的中断源。

确认了我们要选择哪个中断源的中断请求之后,下一步最重要的任务就是如何找到中断服务程序的入口地址。

在这里插入图片描述


在这里插入图片描述

4.3 DMA方式

DMA与主存交换数据的三种方式:

  1. 停止CPU访问内存(可以继续不访问内存操作)
  • 优点:控制简单,适合大量数据传送
  • 缺点:cpu处于不工作或保持状态,未充分发挥CPU对主存的利用率
    在这里插入图片描述
  1. 周期挪用(周期窃取)
  • DMA访问主存的三种可能:
    • CPU此时不访存
    • CPU正在访存(DMA等待)
    • CPU与DMA同时请求访存(CPU将总线控制权/内存访问权让给DMA)
      在这里插入图片描述
  1. DMA与CPU交替访问
  • 将主存工作周期分为两部分,C1专供DMA访存,C2专供CPU访存。过程中,不需要申请、建立、归还总线的使用权,由时序来确认总线和内存的使用权。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、数字运算

5.1 无符号数与有符号数

  • 为了解决“正负相加等于0”的问题,在“原码”的基础上,人们发明了“反码”

  • “反码”表示方式是用来处理负数的,符号位置不变,其余位置相反

  • 当“原码”变成“反码”时,完美的解决了“正负相加等于0”的问题过去的(+1)和(-1)相加,变成了0001+1101=1111,刚好反码表示方式中,1111象征-0人们总是进益求精,历史遗留下来的问题—— 有两个零存在,+0 和 -0我们希望只有一个0,所以发明了"补码",同样是针对"负数"做处理的 "补码"的意思是,从原来"反码"的基础上,补充一个新的代码,(+1)

  • 我们的目标是,没有蛀牙(-0)

  • 结论:保存正负数,不断改进方案后,选择了最好的"补码"方案

在这里插入图片描述

在这里插入图片描述


前提:一定要考虑计算机规定的字长进行转换。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5.2 定点数与浮点数

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、机器指令

指令字(简称指令)即表示一条指令的机器字。

指令格式则是指令字用二进制代码表示的结构形式,由操作码字段地址码字段组成。操作码字段表征指令的操作特性与功能;地址码字段通常指定参与操作的操作数的地址
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、指令与中断

7.1 指令系统

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.2 中断系统

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

八、微指令控制单元

8.1 微操作指令

在这里插入图片描述

在这里插入图片描述

8.2 控制单元

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

九、控制单元设计

9.1 组合逻辑设计

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.2 微程序设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


十、参考文档

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40539125/article/details/106600117

智能推荐

linux里面ping www.baidu.com ping不通的问题_linux桥接ping不通baidu-程序员宅基地

文章浏览阅读3.2w次,点赞16次,收藏90次。对于这个问题我也是从网上找了很久,终于解决了这个问题。首先遇到这个问题,应该确认虚拟机能不能正常的上网,就需要ping 网关,如果能ping通说明能正常上网,不过首先要用命令route -n来查看自己的网关,如下图:第一行就是默认网关。现在用命令ping 192.168.1.1来看一下结果:然后可以看一下电脑上面百度的ip是多少可以在linux里面ping 这个IP,结果如下:..._linux桥接ping不通baidu

android 横幅弹出权限,有关 android studio notification 横幅弹出的功能没有反应-程序员宅基地

文章浏览阅读512次。小妹在这里已经卡了2-3天了,研究了很多人的文章,除了低版本api 17有成功外,其他的不是channel null 就是没反应 (channel null已解决)拜托各位大大,帮小妹一下,以下是我的程式跟 gradle, 我在这里卡好久又没有人可问(哭)![image](/img/bVcL0Qo)public class MainActivity extends AppCompatActivit..._android 权限申请弹窗 横屏

CNN中padding参数分类_cnn “相同填充”(same padding)-程序员宅基地

文章浏览阅读1.4k次,点赞4次,收藏6次。valid padding(有效填充):完全不使用填充。half/same padding(半填充/相同填充):保证输入和输出的feature map尺寸相同。full padding(全填充):在卷积操作过程中,每个像素在每个方向上被访问的次数相同。arbitrary padding(任意填充):人为设定填充。..._cnn “相同填充”(same padding)

Maven的基础知识,java技术栈-程序员宅基地

文章浏览阅读790次,点赞29次,收藏28次。手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长![外链图片转存中…(img-Qpoc4gOu-1712656009273)][外链图片转存中…(img-bSWbNeGN-1712656009274)]

getFullYear()和getYear()有什么区别_getyear和getfullyear-程序员宅基地

文章浏览阅读469次。Date对象取得年份有getYear和getFullYear两种方法经 测试var d=new Date;alert(d.getYear())在IE中返回 2009,在Firefox中会返回109。经查询手册,getYear在Firefox下返回的是距1900年1月1日的年份,这是一个过时而不被推荐的方法。而alert(d.getFullYear())在IE和FF中都会返回2009。因此,无论何时都应使用getFullYear来替代getYear方法。例如:2016年用 getFullYea_getyear和getfullyear

Unix传奇 (上篇)_unix传奇pdf-程序员宅基地

文章浏览阅读182次。Unix传奇(上篇) 陈皓 了解过去,我们才能知其然,更知所以然。总结过去,我们才会知道我们明天该如何去规划,该如何去走。在时间的滚轮中,许许多的东西就像流星一样一闪而逝,而有些东西却能经受着时间的考验散发着经久的魅力,让人津津乐道,流传至今。要知道明天怎么去选择,怎么去做,不是盲目地跟从今天各种各样琳琅满目前沿技术,而应该是去 —— 认认真真地了解和回顾历史。 Unix是目前还在存活的操作系_unix传奇pdf

随便推点

ACwing 哈希算法入门:_ac算法 哈希-程序员宅基地

文章浏览阅读308次。哈希算法:将字符串映射为数字形式,十分巧妙,一般运用为进制数,进制据前人经验,一般为131,1331时重复率很低,由于字符串的数字和会很大,所以一般为了方便,一般定义为unsigned long long,爆掉时,即为对 2^64 取模,可以对于任意子序列的值进行映射为数字进而进行判断入门题目链接:AC代码:#include<bits/stdc++.h>using na..._ac算法 哈希

VS配置Qt和MySQL_在vs中 如何装qt5sqlmysql模块-程序员宅基地

文章浏览阅读952次,点赞13次,收藏27次。由于觉得Qt的编辑界面比较丑,所以想用vs2022的编辑器写Qt加MySQL的项目。_在vs中 如何装qt5sqlmysql模块

【渝粤题库】广东开放大学 互联网营销 形成性考核_画中画广告之所以能有较高的点击率,主要由于它具有以下特点-程序员宅基地

文章浏览阅读1k次。选择题题目:下面的哪个调研内容属于经济环境调研?()题目:()的目的就是加强与客户的沟通,它是是网络媒体也是网络营销的最重要特性。题目:4Ps策略中4P是指产品、价格、顾客和促销。题目:网络市场调研是目前最为先进的市场调研手段,没有任何的缺点或不足之处。题目:市场定位的基本参数有题目:市场需求调研可以掌握()等信息。题目:在开展企业网站建设时应做好以下哪几个工作。()题目:对企业网站首页的优化中,一定要注意下面哪几个方面的优化。()题目:()的主要作用是增进顾客关系,提供顾客服务,提升企业_画中画广告之所以能有较高的点击率,主要由于它具有以下特点

爬虫学习(1):urlopen库使用_urlopen the read operation timed out-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏5次。以爬取CSDN为例子:第一步:导入请求库第二步:打开请求网址第三步:打印源码import urllib.requestresponse=urllib.request.urlopen("https://www.csdn.net/?spm=1011.2124.3001.5359")print(response.read().decode('utf-8'))结果大概就是这个样子:好的,继续,看看打印的是什么类型的:import urllib.requestresponse=urllib.r_urlopen the read operation timed out

分享读取各大主流邮箱通讯录(联系人)、MSN好友列表的的功能【升级版(3.0)】-程序员宅基地

文章浏览阅读304次。修正sina.com/sina.cn邮箱获取不到联系人,并精简修改了其他邮箱代码,以下就是升级版版本的介绍:完整版本,整合了包括读取邮箱通讯录、MSN好友列表的的功能,目前读取邮箱通讯录支持如下邮箱:gmail(Y)、hotmail(Y)、 live(Y)、tom(Y)、yahoo(Y)(有点慢)、 sina(Y)、163(Y)、126(Y)、yeah(Y)、sohu(Y) 读取后可以发送邮件(完..._通讯录 应用读取 邮件 的相关

云计算及虚拟化教程_云计算与虚拟化技术 教改-程序员宅基地

文章浏览阅读213次。云计算及虚拟化教程学习云计算、虚拟化和计算机网络的基本概念。此视频教程共2.0小时,中英双语字幕,画质清晰无水印,源码附件全课程英文名:Cloud Computing and Virtualization An Introduction百度网盘地址:https://pan.baidu.com/s/1lrak60XOGEqMOI6lXYf6TQ?pwd=ns0j课程介绍:https://www.aihorizon.cn/72云计算:概念、定义、云类型和服务部署模型。虚拟化的概念使用 Type-2 Hyperv_云计算与虚拟化技术 教改