首页 > 其他分享 >【组成原理-存储】存储器的相关知识

【组成原理-存储】存储器的相关知识

时间:2022-09-03 15:13:41浏览次数:58  
标签:存储 16 32 存储器 64 字长 原理

目录

1 主存储器

1.1 随机存储器 RAM

特点 SRAM(静态) DRAM(动态)
存储信息 触发器 电容
破坏性读出
需要刷新 不要 需要(分散刷新、集中刷新、异步刷新)
地址传送 行、列地址同时送 行、列地址分开两次送(地址复用技术)
读写速度
成本
用途 Cache 主存

1.2 只读存储器 ROM

  • EPROM、EEPROM、Flash(U盘)
  • SSD(固态硬盘)

1.3 串行访问存储器

  • 磁带、磁盘、光盘(CD-ROM)

1.4 多模块存储器

  • 高位交叉存储器:高位地址表示体号,低位地址表示体内地址
  • 低位交叉存储器:低位地址表示体号,高位地址表示体内地址(常考)

2 字长和存储容量

2.1 存储单位

在计算机组成原理课程中,使用 K、M、G、T 均表示以 2 为底的单位。如 2K 个存储单元的意思是 2048 个存储单元,而不是 2000 个。但是,对于磁盘的存储容量及数据传输率,依然使用以 10 为底的单位。

单位 大小 十六进制数
K 210 400H
M 220 10,0000H
G 230 ~
T 240 ~

注意!!!408 考试使用 KB、MB、GB、TB 表示 2 为底的存储单位!!!

注意!!!408 考试使用 KB、MB、GB、TB 表示 2 为底的存储单位!!!

注意!!!408 考试使用 KB、MB、GB、TB 表示 2 为底的存储单位!!!

10 为底的存储单位 2 为底的存储单位
KB = 103B KiB = 210B
MB = 106B MiB = 220B
GB = 109B GiB = 230B
TB = 1012B TiB = 240B

【例】128 MB = 128 * 220 B = 27 * 220 B = 227 B

16MB = 16 * 220 B = 24 * 220 B = 224 B

2.2 字长

  • 字长:用于表示 CPU 内部通用寄存器的宽度。字长包括机器字长、指令字长、存储字长,必须为字节(8 位)的整数倍。

  • 机器字长:机器进行一次整数运算所能处理的二进制数据的位数,即 CPU 位数,或简称为字长。

【注】操作系统位数:操作系统可寻址位数(小于等于 CPU 位数)。32 位处理器只能装 32 位操作系统而不能装 64 位操作系统,64 位处理器能装 32 或 64 位操作系统。

名称 16 位机器(CPU)中的位数 32 位机器(CPU)中的位数 64 位机器(CPU)中的位数
位 (bit, b) 1 1 1
字节 (byte, B) 8 8 8
半字 (1B/2B/4B) 8 16 32
字 (2B/4B/8B,机器字长) 16 32 64
双字 32 64 128
四字 64 128 256
  • 指令字长:一个指令字中包含的二进制位数。

  • 存储字长:一个存储单元存储的二进制位数。

指令字长一般取存储字长的整数倍,若指令字长等于存储字长的 2 倍,则需要 2 个访存周期来取出一条指令;若指令字长等于存储字长,则取指周期等于机器周期。

补充:不同机器下的数据类型长度

类型 16 位机器 32 位机器 64 位机器
char 8 8 8
short 16 16 16
int 16 32 32
long 32 32 32
long long 64 64 64
float 16 32 32
double 64 64 64

2.3 存储容量

  • 存储容量 = 存储单元个数 * 每个存储单元的长度(位数,又称为存储字长)

【例 1】存储器容量为 2M * 8 位,表示该存储器有 2 * 220 = 221 个存储单元(若为 SRAM,则有 21 根地址线),每个存储单元存放 8 位二进制数据(有 8 根数据线,存储字长为 8 位,即 1 字节),存储容量为 2M * 1B = 2MB。

【例 2】存储器容量为 8K * 16 位,表示该存储器有 8 * 210 = 213 个存储单元(若为 SRAM,则有 13 根地址线),每个存储单元存放 16 位二进制数据(有 16 根数据线,存储字长为 16 位,即 2 字节),存储容量为 8K * 2B = 16KB。

  • 设 A 存储器容量为 x1 * y1 位,B 存储芯片容量为 x2 * y2 位,则组成 A 存储器所需要的 B 芯片片数为(x1 * y1)/(x2 * y2)

【例 3】16 片 2K * 4 位的存储芯片,可设计为多少存储容量的 16 位存储器?

设存储单元个数为 M,则有:(M * 16) / (2K * 4) = 16,解得 M = 8K。

【例 4】内存按字节编址,地址从 90000H 到 CFFFFH,若用存储容量为 16K * 8 位芯片构成该内存,则需要多少块芯片?

存储单元个数为 D0000H - 90000H = 40000H = 4 * 164 = 218 = 28 * 210 = 256K,且内存按字节编址(8 位),所以有:(256K * 8) / (16K * 8) = 16,即需要 16 块芯片。

【例 5】某 32 位机器的内存按字编址,地址从 90000H 到 CFFFFH,若用存储容量为 16K * 8 位芯片构成该内存,则需要多少块芯片?

存储单元个数为 D0000H - 90000H = 40000H = 4 * 164 = 218 = 28 * 210 = 256K,且内存按字编址(每个存储单元大小为 32 位),所以有:(256K * 32) / (16K * 8) = 64,即需要 64 块芯片。

2.4 主存容量的扩展

  • 位扩展法:8K * 1b --> 8K * 8b
  • 字扩展法:16K * 8b --> 64K * 8b
  • 字位同时扩展法:16K * 4b --> 64K * 8b

3 磁盘的平均存取时间

  • 设磁盘转数为 r 转/秒,每条磁道容量为 N 字节,则磁盘传输速率 = r * N

【注】对于磁盘,K、M、G、T 是以 10 为底的单位,而不是以 2 为底!1K = 103,1M = 106,1G = 109,1T = 1012。比如 20MB/s = 20 * 106 B/s ≠ 20 * 220 B/s。

  • (一个扇区的)平均存取时间 = 寻道时间 + 旋转延迟时间(磁头定位到所在扇区的时间)+ 传输时间(磁头扫过一个扇区所用的时间)
  • 默认情况下:旋转延迟时间 = (旋转一圈的时间 / 2) = (1 / 磁盘转数) / 2
  • 传输时间 = (旋转一圈的时间 / 每条磁道的平均扇区数) = (一个扇区的大小 / 数据传输率)

【注】因为在定位过程中,最多旋转 1 圈,最少不用旋转(0 圈),所以在平均情况下,需要旋转半圈,时间需除于 2。

相关例题

【例 1】设磁盘转速为 7200 转/分,平均寻道时间为 9ms,每条磁道的平均扇区数为 400,则访问一个扇区的平均存取时间是多少?

  • 旋转一圈的时间 = (60s / 7200) * 1000 = 8ms,旋转延迟时间 = 1/2 * 旋转一圈所用时间 = 4ms
  • 传输时间 = (60s / 7200) / 400 * 1000 = 0.02ms
  • 寻道时间 = 9ms
  • 平均存取时间 = 寻道时间 + 旋转延迟时间 + 传输时间 = 9ms + 4ms + 0.02ms = 13.02ms

【例 2】设磁盘的转速为 10000 转/分,平均寻道时间为 6ms,磁盘传输速率为 20MB/s,磁盘控制器延迟为 0.2ms,读取一个 4KB 扇区所需的平均时间是多少?

  • 旋转一圈的时间 = (60s / 10000) * 1000 = 6ms,旋转延迟时间 = 1/2 * 旋转一圈所用时间 = 3ms
  • 传输时间 = 读取时间 + 延迟时间 = (4KB) / (20MB/s) * 1000 + 0.2 = 0.2ms + 0.2ms = 0.4ms
  • 寻道时间 = 6ms
  • 平均存取时间 = 寻道时间 + 旋转延迟时间 + 传输时间 = 6ms + 3ms + 0.4ms = 9.4ms

标签:存储,16,32,存储器,64,字长,原理
From: https://www.cnblogs.com/Mount256/p/16652621.html

相关文章

  • Spring 中使用自定义的 ThreadLocal 存储导致的坑
    Spring中有时候我们需要存储一些和Request相关联的变量,例如用户的登陆有关信息等,它的生命周期和Request相同。一个容易想到的实现办法是使用ThreadLocal:pub......
  • 10.自动配置原理入门
    @SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters={@Filter(type=FilterType.CUSTOM,classes=TypeExcludeFilter.class),......
  • 4.了解自动配置原理-自动配置
    1.当导入某个场景,比如web场景,就会自动导入web相关的所有依赖   tomcat也导入了,那就说明tomcat是内嵌到springboot中了 自动配好SpringMVC引入SpringMVC全......
  • 3.了解自动配置原理-依赖版本管理
    在编写springboot的时候只需要导入starter-web,关于wab的所有依赖都进来了,为什么会进来1.父项目做依赖管理在每个项目中的pom.xml都会存在这么一个配置依赖管理<p......
  • 编译原理:编译过程概述
    编译原理概述编译,就是一个把源代码变成目标代码的过程。如果源代码编译后直接在操作系统上运行,那目标代码就是汇编代码,再通过汇编和链接的过程形成可执行文件,然后通过加......
  • java 内存模型之 volatile 核心原理与应用
    1.happens-before规则https://blog.csdn.net/qq_39935047/article/details/1203847992.Juc12_Volatile的可见性、不保证可见性、有序性、使用、内存屏障四大指令StoreSt......
  • Eureka 工作原理
    上节内容为大家介绍了,注册中心Eureka产品的使用,以及如何利用Eureka搭建单台和集群的注册中心。这节课我们来继续学习Eureka,了解它的相关概念、工作流程机制等。Eurek......
  • 浅谈无扰动稳定控制装置的应用范畴及原理
    无扰动稳定控制装置的应用范畴及原理        石化、煤炭、冶金、制药等是连续性生产企业,工艺和安全生产要求流程的连续性,任何电源波动,确保交流接触器不异......
  • cmake是什么,为什么现在都用cmake,cmake编译原理和跨平台示例
    一cmake是什么? CMake是一个开源、跨平台的工具系列,是用来构建、测试和打包软件。CMake使用平台无关的配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用......
  • ADO.net 使用存储过程 返回数据库中的数据集
    publicList<dFiledTree>d_BZWH_dis_BZFiled_ByType_ByTreeAs2(stringObjectType,stringUserName,intTypeAID){List<dFiledTree>list=n......