计算机组成原理第4章-(存储器)【上】

存储器分类

对于计算机中存储器的分类,方法有很多,不同的方法之间是独立的,为此我们简单讲述两种分类

方法:“存取方式分类”、“在计算机中作用分类”。

-->按存取方式分类

按存取方式分类可以将存储器分为:“随机存储器”、“只读存储器”、“顺序存取存储器”、“直接存取

存储器”。

随机存储器(RAM)【Random Access Memory】

RAM是一种可读/可写的存储器,其特点是任何一个存储单元中的内容都可以随机存取,并且

存取时间与物理位置无关。

计算机系统中的主存都采用这种随机存储器

只读存储器(ROM)【Read Only Memory】

ROM是一种可读的存储器,这意味着,ROM只能读取数据,不能存取数据。

因此ROM常被用于【操作系统的固化、系统程序的使用

-->按在计算机中作用分类

在这种方式下,存储器主要分为:“主存储器”、“辅助存储器”、“缓冲存储器”。

主存储器

主存储器简称:“主存”【运存】,它的主要特点是可以直接和CPU交换信息,速度快。

辅助存储器

辅助存储器简称:“辅存”【外存】,它是主存储器的后援存储器,用来存放暂时不被CPU和程序使

用到的数据。

特点是:容量大,速度慢,不能与CPU直接交换信息。

缓冲存储器【Cache】

缓冲存储器是连接主存和CPU之间的桥梁,尽管主存的速度已经非常快了,但是对于CPU来说还

是很慢,为此人们开发出了缓冲存储器【Cache】,用来提高主存利用率。

存储器的层次结构

存储器有性能指标特性】:“速度”、“容量”、“位价”【单位容量价格

我们先看一张图片:

在这个金字塔中,反映出了各类存储器的优缺点。

例如,对于容量大小:“磁带->磁盘->主存->缓存->寄存器(CPU)”。

对于运算速度:“寄存器(CPU)->缓存->主存->磁盘->磁带”。

对于单位容量价格:“寄存器(CPU)->缓存->主存->磁盘->磁带”。

Ps:在现代计算机中,寄存器和缓存全部被封装在CPU中。

实际上,对于存储器的层次主要体现在两个层次上:“缓存-主存”、“主存-辅存”两个层次上。

对于引入“缓存-主存”层次和“主存-缓存”层次的目的

缓存-主存”层次解决了CPU和主存速度不匹配的问题。

主存-辅存”层次解决了存储系统的容量问题。

因此,现在计算机系统全部都具有这两个存储层次,构成了:缓存、主存、辅存三级层次。

主存储器

概述

我们下面先了解一下传统CPU:读/写数据的简单流程。

首先,CPU根据MAR中的地址访问某个存储单元时,还需要经过:“地址译码”、“驱动”等电路,才

能找到所需单元。

而读出数据时,需要先经过放大器,才能将被选中单元的存储数据送入MDR。

如下图所示:

但是在现代计算机系统中,MAR、MDR都被制作在CPU中,而译码器、驱动器、读/写电路都被制

作在主存中。

为此,我们可以得到一个现代计算机操作流程

当要从存储器中出一个数据时,先有CPU将存放数据的存储器的地址送入MAR中,再经地址总

线送至主存,然后发出读命令,内存接收到命令后,将对应存储单元中的数据送入MDR。

当要向存储器中入一个数据时,先有CPU将要写入的存储单元的地址送入MAR中,再经地址总

线送至内存,然后发出写命令,同时将要写入的数据送入MDR,内存接收到命令后,将MDR中的

数据写入对应的存储单元中。

主存中存储单元地址的分配【重点

对于存储单元地址的分配,不同的CPU有不同的方式,我们主要说两种方式:“大端存放”、“小端存

”。

在开始学习之前,我们有必要了解一下基本知识。

在计算机中,8位(bit)等于1字节(B)

1字等于N字节,其中N∈Z(整数集合)

大端存放

常见的32位字长的机器如不特别说明,都可以视为是大端存放方式。

例如IBM 370机的字长为32位,那么它的寻址方式可以是按“1”字寻址,也可以是按“4”字节寻址。

例如,对于一个数据(12345678)H,这一个16进制数据来说,它的最高位是【1】,最低位是

【8】。那么存放到存储单元中是下图这个样子:

其中,红字为字地址绿字为字节地址蓝字为存放的数据

概括为:“高地址的内存单元存放低位数据,低地址的内存单元存放高位数据”。【顺序写入

小端存放

常见的16位机器如不特别说明,都可视为是“小端存放”方式。

例如POP-11机器,它的字长是16位,那么它可以按“1”字寻址,也可以按“2”字节寻址。

例如,对于一个数据(12345678)H,这一个16进制数据来说:

概括为:“低位数据存放到低字节地址中,高位数据存放到高字节地址中。”【逆序写入

对于大端存放也好,小端存放也好,字地址始终是字节数的整数倍

例题:

问:已知有一块24位地址线的主存,对于字长为32位的机器来说,它按字节寻址、字寻址的范围

是多少?对于字长为16位的机器来说,它按字节寻址、字寻址的范围是多少?

答:

24位地址线说明有2^{24}个存储单元,那么就有2^{24}个地址号,所以对于32位机器也好,16位机器也

好,它们按字节寻址范围都是2^{24},也就是16M。

但是对于按字寻址就不同了。

32位机器的按字寻址范围是:16M / 4(字节数) = 4M【在32位机器中,一字等于四字节

16位机器的按字节寻址范围是: 16M / 2(字节数) = 8M【在16位机器中,一字等于二字节

主存的技术指标

主存的技术指标主要有三点:“存储容量”、“存储速度”、“主存带宽

存储容量

存储容量是指主存能存放的二进制代码总位数

存储容量 = 存储单元个数 * 存储字长

也可以用存储的字节总数来表示:

存储容量 = 存储单元个数 * 存储字长/8

存储速度

存储速度是由存取时间和存取周期表示。

存取时间可以是:“读取时间”、“写入时间”。

存取周期是:“存储器进行连续两次的存储器操作所需的最小时间间隔”。

主存带宽

主存带宽是存储器每秒可以读取/写入的位数。

用字/秒或字节/秒表示。

如存取周期是500ns,每个存取周期可以访问16位,那么它的带宽就是32M位每秒。

500ns =5 *  10^{-7}s

则16 / 5 *  10^{-7}= 32M

为此我们可以得到公式:

主存带宽 = 每个存取周期访问的位数 / 存取周期

因此我们想提高存储器带宽可以:

1.缩短存取周期

2.增加可以访问的位数

随机存储器分类

随机存储器RAM可以分为:“静态RAM”、“动态RAM”两大类。

静态RAM(Static RAM)【SRAM】

SRAM通过触发器来存储信息,因此即使信息读出后,它扔保持原先的状态,不需要再生

但是当电源掉电时,原存信息丢失,故属于易失性半导体存储器

动态RAM(Dynamic RAM)【DRAM】

DRAM通过电容来存储信息,当电容中的电荷足够多的时候,表示“1”,反之,表示“0”。

电容上的电荷只存在1~2ms,因此即使电源不掉电,信息也会自动丢失,因此我们需要每隔一段

时间对DRAM“充一次电”,这个过程也叫作“刷新”或者“再生”。

DRAM刷新

DRAM刷新的实质是:“将原存信息读出,再用刷新放大器形成原信息并重新写入的过程”。

DRAM刷新的三种方式

1.集中刷新

2.分散刷新

3.异步刷新

课后题

1.若存储器的数据总线宽度为32位,存取周期为200ns,则存储器的带宽是多少?

200ns = 2 * 10^{-7}s

带宽 = 32 / 200ns = 160M位(这里的M指的是百万Millions)

2.某机字长为32位,其存储容量是64KB,按字编址其寻址范围是多少?若主存以字节编址,请画

出其按字寻址和按字节寻址的示意图。

存储容量64KB,那么存储单元就有64KB个,因此按字节寻址就有64KB。

而1字等于4字节,因此按字寻址范围是:64 / 4 = 16KB。

3.SRAM和DRAM的区别是什么?

SRAM是用触发器来存储信息,不需要刷新。

DRAM是用电容来存储信息,需要刷新。

4.DRAM为什么要刷新?怎么刷新的?刷新方式有哪三种?

DRAM是用电容来存储信息,里面的电荷只存在1~2ns,为此需要隔一段时间来刷新,让电荷重新

存放在DRAM中。

DRAM刷新的过程是:“先将原数据读出,再由刷新放大器重新形成原数据后放入DRAM中。”

刷新方式有:“集中刷新”、“分散刷新”、“异步刷新”三种。

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

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

相关文章

水经微图Web新版发布

水经微图Web新版已经上线,在该版本中主要新增了态势箭头标绘、文本要素标注和显示网页气泡等功能。 在本文中,我们将为大家分享新增的功能项,以及原有功能作的一些优化等。 当前版本 当前版本号为:1.4.0-beta 如果你发现该版…

JavaSE 泛型

目录 1 泛型类的定义1.1 为什么需要泛型1.2 泛型的概念1.3 泛型的分类 2 泛型类2.1 泛型类的定义2.2 泛型类的例子2.3 泛型类的实例化2.3.1 实例化语法2.3.2 裸类型(Raw Type) 2.4 泛型类的定义-类型边界2.5 泛型类的使用-通配符(Wildcards)2.5.1 基本概念2.5.2 通配符-上界2.5…

14、Kafka 请求是怎么被处理的

Kafka 请求是怎么被处理的 1、处理请求的 2 种常见方案1.1、顺序处理请求1.2、每个请求使用单独线程处理 2、Kafka 是如何处理请求的?3、控制类请求和数据类请求分离 无论是 Kafka 客户端还是 Broker 端,它们之间的交互都是通过 “请求 / 响应” 的方式完…

Hypervisor Display架构

Hypervisor Display架构部分 1,所有LA侧的APP与显示相关的调用最终都会交由SurfaceFlinger处理 2,SurfaceFlinger会最终调用android.hardware.graphics.composer2.4-service服务 3,android.hardware.graphics.composer2.4-service服务会调用G…

针对企业的泄密,天锐绿盾提出十大解决方案

01 防止公司内部数据泄密 通过动态加解密技术,有效防止公司内部数据泄密。即员工在创建、编辑文档时会被自动加密存放在硬盘上,防止员工故意或由于疏忽而造成泄密或对文件恶意破坏。 管理思路>> ● 不改变员工使用习惯、不改变文件格式、不改变…

APM固件编译和仿真

事情起因 主要想对无人机APM固件进行仿真的算法验证,因实际飞行的过程实际验证太浪费飞机了,所以就先试用仿真对算法进行仿真开发。 一,环境搭建 环境搭建我建议参考官方英文教程,英文教程写的比较全,不懂可以自己使…

科聪控制系统典型应用车型 —— 料箱机器人

料箱机器人即料箱AGV是一种智能化物流搬运设备,它可以代替人力完成出库入库和搬运工作,可根据出入库生产出货需求,将货物从起点运送到终点,自动柔性完成货到人货到点的操作。 提升仓储和物流效率的自动化利器 料箱机器人的投用能…

yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)

要在YOLOv5中添加测距和测速功能,您需要了解以下两个部分的原理: 单目测距算法 单目测距是使用单个摄像头来估计场景中物体的距离。常见的单目测距算法包括基于视差的方法(如立体匹配)和基于深度学习的方法(如神经网…

C语言--字符函数与字符串函数

大家好,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流 本文由残念ing 原创CSDN首发,如需要转载请通知 个人主页:残念ing-CSDN博客,欢迎各位→点赞&#…

leetcode---76. 最小覆盖子串 [C++/滑动窗口+哈希表]

原题:76. 最小覆盖子串 - 力扣(LeetCode) 题目解析: 此题在这道题的基础上进行理解会更简单 leetcode --- 30. 串联所有单词的子串[C 滑动窗口/双指针]-CSDN博客 本题要求在s字符串中找到含有t字符串所有字符的最短子串。 也就是…

【lesson17】MySQL表的基本操作--表去重、聚合函数和group by

文章目录 MySQL表的基本操作介绍插入结果查询(表去重)建表插入数据操作 聚合函数建表插入数据操作 group by(分组)建表插入数据操作 MySQL表的基本操作介绍 CRUD : Create(创建), Retrieve(读取),Update(更新)&#x…

XAgent的部署及运行

源代码clone git clone config 文件的修改 在XAgent源码目录,运行 vi .env, 修改以下配置条目 CONFIG_FILEassets/gpt-3.5-turbo_config.ymlpython环境 python >3.10 安装conda,通过conda激活python3.10的环境 wget https://repo.a…

josef约瑟 跳合位、电源监视继电器 HRTH-Y-2H2D DC220V

系列型号: HRTH-Y-2H2D-X-T跳位监视、合位监视、电源监控继电器; HRTH-Y-2Z-X-T跳位监视、合位监视、电源监控继电器; HRTH-Y-2H-X-T跳位监视、合位监视、电源监控继电器; HRTH-J-2H2D-X-T跳位监视、合位监视、电源监控继电器…

Axure中继器的基本使用

介绍中继器 在 Axure 中,中继器是一种交互设计元素,用于在不同页面之间传递数据或触发特定的事件。它可以帮助模拟真实的用户交互流程和页面之间的传递逻辑,继承关系用于描述两个元件之间的父子关系。通过使用继承关系,您可以创建…

Linux的SSH(远程登录)

SSH定义: SSH(Secure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。 实务中,它主要用于保证远程登录和远程通信的安全,任何网络服务都可以用这个协议…

深度学习笔记_7经典网络模型LSTM解决FashionMNIST分类问题

1、 调用模型库,定义参数,做数据预处理 import numpy as np import torch from torchvision.datasets import FashionMNIST import torchvision.transforms as transforms from torch.utils.data import DataLoader import torch.nn.functional as F im…

自定义 spring-boot组件自动注入starter

1&#xff1a;创建maven项目 2&#xff1a;pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocati…

stm32与Freertos入门(二)移植FreeRTOS到STM32中

简介 注意&#xff1a;FreeRTOS并不是实时操作系统&#xff0c;而是分时复用的&#xff0c;只不过切换频率很快&#xff0c;感觉上是同时在工作。本次使用的单片机型号为STM32F103C8T6,通过CubeMX快速移植。 一、CubeMX快速移植 1、选择芯片 打开CubeMX软件&#xff0c;进行…

轻量封装WebGPU渲染系统示例<53>- 多盏灯灯光照在地面的效果

WebGPU实时渲染实现模拟多盏灯的灯光照在地面的效果灯光效果 。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/MultiLightsTest.ts 当前示例运行效果: 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源…