【知识强化】第三章 存储系统 3.4 主存储器与CPU的连接
我们这节课来看一下关于主存的一些知识。我们将要讲解主存的简单的模型和主存与CPU连接的连接原理。
我们之前呢在第一章已经学过了存储器的构成,包括了存储体、MAR(也就是地址寄存器)、MDR(也就是数据寄存器),那么这些东西呢都是在我们的第一章我们讲存储器的时候讲过的,如果已经忘了的同学呢就回过头再去看一下。然后呢它就是由一个地址寄存器,一个存储体,还有数据寄存器,还有我们的时序控制逻辑进行的一个构成。但是实际上呢我们给出的这个结构,是一个简化的结构。实际上呢主存的结构,要比我们这个简化的模型要复杂。
我们来看一下,它是这个样子的。首先呢,我们就是说这个存储体啊,还是我们刚才那个简化模型的一个存储体,它是用来保存我们的数据的。而这个MAR,就是我们保存了我们要访问的存储单元的地址,然后必须要进行一个译码器进行了译码。进行了译码以后我们才能选定指定的存储单元。同样的呢,MDR保存了我们要读出或者要写入的这样一个数据。那么这个数据呢?到底是要进行读出还是要进行写入,就要通过读写电路和控制电路来进行控制。如果是写入的话,那我们就把MDR里面这个数据呢送到MAR指定的这个存储单元当中。如果是读出的话,那么我们就指定的存储单元的内容将会被送到MDR。那么这个方向呢是由我们的读写控制电路来进行控制的。那么这就是我们的一个主存的简单的模型。啊大家一定要把它记住,就是说我们不仅有存储体、MAR和MDR,还有驱动器、译码器、控制电路和读写电路,啊就是这些。相信大家已经很熟悉这个概念了,好的这是一个主存的简单的模型。
我们再来看一下主存和CPU之间的联系。实际上这个联系还是非常非常简单的,我们就看一下这个图就知道了。主存,和这个CPU之间的连接呢,被分成了三类。首先是数据总线,然后是地址总线。还有呢是一个控制总线。啊这三个总线进行一个连接。数据总线呢听它的名字就知道它是完成了CPU和主存之间的一个信息的传输。那么这个数据总线呢是直接连接到这个数据寄存器上面的。它是一个双向的,所以可以读出也可以进行写入的。那么这个地址总线,是连接到了MAR也就是地址寄存器和主存之间的。它呢给出了要访问的内存单元的地址,它是一个单向的,是由CPU送到我们的主存的。那么还有一位呢就是这个控制总线。我们这张图当中呢就是读信号和写信号,也就是说,到底是读出,还是进行写入,那么是通过这样一个读信号和写信号进行一个传输的。那么这就是一个控制总线。它指出了我们这个总线周期的类型,还有我们这一次进行输入和输出操作它完成的一个时刻,那么这是一个控制总线。所以主存和CPU之间呢就有三个总线进行连接,一个是数据总线,一个是地址总线,一个是控制总线。它其实是非常简单的。那比如说我们要从存储器当中读出一个信息字,那么我们需要怎么做呢?首先我们CPU要把这个字的地址先送到MAR,然后呢经过地址总线送到我们的主存,然后再通过这个控制总线发出读命令,主存接到了读命令之后,那么主存呢就知道我需要把这个地址单元的一个内容读出,然后呢就完成了读操作。完成读操作之后,我们要把这个单元的内容读到哪儿?把这个单元的内容读到了数据总线上面,然后要送到哪儿,就不是主存的任务,这是CPU的任务,它由CPU决定要送到什么地方。啊这个读操作呢就已经完成了。而如果我要往主存存入一个信息字的时候,首先CPU要把我这个信息字所在的主存单元的地址经过MAR送到地址总线,然后呢再把这个信息字送到MDR,然后向主存呢发出一个写命令。主存收到了写命令之后呢就把数据总线上的信息写到我相应的地址线指出的主存单元当中。啊这就是一个读的操作和一个写的操作它所进行的一个顺序一个步骤。好的,我们的主存的模型和这个连接原理呢都是非常简单的,大家大概地了解一下就可以了。
我们来看一下主存的地址单元分配。
啊,这是一个比较重要的概念。那么我们之前已经讲过了,这个存储矩阵呢我们是由多个存储单元来构成的。这个方格的意思呢就是说,每一个方格呢可以放8位,啊字长呢就是4个字节。那么一个方格就是可以放8位就是1个字节,所以1行呢就是4个也就是4个字节。那么如果我们同时取出这样一行的话,我们取出来的数值呢就是32位。我们假设我们整个这个存储体,它的总容量呢,是1K个字节。那么我们来看一下,如果我们按照字节来寻址的话,我们就可以把总容量1KB可以写成1K*1B。1K*1B,那么1B呢就是1个字节嘛,它是按字节寻址,每个单元呢是一个字节,所以呢我们就有1K个单元,也就是说我们总共这个存储体呢,就有1K个这样的小方格。那么就是相当于用总容量去除以每一个小方格它的容量是1B,1个字节。所以呢得到的个数呢就是1K个单元。那么如果是按照字来寻址的话,那么1个单元它是按字来寻址嘛,所以呢1个单元它应该是4个字节,所以呢它就有256个单元。我们就是说把每4个小方格看成一个小组,那么我们整个存储体它就有256个这样的小组。那么主存地址的分配就是说,我们按照不同的长度去切分这样的一个存储单元,可以切分多少份。所以呢剩下的两种形式就可以直接给出来了,如果按照半字寻址的话,我们一个单元呢是2个字节,所以呢我们就有512个这样的小组。如果按照双字寻址的话,我们每一个单元呢是有8个字节,所以我们就有128个这样的单元。我们现在单元的数量已经知道怎么计算了,就是用总容量去除以每一个单元它的容量,就可以得到有多少个单元。那么现在我们知道了有多少个单元,现在我们就要进行一个编码,就是要对应到地址线的分配。如果要对这1K个单元进行地址的编码,那么我们需要的就是1K个地址,也就是要对应10根地址线,所以要有10个位数,所以对应10根地址线。如果把它这个地址写出来的话,就有10个二进制位,就是这个样子的。从10个0到10个1,那么它对应的10进制的形式呢,就是这个样子。
从0到2^10-1,所以呢我们把它在这个小方格里面把它标出来。就是这个样子的,那么我们就把这个地址给它编好了。
那么如果我们不是按照一个一个小方格进行寻址的,如果我们是按照大一点的,比如说按字进行寻址。那么我们就是说把这4个小方格进行一个寻址,也就是相当于把这4个小方格看成是一组,然后我们是按照一组一组去进行寻找。
那么我们一下子就找到
【知识强化】第三章 存储系统 3.4 主存储器与CPU的连接的更多相关文章
- 【知识强化】第三章 存储系统 3.5 双口RAM和多模块存储器
下面我们进入双端口RAM和多模块存储器的学习.这是提高我们的存储器的访存速度的一些措施. 我们之前已经讲过我们的主存和CPU是进行连接的,那么这就导致了一个问题就是说,随着我们现代科技的发展,计算机的 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (19) -----第三章 查询之使用位操作和多属性连接(join)
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-16 过滤中使用位操作 问题 你想在查询的过滤条件中使用位操作. 解决方案 假 ...
- 【知识强化】第二章 数据的表示和运算 2.4 算术逻辑单元ALU
从本节开始我们就进入到本章的最后一节内容了,也就是我们算术逻辑单元的它的实现.这部分呢是数字电路的一些知识,所以呢,如果你没有学过数字电路的话,也不要慌张,我会从基础开始给大家补起.那么在计算机当中, ...
- Android初级教程理论知识(第三章测试&数据存储&界面展现)
首先介绍单元测试,我在javaweb部分有详细介绍单元测试框架的一篇文章. 可以先看在javaweb中的单元测试详解篇http://blog.csdn.net/qq_32059827/article/ ...
- Java基础知识笔记第三章:运算符表达式语句
算术运算符与表达式 操作符 描述 例子 + 加法 - 相加运算符两侧的值 A + B 等于 30 - 减法 - 左操作数减去右操作数 A – B 等于 -10 * 乘法 - 相乘操作符两侧的值 A * ...
- CentOS 7.4 初次手记:第三章 CentOS基础了解
第三章 CentOS基础了解... 36 第一节 语言编码.终端... 36 I 查看语言编码... 36 II Tty?.pts/?. 36 第二节 bash/sh command. 38 I 查找 ...
- Python黑帽编程3.0 第三章 网络接口层攻击基础知识
3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP ...
- Java基础知识二次学习--第三章 面向对象
第三章 面向对象 时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思 ...
- NodeJs>------->>第三章:Node.js基础知识
第三章:Node.js基础知识 一:Node.js中的控制台 1:console.log.console.info 方法 console.log(" node app1.js 1> ...
随机推荐
- 【ElicitSearch】启动流程
一.集群启动流程 1.选举主节点 许多节点启动,集群干的第一件事儿就是选主,之后的的流程由主节点触发. 先确定唯一的.大家公认的主节点:再想办法把最新的及其原数据复制到选举的主节点上. 选主是对Bul ...
- 英语单词Obsolete
Obsolete 来源——命令帮助 [root@centos73 ~]# help typeset typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...
- 状态管理Vuex的使用总结
1.Vuex.store 的基本使用 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. Vu ...
- 使用tinymce编辑器从word保持原格式复制粘贴的办法
官网地址http://ueditor.baidu.com Git 地址 https://github.com/fex-team/ueditor 参考博客地址 http://blog.ncmem.com ...
- Jquery取得Iframe中的元素
DOM方法: 父窗口操作IFRAME:window.frames["iframeSon"].documentIFRAME操作父窗口: window.parent.document ...
- vue路由vue-router的安装和使用
1.安装,如果你没有在创建项目时候选择的情况下 cnpm install vue-router 2.使用 假设App为根组件,两个自定义组件home及list main.js里操作 impor ...
- EZOJ #393加倍的飞机
分析 从大到小考虑每个点 记录一个连通块中选了选了几个 如果选的小于siz则直接选否则不选 代码 #include<bits/stdc++.h> using namespace std; ...
- MySQL - 修改数据库文件物理路径
一共两步: 修改my.ini文件的datadir: 将修改前datadir路径下的文件复制到修改后的datadir路径. 注意: my.ini可能有多个,windows 系统可以在 MySQL 服务的 ...
- Visual Studio Code-使用Chrome Debugging for VS Code调试JS
准备工作 安装 Debugger for Chrome 插件 按 F5(或选择菜单栏的 Debug->Start Debuging),然后选择 Chrome,就会自动创建默认的配置文件 &quo ...
- 《图解设计模式》读书笔记2-2 Factory Method模式
目录 类图 代码 角色介绍 思想 类图 代码 //产品类,任意可"use"的产品都可继承该类 public abstract class Product { public abst ...