计算机组成原理 —— 存储系统(主存储器基本组成)

2024-06-22 15:52

本文主要是介绍计算机组成原理 —— 存储系统(主存储器基本组成),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

计算机组成原理 —— 存储系统(主存储器基本组成)

  • 0和1的硬件表示
  • 整合结构
  • 寻址
    • 按字寻址和按字节寻址
      • 按字寻址
      • 按字节寻址
      • 区别总结
    • 字寻址到字节寻址转化

我们今天来看一下主存储器的基本组成

0和1的硬件表示

我们知道一个主存储器是由存储体,MAR,MDR 组成的:
在这里插入图片描述
存储体中,我们存储了许多的二进制数据,这些二进制数据都是存储在一个存储单元上的,一个存储单元可以存放一个1或者0
在这里插入图片描述
这里MOS管可以理解为一个开关,当电压足够大时,MOS管就会开通

假如我在电容上充了1v的电压,这个时候,如果我要读取这个1v,那我就要给MOS管施加一个高电压,使之流通,这样在检测端就可以检测到这个1v的电压
在这里插入图片描述
0也是这样储存的。

通过这样的原理,我们将一个一个的存储元排排站,就可以存储连续的二进制数:
在这里插入图片描述其中红色的线是挑选线(字选线),只要往红线上通高电压,我就可以选中这一行的数据,绿色的线是数据的运送线(数据线),将数据(0或1)运送出去。

我们称一行的存储元,为一个存储单元
在这里插入图片描述很多个存储单元,为一个存储体
在这里插入图片描述
在这里插入图片描述

整合结构

现在我们知道0和1是怎么存储的了,现在的问题是,怎么设计呢?
在这里插入图片描述首先第一个问题:选线,我该怎样实现我想选那一条线就选那一条线呢?

这就是MAR的功能,MAR会储存我们要选的线的序号,通过译码器,传送到对应的线(字选线)上
在这里插入图片描述
接下来就是,我读出来的数据,该放到哪里呢?,这就是MDR的功能了,读出来的数据通过位线(数据线),放到MDR中,然后CPU通过数据总线,读取数据:
在这里插入图片描述
同时我们还要增加一个控制电路,控制MAR,译码器和MDR:
在这里插入图片描述控制电路主要是为了保证电流稳定,稳定之后,再由个部分部件处理

除了这些,我们还要增加片选线(当有多块芯片时,方便我们选择我们想要的芯片)
在这里插入图片描述
还有读写控制线,有时候是两条,有时候是一条:
在这里插入图片描述最后封装出来可能是这样的:
在这里插入图片描述

寻址

按字寻址和按字节寻址

按字寻址和按字节寻址是计算机系统中两种不同的数据访问方式,它们分别适用于不同的情景和需求,下面详细解释两者的特点和区别:

按字寻址

  1. 定义:按字寻址是指处理器直接访问内存中与自身字长相同大小的数据块(即一个“字”)。例如,在32位系统中,处理器一次处理的数据为32位,那么按字寻址就是一次性访问4字节的数据。
  1. 优势:提高数据处理效率,减少访存次数,尤其适合进行大规模数据操作和高性能计算,因为减少了指令执行和数据传输的开销。
  1. 限制:要求数据必须按照处理器字长对齐存放,否则可能导致无法直接访问或需要额外的处理步骤来调整数据对齐。

按字节寻址

  1. 定义:按字节寻址是指处理器能够直接访问内存中的每一个字节。这意味着可以灵活地读取或写入任意字节,而不必受限于字长。
  1. 优势:灵活性高,适用于处理字符串、字符数据或需要精确控制数据读写位置的场景。它允许对数据进行细粒度的操作。
  1. 限制:相比按字寻址,按字节寻址可能会降低数据处理速度,尤其是在需要处理大量连续数据时,因为它可能需要更多的访存操作。

区别总结

  • 数据单位:按字寻址处理的数据单位是处理器字长的整数倍,而按字节寻址处理的是单个字节。
  • 效率与灵活度:按字寻址在处理大数据块时效率高,但不如按字节寻址灵活;按字节寻址虽灵活,但在大规模数据操作时效率较低。
  • 对齐要求:按字寻址通常要求数据对齐,而按字节寻址没有此限制。
  • 应用场合:按字寻址适用于高性能计算、大规模数据处理;按字节寻址更适合文本处理、数据解析等需要精细数据操作的场景。

在这里插入图片描述
在实际应用中,现代处理器通常支持这两种寻址方式,系统根据具体任务的需求选择最合适的访问模式。

字寻址到字节寻址转化

比如之前我是按照字寻址的,那么对应的图应该是这样:
在这里插入图片描述我们想通过字的地址来反推出字节的地址,这里我们1字是32bit,1个字节是8bit,所以我们只要将字地址乘4就可以得出字节地址
在这里插入图片描述其他寻址方式,以此类推:
在这里插入图片描述

这篇关于计算机组成原理 —— 存储系统(主存储器基本组成)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084732

相关文章

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

SQL BETWEEN 语句的基本用法详解

《SQLBETWEEN语句的基本用法详解》SQLBETWEEN语句是一个用于在SQL查询中指定查询条件的重要工具,它允许用户指定一个范围,用于筛选符合特定条件的记录,本文将详细介绍BETWEEN语... 目录概述BETWEEN 语句的基本用法BETWEEN 语句的示例示例 1:查询年龄在 20 到 30 岁

mysql中insert into的基本用法和一些示例

《mysql中insertinto的基本用法和一些示例》INSERTINTO用于向MySQL表插入新行,支持单行/多行及部分列插入,下面给大家介绍mysql中insertinto的基本用法和一些示例... 目录基本语法插入单行数据插入多行数据插入部分列的数据插入默认值注意事项在mysql中,INSERT I