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

技术标签: 计算机基础  



在这里插入图片描述

一、计算机的基本组成

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

  • 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

智能推荐

node 第十七天 使用rsa非对称加密 实现前后端加密通信 JSEncrypt和node-rsa_node rsa-程序员宅基地

文章浏览阅读749次。使用rsa非对称加密 实现前后端加密通信 JSEncrypt和node-rsa_node rsa

中国期货市场风险回顾之八(海南中商所F703咖啡事件)_海南咖啡事件认识和感悟-程序员宅基地

文章浏览阅读2.1k次。   期现脱节下的悲剧——再看海南中商所F703咖啡事件 1995年12月21日,海南中商所宣布自F605合约始咖啡期货合约放大交割限量(交割总量由象征性的1吨扩大为1万吨),交割限量以外的头寸全部按进入交割月至最后交易日全部成交的加权平均价实行强制平仓。自F605始,中商所的咖啡品种演出了既不同于纽约咖啡行情又有别于历次中国期货交易风波的多幕闹剧。   回首咖啡F703事件  _海南咖啡事件认识和感悟

内核参数-- 使用sysctl 命令配置内核参数_sysctl -p-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏7次。linux的内核参数,可以通过sysctl 命令进行配置和优化。实际参数很多,就不一一赘述了,大家可以在实际业务中适时的实践。_sysctl -p

自适应阈值图像二值化_自适应阈值二值化-程序员宅基地

文章浏览阅读1.4w次,点赞15次,收藏188次。一、二值化关于二值化的介绍,以前的博客中有介绍,这里就不再描述了,二值化介绍;二值化分为固定阈值二值化和自适应阈值二值化,固定阈值二值化方式是我们常用的二值化方式,需要自己摸索一个经验阈值,不断调整,直到找到最佳阈值,这种方式在刚刚的链接中已经介绍;而这篇文档主要介绍的就是另一种二值化方式:自适应阈值二值化。二、自适应阈值二值化图像进行二值化,且做到自适应阈值参数,有4种自适应阈值二值化方法;先从自适应阈值的作用范围来区分,自适应阈值分为:全局阈值使用自适应全局阈值的全局二值化方法有:大津_自适应阈值二值化

Linux分区还是sdb而不是sdb1,Linux 磁盘分区-程序员宅基地

文章浏览阅读2.5k次。第一步:对系统当前各个磁盘的状态要有一定的了解。这个就要用到fdisk -l 这个命令了。fdisk -l由上图可以看出/dev/sdb/并没有被分区、下面的例子我们就要为/dev/sdb进行分区而且还要把它挂载到linux目录树上去。第二步:fdisk /dev/sdb -- 这个的意思就是对/dev/sdb这个盘进行操作,如上图所示,说明已经进入了fdisk这个程序了;它的一些重要的操作项有..._sdb和sdb1

启动类启动找不到或无法加载主类_找不到或无法加载主类 com.eurekaserverapplication-程序员宅基地

文章浏览阅读524次。错误: 找不到或无法加载主类 com.itan.EurekaServer01Application点击install后org.apache.maven.plugins:maven-install-plugin:2.5.2:install (default-cli) on project eureka-server01: The packaging for this project did not assign a file to the build artifact不行后来点击lifecyle_找不到或无法加载主类 com.eurekaserverapplication

随便推点

R730服务器做了raid的硬盘,插在R720上面可以用吗?-程序员宅基地

文章浏览阅读541次,点赞6次,收藏9次。戴尔R720戴尔R730。

计算机取证之Xplico ——合天网安实验室学习笔记-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏19次。实验链接Xplico是一款开源的网络取证分析工具,其分析与呈现的能力非常强大。Xplico可以捕获Internet网络应用层流量,通过流量解析,解析出网络包中的各种应用数据,还原网络数据发送现场。通过本实验学习掌握Xplico使用方法,学会利用Xplico对网络流量进行分析取证。链接:http://www.hetianlab.com/expc.do?ce=10748f62-5706-403d-..._xplico

Docker 入门 | 2 镜像的存储驱动与 Dockerfile 实战_doceker 镜像中增加驱动-程序员宅基地

文章浏览阅读119次。Dockerfile 实战,搭建在 centos 上的 httpd。_doceker 镜像中增加驱动

大学生网页设计制作作业实例代码 (全网最全,建议收藏) HTML+CSS+JS_免费网页代码大全-程序员宅基地

文章浏览阅读2.7w次,点赞18次,收藏182次。临近期末,大一新生的各种考试和专业结课作业纷至沓来。web实训大作业、网页期末作业、web课程与设计、网页设计等,简直让人头大。你还在为网页设计老师的作业要求感到头大?网页作业无从下手?网页要求的总数量太多?没有合适的模板?等等一系列问题。你想要解决的问题,在这篇博文中基本都能满足你的需求, 废话不多说,直接看效果。网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程序方面:计划采用最新的网页编程语言HTML5+CSS3+JS程序语言完成网站的功能设计。并确_免费网页代码大全

matlab 图片显示出现中文乱码_matlab2018a图片显示中文-程序员宅基地

文章浏览阅读9.6k次。解决matlab 2016 图片标题显示乱码的问题。_matlab2018a图片显示中文

python爬考研_Python爬取考研必备单词-程序员宅基地

文章浏览阅读158次。参考链接:(https://blog.csdn.net/OnlyloveCuracao/art0icle/details/80768334)原博主的代码可能因为单词发音的音频爬取有问题,导致无法将单词存入数据库,不过也非常感谢原博主,我根据源码做了一定删减和更改,下次可能会根据用户的需求,输入需求,爬取相应的单词。主要步骤:1.连接数据库2.创建word单词表3.获取网页主界面HTML代码4.获取..._python爬取英语考试重点