计算机组成原理 new14 双端口RAM和多模块存储器

news2024/10/6 6:04:08

文章目录

        • 双端口RAM
    • 多模块存储器
      • 多体并行存储器
        • 高位交叉编址
        • 低位交叉编址
        • 单体多字存储器
        • 存储周期和访存

双端口RAM

在这里插入图片描述

在双端口RAM中,两个端口使用了不同的译码器,数据线,控制线,和读写电路。所以两个端口可以做到同时访问相同的存储单元。

访存的时候不是有恢复时间吗?为什么双端口RAM可以做到同时访问相同的存储的单元?

首先,恢复时间的存在一定是为了存储器工作进行状态的恢复,例如刷新,在DRAM中,因为需要刷新所以导致恢复时间很长。但是在双端口RAM中我们可以不考虑这个恢复时间带来因素,因为刷新的时候处于死区,这时候是不可能会进行访存的,所以我们应该讲恢复时间认为是存储器内部状态的恢复,并且这个恢复应该是控制电路的恢复。而在双端口RAM中,两个端口采用了不同的控制电路,数据线,控制线,地址线等所以两者的恢复时间是没有任何关系的,因为电路都不同。

双端口RAM对主存操作具有以下四种情况:

两个端口同时对不同的地址单元存取数据
两个端口同时对相同的地址单元读出数据

下面的两种情况是可能会发生错误的:

两个端口同时对同一地址单元写入数据
两个端口同时对同一地址单元进行操作,一个读入,一个写出。

在双端口RAM中对于这个进行了解决:
在双端口RAM中,有逻辑判断电路,其会根据两个端口的读写信号进行逻辑判断,当碰到下面的两种错误情况时,逻辑电路会发送一个busy信号给其中一个端口,即将这个端口关闭(延时)一段时间,先让另一个端口进行访问。

多模块存储器

多模块存储器是一种空间并行技术,利用多个结构完全相同的存储器芯片(宏观上并行,微观上交替)并行工作来提高存储器的吞吐率,常用的有单体多字存储器,和多体低位交叉存储器。(多体高位交叉存储器也是多模块存储器,但是其比较难完成宏观上并行,因为地址是在一个存储器芯片内连续存放的)。

如何理解多模块存储器可以提高存储器的吞吐率

首先,吞吐量是单位时间内的响应次数,主机向存储器发起一个响应,存储器需要多久才能回应。而多模块存储器中,通过将数据放在不同的存储器芯片,可以使得宏观上不需要等待存储器芯片的恢复时间,可以更快的取出数据,所以对于存储器而言,吞吐率应该是取出数据的速度。

多体并行存储器

多体并行存储器分为低位交叉编址和高位交叉编址:
在多体并行存储器中,每个存储器芯片具有相同的容量和存取速度(其实就是相同的存储器芯片),每个存储器芯片都有独立的读写电路,数据寄存器,地址寄存器,能够做到并行工作(宏观上),交叉工作,既宏观上每次访存可以选择不同位置的芯片。

多体并行存储器的地址线,数据线,读写线共用吗?

不一定。

高位交叉编址

注:无论是高位交叉编址和低位交叉编址中,题目可能会给一个地址问当前地址所属的芯片是哪一个?我们只要记住一点, 2 n \color{red}{2^n} 2n个芯片,其本质是二进制的取模运算,所以如果是高位交叉编址,那么我就只需要看地址的前n位,如果是低位交叉编址,那我们就只需要看地址的最后n位,然后翻译成十进制我们就可以知道是第几个芯片了,注意的是芯片一般从第0个开始计算。

高位交叉编址:高位说的就是片选信号采用高位地址总线,并且地址在同一个存储芯片内是连续的,其中高位片选信号代表的地址又叫做体号。
在这里插入图片描述
高位交叉编址存储器是如何完成译码工作的?

在高位交叉编址中,只有一个存储器芯片具有译码器,一般把译码器设置到高体号的模块内,即最后一个模块内,然后里面的译码器会将翻译后的地址传输给其他模块的存储器芯片,其他存储器芯片内部应该具有缓冲器,就不用对地址进行翻译了,直接选择字选线即可。即地址总线是连接到最后一个模块的译码器内的。

注意:高位交叉编址的多体存储器也有可能可以做到在一个存储周期内访问多个连续的存储器芯片:

这种做法实际上有点逆天。
在这里插入图片描述

低位交叉编址

低位交叉编址:低位交叉编址本质上就是片选线采用低位的地址总线,所以地址中最后几位的片选地址又叫做体号,地址在不同的存储器芯片之间是连续的。
在这里插入图片描述

低位交叉编址是如何完成译码的?

在低位交叉编址中,一般把译码器设置到低体号的模块内,即第一个模块内,然后里面的译码器会将翻译后的地址传输给其他模块的存储器芯片,其他存储器芯片内部应该是有寄存器之类的东西,就不用对地址进行翻译了,直接选择子选线即可。即地址总线是连接到第一个模块的译码器内的。

低位交叉编址在读取数据在有什么特点?

依旧还是下面这个图,假设有这个低位交叉编址存储器中具有4个存储器芯片。我们可以发现,因为低位交叉编址是地址是在不同的存储器芯片是连续的,所以读完一个地址以后,可以读取下一个存储器芯片,由于存储器芯片之间的读写电路是独立的,所以读写下一个存储器芯片的时候不需要等待恢复,可以直接进行读写。只要存储器芯片的个数满足一定的条件,在宏观上就可以做到每次读取一个存储器芯片只需要一个存取时间,需要知道,低位交叉编址只有在长时间的连续访问中才能发挥自己的魅力。
在这里插入图片描述
事实上,低位交叉编址是一种流水线模型,只有流水线充分流动起来了才能达到我们上述说的宏观上,读取一个存储单元只需要一个存取时间,并且低位交叉编址还需要满足一定的条件:
首先,低位交叉编址中,假设存储周期为T,存取时间为r,那么该低位交叉存储器中存储器芯片的个数应该大于等于T/r,因为只有这样才能避过所有的恢复时间。

存储器芯片个数<T/r 连续读取时,会需要进行等待芯片的恢复
存储器芯片个数>T/r 连续读取时,虽然不用等待芯片的恢复,但是芯片会存在空闲时间不能完美的发挥芯片的性能
存储器芯片个数=T/r 不需要等待芯片的恢复,可以完美的发挥芯片的性能。

在这里插入图片描述
现在我们来讲讲流水线:

所谓的流水线就是指CPU不断的访问低位交叉编址模拟器,一轮又一轮,因此内部芯片的工作就像芯片一样,当读的时间足够长以后,最后一次读取的恢复时间可以近似忽略,所以宏观上可以认为读取一个存储器芯片需要的时间就是一个读写时间r。

如何理解一个存取周期可以读写多个存储器芯片?

首先需要纠正一个概念,存取周期和访存次数没有必然联系。当流水线模型充分流动以后,读取一个存储器芯片的时间近似可以看作是r,所以基本可以忽略等待时间。其中有一个点非常注意,虽然我们说一个存取周期可以读这么多个芯片,但是不是指一次访存可以读取这么多个存储器芯片,每次读取都是一次访存,因为CPU每次都是需要送地址的。

需要注意是:流水线只有充分流动起来了,才能在T存取周期中读取T/r个存储器芯片:

这里的充分流动的意思在宏观上,进行多轮循环读取以后,当基数达到一定量级以后,读取最后一块存储器芯片的恢复时间我们大致是可以进行忽略的。例如下图,我们只读了三块存储器芯片,这时候我们的工作时间太短,所以就不能说平均r周期读取一块存储器芯片。
在这里插入图片描述

注意:在选择题中如果考察低位交叉编址,这时候一般都是问使用低位交叉编址以后能够达到什么样的性能效果,即流水线充分流动以后能够达到什么样的效果,这时候就得从宏观上进行分析,例如下面这题:

这是一题选择题,这题我们应该从宏观上进行分析,即流水线充分流动,那么这时候每个读写时间r可以读写一个存储器芯片,所以一个存储周期可以读写4个,所以答案选B。
在这里插入图片描述

如果是在计算题中考察低位交叉编址,如果题目没有说明流水线充分流动,或者间接说明流水线充分流动,那么这时候就得出微观上进行分析,即读取最后一个存储器芯片的恢复时间不能省略。

例如上面那题做一个裁剪:假设下面为一道计算题,题目没有说明流水线充分流动,那么这时候读取4个存储器芯片就需要50+50+50+200=350ns
在这里插入图片描述

低位交叉编址满足程序的局部性原理:
首先我们需要知道什么是程序的局部性原理:对于高位交叉编址和低位交叉编址来说,其中空间局部性都是能够满足的,但是时间局部性高位交叉编址无法满足,因为其存储单元是在相同的存储器芯片内连续存放,其每次读完一个存储单元都需要一段恢复时间,而低位交叉编址中,连续的存储单元在不同的存储器芯片,所以可以实现较短时间的访问连续的存储单元。
在这里插入图片描述

单体多字存储器

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

存储周期和访存

我们知道,在低位交叉编址中,一个存储周期,我们可以读出若干个不同存储器芯片的存储单元。但是需要知道的是我们是进行了多次的访存,因为我们每次访存只送一次地址,所以每次只能取对应地址的存储单元的数据。但是如果是突发传送方式,我们送一个地址,就可以连续读出好几个存储单元的内容,(一般是读取的存储单元的数据刚好能够用满数据总线)。我们需要知道,如果没有说明是突发传送方式,那么每次访存只能取一个存储单元。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ettus USRP X410 配件讲解,如何选择对应的配件

Ettus USRP X410 产品图片 产品编号: 787272-01 附件 所需的附件 USRP电源线 可选附件 连接套件 SMA连接线 线缆 安装套件 通信电缆 风扇盒 汇总列表 名称编号价格Ettus USRP X410787272-01215,550.00USRP RIO电源线&#xff0c;中国785023-10165.00双百兆以太网PCIe接口…

C语言实现输入一行字符统计其中有多少个单词,单词之间用空格分隔开

完整代码&#xff1a; // 输入一行字符统计其中有多少个单词&#xff0c;单词之间用空格分隔开 #include<stdio.h>int main() {char ch;//num为单词的个数int num0;printf("请输入一行字符&#xff0c;单词之间用一个空格分隔开\n");while ((chgetchar())!\n)…

Linux:程序地址空间/虚拟地址等相关概念理解

文章目录 程序地址空间虚拟地址和物理地址地址的转换地址空间是什么&#xff1f; 程序地址空间 在C和C程序中&#xff0c;一直有一个观点是&#xff0c;程序中的各个变量等都会有一定的地址空间&#xff0c;因此才会有诸如取地址&#xff0c;通过地址访问等操作&#xff0c;那…

【软件设计师-中级——刷题记录7(纯干货)】

目录 每日一言&#xff1a;持续更新中...你的编程水平是&#xff1f; A 入门&#xff1a;我对编程没有一点儿经验 B. 初级&#xff1a;了解一点基础知识&#xff0c;但没有写过代码 C. 中级&#xff1a;会写点简单代码&#xff0c;能看懂代码 D. 高级&#xff1a;写过多段代码&…

基于springboot实现学生综合成绩测评系统项目【项目源码】计算机毕业设计

基于springboot实现学生综合成绩测评系统演示 开发技术与环境配置 以Java语言为开发工具&#xff0c;利用了当前先进的springboot框架&#xff0c;以MyEclipse10为系统开发工具&#xff0c;MySQL为后台数据库&#xff0c;开发的一个学生综合测评系统。 2.1 SpringBoot框架 S…

jsp内的${}循环一次及循环几次相加出总和

目录 表内读数据循环一次的相加显示&#xff1a; 表内读数据循环几次的相加&#xff0c;计算出总和并显示&#xff1a; 表内读数据循环一次的相加显示&#xff1a; <c:forEach items"${sessionScope.PropertyFeelist}" var"pf"><h5> ${pf.w…

Linux进程终止

进程终止 一.返回码&#xff08;错误码&#xff09;1.strerror2.errno 二.exit三._exit1.简单使用2.exit和_exit的区别 一.返回码&#xff08;错误码&#xff09; 其实进程终止不外乎就以下三种情况&#xff1a; 1.strerror 我们一般关心程序为什么会失败而不关心为什么会成功…

[管理与领导-122]:IT人看清职场中的隐性规则 - 18- 一半佛一半魔,一半君子一半小人,阴阳互转,生生不息,儒、释、道、法,一个不能少

目录 一、太极阴阳图&#xff1a;阴阳互转&#xff0c;生生不息 1.1 阴阳互转&#xff0c;生生不息 1.3 职场中儒、释、道、法 二、职场中的阴阳&#xff1a;君子与小人&#xff0c;善与恶 2.1 职场中的阴阳&#xff1a;君子与小人 2.2 职场中的阴阳&#xff1a;谁不是一…

LRC2024:Lightroom Classic 2024 (WinMac)

Lightroom Classic是一款由Adobe公司开发的数字图像处理和管理工具。它以强大的照片调整、处理、管理和分享功能而著称&#xff0c;被认为是专业摄影师的必备利器。 主要特性如下&#xff1a; 增强的校正工具&#xff1a;Lightroom Classic提供了丰富的照片校正工具&#xff0…

交换机端口灯常亮 端口up状态 服务器设置ip交换机获取不到服务器网卡mac地址 不能通信

环境: 深信服防火墙 8.0.75 AF-2000-FH2130B-SC S6520X-24ST-SI交换机 version 7.1.070, Release 6530P02 问题描述: 交换机一个vlan下有3台服务器,连接端口2、3、4,2和3连接的服务器正常,交换机3端口灯常亮 端口up状态 服务器自动获取不了地址,改为手动设置ip后,交…

冷笑话-1

代码检视时&#xff0c;程序员A看着下面的代码&#xff0c;疑惑地问程序员B&#xff1a;“为什么不用重载&#xff1f;” class MyClass {public MyClass queryById(long id) { //......}public MyClass queryByName(String Name) { //......}public MyClass queryByIdAndNam…

2023CANN训练营第二季——Ascend C算子开发(入门)——基础概念

第一章 Ascend C 算子开发入门 一、基础概念 1.Ascend C 概念&#xff1a;Ascend C是CANN针对算子开发场景推出的编程语言&#xff0c;原生支持C和C标准规范&#xff0c;最大化匹配用户开发习惯;通过多层接口抽象、自动并行计算、孪生调试等关键技术&#xff0c;极大提高算子…

Java并发编程常见面试题总结

梳理Java并发编程相关的面试题&#xff0c;主要参考《JAVA并发编程实战》(Brian Goetz, Joshua Bloch, David Holmes, Tim Peierls, Joseph Bowbeer, Doug Lea 著, 韩锴, 方妙 译)一书&#xff0c;其余部分整合网络相关内容。注意&#xff0c;关于Java基础相关的面试题可以参考…

‘conda‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

原因&#xff1a;环境变量没有正确添加解决&#xff1a;我的电脑—右键属性—高级系统设置—环境变量—系统变量—Path—双击进入—新建&#xff0c;去安装Anaconda的目录下&#xff0c;找到Library中的bin&#xff0c;将此时的路径粘贴到此处

Python学习第3天-第一个Python程序

文章目录 前言一、创建项目二、创建程序总结 前言 下面给大家展示下经典的Hello World! 一、创建项目 二、创建程序 print("Hello World!")总结 回到顶部 学习网站 欢迎来到Python的世界&#xff01;

Leetcode1833. 雪糕的最大数量

Every day a Leetcode 题目来源&#xff1a;1833. 雪糕的最大数量 解法1&#xff1a;贪心 排序 本题唯一的难点在于计数排序。 计数排序详解&#xff1a;C算法之计数排序 为了尽可能多的买到雪糕&#xff0c;我们选择从价格低的雪糕开始买&#xff0c;统计能够买到的雪糕…

SQL基础语法总结(查询)

学习网站&#xff1a;https://www.w3schools.com/sql/&#xff0c;提供在线编程 以下内容仅SQL常见语法总结 数据 Customers表 Products表 OrderDetails表 Orders表 Shippers表 Employees表 选择查询 SELECT select语句用来从头数据库中选择数据 SELECT column1, column2,…

基于SSM的大学校医管理系统

基于SSM的大学校医管理系统、学校医院管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录系统 用户界面 管理员界面 摘要 大学校医管理系统…

Linux系统编程:进程part_2(信号相关)

前言 这一节内容我没怎么认真写&#xff0c;就是纯当草草过了一遍&#xff0c;这部分不是很重要当然能掌握肯定更好。 更多的是有个印象然后知道遇到这样的问题能回想起来知道怎么解决即可&#xff08;虽然不太可能遇到&#xff09;。 信号量 实现PV操作 P&#xff1a;测试并…

springboot生成二维码的正确姿势-附视频附源码

二维码的原理是什么&#xff0c;如何保证不重复&#xff1f;你有没有想过这样一件事&#xff0c;二维码是实现原理是什么&#xff1f;如何保证各个平台的二维码是唯一的&#xff1f;就算你的程序停止运行&#xff0c;但是你的二维码依然存在。设计上要保证唯一性&#xff0c;比…