【知识强化】第三章 存储系统 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> ...
随机推荐
- phpstorm 生产php pojo类
一. 修改Generate POJO.groovy文件 改为 import com.intellij.database.model.DasTable import com.intellij.datab ...
- hdu 5963:朋友
刚看到这题时感觉是树上博弈,然后我开始用一维的数据找规律.发现在一维的树上,如果把各边的值合在一起当成一个二进制数,那么,ans只与奇偶性有关,于是,我提出了一个比较大胆的假设:若连接在root上的所 ...
- 【leetcode】1033. Moving Stones Until Consecutive
题目如下: Three stones are on a number line at positions a, b, and c. Each turn, you pick up a stone at ...
- How To Create/Extend Swap Partition In Linux Using LVM
https://www.2daygeek.com/how-to-create-extend-swap-partition-in-linux-using-lvm/ BY RAMYA NUVVULA · ...
- 调整ceph的pg数(pg_num, pgp_num)
https://www.jianshu.com/p/ae96ee24ef6c 调整ceph的pg数 PG全称是placement groups,它是ceph的逻辑存储单元.在数据存储到cesh时,先打 ...
- 【CF1257E】The Contest【线段树】
题意:给定三个序列abc,问最少操作几次使得满足a<b<c 题解:将三个序列合并起来,设cnt[i][1/2/3]表示前i个数有几个是来自序列1/2/3的. 枚举第一个序列要到i,此时对于 ...
- C++ Standard Template Library (STL) 高级容器
更多 STL 数据结构请阅读 NOIp 数据结构专题总结(STL structure 章节) std::map Definition: template < class Key, // map: ...
- 网络编程之TCP协议与UDP协议
了解网络就要了解一些基本的协议今天主要跟大家分享一些关于TCP 协议UDP协议的相关知识 首先介绍一下TCP协议 TCP(Transmission Cintrol Protocol)可靠的.面向连接的 ...
- mysql_备份_mysqldump
命令行执行mysqldump mysqldump -uuser -pPassword dbnametable [option] > xx.sql;mysqldump• Mysqldump常用参数 ...
- Ubuntu查看端口使用情况,使用netstat命令:
https://www.cnblogs.com/fly-book/p/9827128.html