计算机组成原理(2)-----存储芯片与CPU的连接

目录

一.单块存储芯片与CPU的连接

二.多块存储芯片与CPU的连接

1.位扩展

2.字扩展

(1)线选法

(2)译码器片选法

3.字位同时扩展

三.译码器相关


一.单块存储芯片与CPU的连接

如图所示是8*8位的芯片,总共8个存储字,每个存储字有8位

回忆一下存储器芯片的输入输出信号:

 注:现在的计算机MAR、MDR通常集成在CPU内部。存储芯片内只需一个普通的寄存器(暂存输入、输出数据)

二.多块存储芯片与CPU的连接

1.位扩展

只有存储字长与数据总线的宽度一致,才能尽可能地发挥数据总线的性能,若单块存储芯片字长小于数据总线的宽度,就可以使用位扩展

如下图所示,8K表示2^13次方,所以需要13根地址线A0~A12,CPU会把想要访问的地址通过地址线送到存储器中

WE则表示当这个信号是高电平时,CPU需要往存储器写数据,低电平时,表示CPU需要往其中读数据。

由于存储芯片位8K*1位,所以每次只能通过数据总线传送一个bit,数据总线没有被充分利用

CS为片选信号,高电平有效

为了解决数据总线没有被充分利用的问题,我们可以给主存加上一块相同型号的存储芯片。因为两个存储芯片都有8K个存储单元,若将CPU将13位的地址信息同时送给两个芯片,则这个地址数据会对应两个芯片相同位置的存储单元。

与第一块芯片不同的是,右边这一芯片读出的数据,可以作为CPU的D1读入的数据,如图所示,给CS都加上高电平,两块芯片就能同时工作:

使用同样的方法,可以增至8块存储芯片,如图所示:

数据总线可以同时把8位的数据信息,送至CPU,所以整个主存的存储字长被拓展为8bit

8片8Kx1位的存储芯片---->1个8Kx8位的存储器,总容量8KB,这就是位拓展

2.字扩展

若想要扩展主存字数,可以使用字扩展,如图所示的存储芯片,由于其字长已经是8位,数据总线宽度=存储字长,所以不需要进行位扩展了

但是我们会发现另一个问题,如图所示的CPU中MAR有16位,即2^16的寻址能力,但是我们只用了A0~A13这13根地址线,若依然使用第1节中位扩展的方法,这两个存储单元的8位的信息,会通过数据总线传给CPU,都会导致数据总线的冲突。

(1)线选法

对这一芯片的第一种改造方法为线选法我们将A13地址线连接到第一个芯片,将A14地址线连接到第二个芯片,当A13和A14两个信号分别为1,0时,第一个芯片CS为1,会工作,第二个芯片CS为0,不会工作。同理,若第二个存储器CS信号为1,第一个存储器CS信号为0。那么第二个存储器会工作。

所以A13,A14为01或10

A14,A13为01,第一个芯片工作,A14,A13为10,第二个芯片工作

总结:

可以看到线选法中A14,A13只能为01或10,n个存储体,就需要n条专门的地址线来表示n个选片信号。

(2)译码器片选法

其实只需要一根专门的地址线就可以表示片选信号。如图所示用A13传送片选信号。如图所示,若A13为1,那么第一个存储芯片的片选信号为1,第二个存储芯片的片选信号为0,若A13为0,则反过来即可。

所以A13为1,第一个芯片工作,A13为0,第二个芯片工作。

这里的电路我们可以将其看作1-2译码器,即输入一位地址信息,可能呈现2^1两种状态

总结:

我们可以使用译码器处理CPU的高位地址部分,对于专门用来表示片选信号的地址线,n条线就可以表示2^n个选片信号,如图所示3位译码器就对应8(2^3)根地址线

注:译码器的编号也可以逆过来

举个例子,如图所示,使用的是2-4译码器,这里各存储器的地址线是都是一端连接CPU,一段连接存储器的,这里只是为了看起来比较简洁

例如A13,A14为00,那么0号线会被选通,对应的存储芯片会工作,所以其地址范围为00 0....0~00 1.....1(00跟上13位地址) 

注:若为\overline{CS},则存储芯片\overline{CS}信号端,要画一个小圆圈

与此同理,其他存储器的地址范围如图所示:

若将A13,A15作为译码器的输入信号,无论A14这一位取0还是1,都影响不到选片操作,如图所示,对于第一个存储芯片,当A14为0时,有8K个合法地址,当A14为1时,也有8K个合法地址。

本来芯片只有8K个存储单元,然而有16个合法地址对应8K个存储单元,其他存储芯片也是类似,所以实际应用中,这种设计是不合理的。

总结:

对于字扩展,有线选法和译码片选法两种方法:

实际应用时都用译码片选法

3.字位同时扩展

如图所示,总共8个存储芯片,每两个芯片为一组,因为每个芯片为4位,而CPU能同时读写8位地址,即数据总线有8根,所以可以用两块芯片为1组进行位扩展

每个芯片是16K,即2^14次方,所以CPU的A0~A13这14位的地址信息作为片内地址,由于CPU的A14,A15两个地址信息没有使用,所以可以接一个2-4译码器,进行字扩展,总共有4个片选信号,所以可以接4组,每组有两个存储芯片。

1组为16K*8位,4组为64K*8位,合法的地址:

第一组为00开头,第二组为01开头,第三组为10开头,第四组为11开头,地址范围如图所示:

三.译码器相关

 补充(译码器相关知识点):

译码器输出端只有1条线能输出高电平,这种译码器就能和片选信号CS高电平有效存储芯片配合使用

若译码器输出端画了个小圆圈,那么有效信号是0,无效信号是1,这种译码器就能和片选信号CS低电平有效存储芯片配合使用

 

实际的译码器还有使能端,高电平有效,若使能端为1,则译码器工作

还有的译码器会有多个使能端,只有以下使能端都有效,译码器才能工作

对于74LS138译码器,是最常见的。若使能信号是非法的状态,译码器输出的都是全1

CPU可使用译码器的使能端控制片选信号的生效时间,CPU地址的输出与数据的输入输出外,还有一个很重要的输出信号(\overline{}\overline{MREQ},memory request) ,当CPU访问主存时,CPU就会使这个信号有效,即置为低电平

如下图所示,我们把译码器的G1和\overline{G_{2A}}置为1和0,即合法的值,再把\overline{G_{2B}}接通\overline{MREQ}信号的输出端,当CPU没有发出主存请求信号时,\overline{G_{2B}}输出1,此时译码器不工作,所有片选信号都为1,当CPU发出主存请求信号时,\overline{G_{2B}}输出0,译码器才会工作,把输入的地址信号映射为某一位选通信号

所以CPU与译码器是这样配合工作的:

① CPU先通过地址线送出地址信号,包括传到存储器的低的13位和传到译码器的高3位

这些地址信息是通过电信号传输的,当CPU刚开始输出电信号时,电信号不稳定,因此CPU发出地址信息后,会等电流稳定才发出主存请求信号\overline{MREQ}

② 这样能保证译码器的某一根选通线有效时,这块选通线所对应存储芯片所接收的地址信号稳定。

 具体地看一下RAM的读周期:

从红色划线处开始,CPU送出了地址信息

但CPU会等地址信号稳定后,才会发出主存请求信号\overline{MREQ},这会导致译码器的某个输出端,输出一个有效的片选信号,使得某片存储芯片被选通。

通过一段时间后,这个芯片某个存储单元的数据就可以通过数据总线传出到CPU,即图中的D_{out}

等数据传出一段时间后,CPU就会撤回主存请求信号\overline{MREQ},即撤回片选信号

当CPU确定接收到主存发来的数据后,就会撤回刚刚发出的地址信号

注:这样往上往下的画法表示输出的信号有0也有1

\overline{CS}低电平有效,高电平无效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/389780.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ 双向广度搜索,嚯嚯!不就是双指针理念吗

1. 前言 在线性数据结构中搜索时,常使用线性搜索算法,但其性能偏低下,其性能改善方案常有二分搜索和双指针或多指针搜索算法。在复杂的数据结构如树和图中,常规搜索算法是深度和广度搜索。在深度搜索算法过程中常借助剪枝或记忆化…

分布式文件系统 SpringBoot+FastDFS+Vue.js【二】

分布式文件系统 SpringBootFastDFSVue.js【二】 六、实现上传功能并展示数据6.1.创建数据库6.2.创建spring boot项目fastDFS-java6.3.引入依赖6.3.fastdfs-client配置文件6.4.跨域配置GlobalCrosConfig.java6.5.创建模型--实体类6.5.1.FastDfsFile.java6.5.2.FastDfsFileType.j…

Mac M2芯片配置PHP环境

Mac M2芯片配置PHP环境 1. XAMPP 1. XAMPP 官网地址 https://www.apachefriends.org/ 安装 安装完成 web server打开后,在打开localhost 成功!

(三十九)大数据实战——Prometheus监控平台的部署搭建

前言 Prometheus监控(Prometheus Monitoring)是一种开源的系统监控和警报工具。它最初由SoundCloud开发并于2012年发布,并在2016年加入了云原生计算基金会(CNCF)。Prometheus监控旨在收集、存储和查询各种指标数据&am…

Android---DslTabLayout实现底部导航栏

1. 在 Android 项目中引用 JitPack 库 AGP 8. 根目录的 settings.gradle dependencyResolutionManagement {...repositories {...maven { url https://jitpack.io }} } AGP 8. 根目录如果是 settings.gradle.kts 文件 dependencyResolutionManagement {...repositories {...…

A. Desorting

链接 : Problem - A - Codeforces 题意 : 思路 : 先判断序列是否排好序 , 不是排好序的,直接输出0即可,排好序的 : 先求出相邻元素之间的最小间隔,因为,要使有序非递减序列,变得不排序,…

OLMo 以促进语言模型科学之名 —— OLMo Accelerating the Science of Language Models —— 全文翻译

OLMo: Accelerating the Science of Language Models OLMo 以促进语言模型科学之名 摘要 语言模型在自然语言处理的研究中和商业产品中已经变得无所不在。因为其商业上的重要性激增,所以,其中最强大的模型已经闭源,控制在专有接口之中&#…

Leetcode-1572. 矩阵对角线元素的和

题目: 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1: 输入:mat [[1,2,3],[4,5,6],[7,8,9]] 输出:25 解释:对角线…

Apache httpd 换行解析漏洞复现(CVE-2017-15715)

Web页面&#xff1a; 新建一个一句话木马&#xff1a; 0.php <?php system($_GET[0]); ?> 上传木马&#xff0c; burpsuite 抓包。 直接上传是回显 bad file。 我们查看数据包的二进制内容&#xff08;hex&#xff09;&#xff0c;内容是以16进制显示的&#xff0c;…

挑战杯 wifi指纹室内定位系统

简介 今天来介绍一下室内定位相关的原理以及实现方法; WIFI全称WirelessFidelity&#xff0c;在中文里又称作“行动热点”&#xff0c;是Wi-Fi联盟制造商的商标做为产品的品牌认证&#xff0c;是一个创建于IEEE 802.11标准的无线局域网技术。基于两套系统的密切相关&#xff…

html的列表标签

列表标签 列表在html里面经常会用到的&#xff0c;主要使用来布局的&#xff0c;使其整齐好看. 无序列表 无序列表[重要]&#xff1a; ul &#xff0c;li 示例代码1&#xff1a; 对应的效果&#xff1a; 无序列表的属性 属性值描述typedisc&#xff0c;square&#xff0c;…

U盘重装系统

因为系统管理员密码忘记&#xff0c;登录不了window系统&#xff0c;使用老毛桃制作U盘启动盘 1、下载老毛桃 下载地址为http://lmt.psydrj.com/index.html 安装后&#xff0c;桌面上显示为 2、制作U盘启动盘 启动老毛桃U盘启动装机工具&#xff0c;插入U盘&#xff0c;点击一…

[Java][算法 滑动窗口]Day 03---LeetCode 热题 100---08~09

第一题 无重复字符串的最长子串 思路 其实就是在字符串S中 找到没有重复的最长子串的长度 这道题的难点就是在于如何判断最长并且无重复 首先 最长长度 可以使用变量max记录保存 再者 判断有无重复 最简单的方法就是 暴力遍历法 即对于每次找的子串都再次寻找遍历…

【十九】【C++】 priority_queue简单使用和仿函数

priority_queue文档介绍翻译 优先队列是一种容器适配器&#xff0c;专门设计成其中的第一个元素始终是根据某种严格的弱排序准则最大的元素。 这种上下文类似于堆&#xff0c;其中元素可以在任何时刻插入&#xff0c;而只能检索最大堆元素&#xff08;在优先队列中顶部的元素&a…

为自监督学习重构去噪扩散模型

在这项研究中&#xff0c;作者检验了最初用于图像生成的去噪扩散模型&#xff08;DDM&#xff09;的表示学习能力。其理念是解构DDM&#xff0c;逐渐将其转化为经典的去噪自动编码器&#xff08;DAE&#xff09;。这一解构过程让大家能够探索现代DDM的各个组成部分如何影响自监…

【Docker】Docker Container操作案例 | 综合实战

文章目录 Docker Container操作案例容器的基本操作容器状态迁移容器批量处理技巧容器交互模式attached模式detached模式interactive模式 容器与宿主机内容复制容器自动删除容器自动重启容器环境变量设置容器详情查看容器执行单行命令容器镜像导入导出容器日志查看容器资源查看 …

C++:多态

C&#xff1a;多态 虚函数虚函数语法虚函数重写协变接口继承 多态构成成员函数状态对比抽象类多态原理多继承与多态虚继承与多态 先看到多态的定义&#xff1a; C的多态是指在面向对象程序设计中&#xff0c;允许使用基类的指针或引用来调用派生类的虚函数的特性。这样的调用将…

数据结构-并查集

并查集原理 在一些应用问题中&#xff0c;需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个 单元素集合&#xff0c;然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询一 个元素归属于那个集合的运算。适合于描述这类…

阿里云幻兽帕鲁服务器配置4核16G10M带宽够8个人玩吗?玩起来流畅度怎么样?

阿里云幻兽帕鲁服务器配置4核16G10M带宽这个&#xff0c;个人实测下来&#xff0c;五六个人玩是比较流畅的&#xff0c;不过8个人的话&#xff0c;估计会有点卡。如果是8个人的话&#xff0c;我建议选择8核32G那个配置&#xff0c;更加适合一些。 阿里云一键部署幻兽帕鲁详细教…

【lesson57】信号量和生产者消费者模型(环形队列版)

文章目录 信号量概念信号量接口初始化销毁等待发布 基于环形队列的生产者消费者模型编码Common.hLockGuard.hppTask.hppsem.hppRingQueue.hppConProd.cc 信号量概念 POSIX信号量和SystemV信号量作用相同&#xff0c;都是用于同步操作&#xff0c;达到无冲突的访问共享资源目的…