主存储器结构

news2024/11/24 7:09:37

计算机存储器又称内存,是一种利用半导体技术做成的电子设备,用来存储数据。电子电路的数据是以二进制的方式存储,存储器的每一个存储单元称做记忆元。

存储器以二进制计算容量,基本单位是Byte:

· 1KiB=1,024B
· 1MiB=1,024KiB
· 1GiB=1,024MiB

所谓存储器,是指用来存储指令或者数据的部件。发展至今,计算机内部往往包含多种不同容量、不同用途的存储器。

所谓存储容量,指的是存储器拥有的字节数。存储器的存储空间会被分成很多个存储单元,每个存储单元的大小通常为 8 个二进制位(也就是 1 个字节,单位用 B 表示),每个单元都有一个唯一的地址。

假设某存储器的存储容量为 64KB,则意味着它有 64 x 1024 = 65536 个存储单元,这些单元的存储地址从 0 到 65535。其中,存储器容量的单位有很多(比如 B、KB、MB 等)

计算机中各存储器的分类标准通常有以下 2 种。

首先,根据 CPU 能否直接访问,可将所有存储器分为内部存储器和外部存储器,CPU 可以直接访问所有的内部存储器,但无法直接访问外部存储器。例如,我们常说的内存条,就是一种内部存储器;而诸如硬盘、U 盘、光盘等,则属于外部存储器。

位于外部存储器中的数据,必须先移动至内部存储器,才能为 CPU 所用。

而根据能否永久地存储数据,又可以将所有存储器细分为以下 2 种类型:

易失性存储器:无法永久地存储数据,一旦突然断电或者关闭计算机,内部存储的数据就会丢失;

非易失性存储器:可以永久地存储数据,即便断电或者关闭计算机,存储的数据也不会丢失。

A:存储器相关基本定义
存储器相关基本定义:目前我们采用半导体器件来承担存储任务,一个半导体触发器由于有0和1两个状态,就可以记忆一个二进制代码关于存储器有如下五个非常重要的概念

  • 存储元: 也可称为存储元件和存储基元,用来存放一位二进制信息
  • 存储单元: 由若干个存储元组成,能存放多位二进制信息
  • 存储体: 许多存储单元可组成存储体,也即存储矩阵
  • 存储字: 每个存储单元中二进制代码的组合即为存储字,可代表数值、指令和地址等
  • 存储字长: 每个存储单元中二进制代码的位数就是存储字长

主存储器由许多存储单元组成,每个存储单元包含多个存储元,每个存储元存储1位二进制代码0或1,故存储单元可存储一串二进制代码,称这串代码为存储字,而这串代码的位数称为存储字长,存储字长一般是一个字节(8位)或字节的偶数倍

B:存储器的基本结构

存储器基本结构:存储器主要分为

  • 主存(内存):CPU可以直接访间;主要存放程序和数据,是计算机实现”存储程序”控制的基础,外存中信息必须加载进主存后CPU才可以访问
  • 辅存(外存): CPU不可以直接访问

主存的基本构成如下图所示

基本上主存由三部分组成 :存储体,地址寄存器,数据寄存器

主存储器是存放指令和数据的,并能由 CPU 直接随机存取的随机存储器(RAM)。

地址寄存器(Memory Address Register,MAR)和数据寄存器(Memory Data Register,MDR)有共同的名词 —— 寄存。

  • 存储体M:存放二进制信息
  • MAR : 存储地址寄存器:用于保存当前 CPU 所访问的内存单元的地址。
  • MDR : 存储数据寄存器:用于存放欲写入存储体中的数据,或暂存从存储体中读出的数据。是用于暂时存放 CPU 计算过程中所用到的操作数、结果和信息。

寄存器也是存储器 用来存放数据

一个读取操作就像是从菜鸟驿站拿快递一样,我需要提供取件码给店员(数据地址),然后从货架(存储体)中找到快递,放在柜台(数据寄存器中)我来取走

一个写入操作则和取快递稍微不同,我们需要先给地址寄存器一个地址,然后把数据给数据寄存器,这样主存就会帮我们把数据写入存储体。

存储体里有地址和存储单元,这也是MAR和MDR存取方式,通过MAR找到数据地址,再通过MDR取出存储单元中的数据.
在这里插入图片描述
内部原理如下:

那么,什么是存储体呢?我们把存储体放大来看,这里用我画的图做讲解。

在这里插入图片描述
存储体由哪些组成

存储体由许多的存储单元组成,每个存储单元里面又包含若干个存储元件,每个存储元件可以存储一位二进制数0/1。

存储单元:

存储单元表示存储二进制代码的容器,一个存储单元可以存储一连串的二进制代码,这串二进制代码被称为一个存储字,代码的位数为存储字长。

在存储体中,存储单元是有编号的,这些编号称为存储单元的地址号。而存储单元地址的分配有两种方式,分别是大端、大尾方式、小端、小尾方式。

存储单元是按地址寻访的,这些地址同样都是二进制的形式。

在这里插入图片描述
这个图只显示了存储单元,里面的存储元件忽略不看的话,图中的小方格就是存储单元了,外面最大的矩形就是我们的存储体,存储单元中的数字就是地址了。

对于存储体的组成,这里引用一个形象的比喻:

存储体,相当于一栋大楼,大楼内有很多个房间(存储单元),每个房间又有很多个床位(存储元件),二进制代码0表示一个对象,1表示另一个对象(事实上0表示低电平,1表示高电平)。

比如,CPU 要向地址为2的存储单元(存储体有许多存储单元,每个存储单元对应了一个地址)中写入一条数据,要在地址寄存器为2的地方写入这条数据。

数据在存储体内按地址存储着,存储体有存储单元、存储字、存储字长之分。

  • 存储单元:在存储器中有大量的存储元,把它们按相同的位划分为组,这样的一组存储元称为一个存储单元。
  • 存储字:一个存储字代表一个二进制数,如存储字为 0011011001111101。
  • 存储字长:存储单元中的二进制代码位数,存储字长可以是8位、16位、32位等。
    在这里插入图片描述

一个地址对应一个存储单元,存储单元按地址存储到 MAR 中,所以,MAR 的位数反映存储单元的个数。存储单元中的数据暂存到 MDR 中,同样,MDR 的位数反映存储单元可存放的位数。

比如,MAR = 4位,反映了存储体共有 2^4 个存储单元。MDR = 16位,反映了存储单元可以存放1个字。

这里的字(word)根据不同的计算机硬件设计,会有不同的字节规定,有可能1个字等于1个字节,也有可能是1个字等于2个字节等。补充:1字节(Byte)等于8位(bit),即1B=8b。

举例说明
把主存储器类比为物流仓库,物流仓库的货架为主存储体、货号为MAR、柜台为MDR。其中货号由货架号、层数以及物品号组成,如10号货架的第3层的5号物品,即 10-3-5 号货物。

在这里插入图片描述
工作人员作为整个物流仓库的核心角色是必不可少的,这一角色会接触到货号、柜台。货号需要为工作人员提供每一个货物在物流仓库存放的地址。柜台需要向工作人员提供订单的信息,包括货号、寄往地址等信息,并且它还要记录工作人员完成从货架取货到存放柜台这一过程的结果信息。

货号存储着货物的在物流仓库的具体位置,工作人员在柜台前获取订单。然后,工作人员利用货号从货架中取出货物后把货物暂存到柜台前,在柜台打勾完成这一项订单的工作。

参考资料:https://blog.51cto.com/u_15127663/3697454

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

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

相关文章

反序列化与序列化过程分析

前言 在学习反序列化的漏洞时,大致都是了解了一些知识,比如序列化就是写入对象,反序列化就是读取文件恢复对象,在这个过程中会自动调用一些方法,readObject,writeObject,静态代码块等,但是从来没有了解过这个过程是怎么样的,一直很模糊,所以在这篇文章里面会记录整个学习过程,…

⛳ Docker - Centos 安装配置

目录 ⛳ Docker - Centos 安装配置🏭 Docker 安装:📢 一、安装依赖包💬 二、添加 Docker 下载源地址🐾 三、更新yum缓存👣 四、安装Docker💻 五、启动Docker🎁 六、查看Docker状态和…

网络编程(8.15)io模型,IO多路复用(select,poll)

1.使用select函数实现IO多路复用 使用select函数实现IO多路复用的服务器&#xff1a; #include<stdio.h> #include<head.h> #include<netinet/in.h> #include<sys/select.h> #include<arpa/inet.h> #define PROT 1112 #define IP "192.16…

缓存淘汰算法(LFU LRU FIFO)及进程的状态和转换

目录 一、缓存淘汰算法 1.LFU&#xff08;Least Frequently Used&#xff09;最近最不常用算法 2.LRU&#xff08;Least Recently User&#xff09;最近最少使用算法 3.FIFO&#xff08;First in first out&#xff09;先进先出算法 二、进程的状态和转换 1.最基本的三种状…

解决Mac系统android monitor启动时卡住,显示白屏的问题

一.启动环境 清安装1.8版本的jdk&#xff0c;java1.8版本以上不支持android monitor&#xff1b;如果你电脑上安装有java 11等高级别的版本&#xff0c;请自行搜索&#xff0c;如果在mac上安装多jdk&#xff0c;以及如何切换到1.8版本上 二.解决方案 请更新SWT插件&#xff…

x86架构芯片启动过程分析

1、上电启动顺序 上电自检 读取ROM里的bios程序 bios程序会进行硬件检测&#xff0c;比如&#xff1a;内存、硬盘、显卡等 bios完成自检后&#xff0c;需要选择引导设备。比如设备上有U盘、SSD、eMMC、机械硬盘&#xff0c;bios需要知道从哪个启动介质去启动计算机 bios操作界面…

资料分析(四)—— 倍数、比重、平均数

倍数 现期倍数 &#xff08;A是B的几倍&#xff09;&#xff1a; 多几倍 1 增长率 1 增长倍数&#xff08;A比B多几倍&#xff09;&#xff1a; - 1 是几倍 - 1 增长率&#xff08;增长几倍&#xff09; 超过倍数&#xff08;A超过B的 n 倍&#xff09;&#xff1a;A …

数据库--MySQL三大范式、多表查询、函数sql

数据库相关链接&#xff1a; 数据库基础操作--增删改查&#xff1a;http://t.csdn.cn/189CF 数据库--数据类型&#xff1a;http://t.csdn.cn/NnBsY​​​​​​​ 数据库--SQL关键字的执行顺序&#xff1a; http://t.csdn.cn/MoJ4i 一、什么是范式&#xff1f; 范式是数据库…

Android Settings 无障碍设置显示大小页面重复加载问题

基于Android 11&#xff0c;跟踪源码 显示大小页面 packages/apps/Settings/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java 通过commit() 提交更新页面显示大小。该方法是是在其父类PreviewSeekBarPreferenceFragment 实现调用。 基类预览滑动进度…

Vue-6.创建Vue项目

使用预设默认配置创建Vue项目 创建一个简单的 Vue 项目需要使用 Vue CLI&#xff08;命令行界面&#xff09;。Vue CLI 是一个用于快速构建 Vue.js 项目的工具&#xff0c;它可以帮助你设置项目的基本结构、配置以及开发环境。 以下是创建一个简单的 Vue 项目的步骤&#xff…

机器学习基础之《分类算法(1)—sklearn转换器和估计器》

一、转换器 1、什么是转换器 之前做特征工程的步骤&#xff1a; &#xff08;1&#xff09;第一步就是实例化了一个转换器类&#xff08;Transformer&#xff09; &#xff08;2&#xff09;第二步就是调用fit_transform&#xff0c;进行数据的转换 2、我们把特征工程的接口称…

idea中Maven报错Unable to import maven project: See logs for details问题的解决方法

idea中Maven报错Unable to import maven project: See logs for details问题的解决方法。 在查看maven的环境配置和idea的maven配置后&#xff0c;发现是idea 2020版本和maven 3.9.3版本的兼容性问题。在更改为Idea自带的maven 3.6.1版本后问题解决&#xff0c;能成功下载jar包…

个人对哈希数据结构学习总结 -- 实践篇 -- 上

个人对哈希数据结构学习总结 -- 实践篇 -- 上 引言最佳实践Java篇HashMapgetput扩容 ConcurrentHashMapgetput扩容协作扩容读为什么可以不加锁&#xff1f; ThreadLocalMapgetput扩容delete为什么遍历到null桶就可以判断key不存在&#xff1f;ThreadLocalMap为什么不需要锁&…

【uniapp】picker mode=“region“ 最简单的省市区 三级联动

省市区 picker template <picker mode"region" :value"date" class"u-w-440" change"bindTimeChange"><u--inputborder"bottom"class"u-fb u-f-s-28"placeholder"请选择省市区"type"te…

从零实战SLAM-第八课(非特征点的视觉里程计)

在七月算法报的班&#xff0c;老师讲的蛮好。好记性不如烂笔头&#xff0c;关键内容还是记录一下吧&#xff0c;课程入口&#xff0c;感兴趣的同学可以学习一下。 --------------------------------------------------------------------------------------------------------…

ARM04cortex-A7核LED灯实验

文章目录 一、核心板二、扩展板二、硬件术语2.1 原理图2.2 PCB板2.3 丝印2.4 网络编号 三、分析电路图3.1 思路3.2 总结3.3 工作原理 实验目的&#xff1a;实现LED1/LED2/LED3三盏灯工作 一、核心板 二、扩展板 二、硬件术语 2.1 原理图 原理图是用来描述PCB板子上各个硬件连接…

深入理解epoll

文章目录 概述1. epoll_create - 创建一个epoll实例2. epoll_ctl - 控制epoll实例的事件结构体介绍events取值&#xff1a;data&#xff1a; 联合体&#xff08;共用体&#xff09;&#xff1a; 3. epoll_wait - 等待事件发生伪代码总结 概述 在网络编程中&#xff0c;高效地处…

2023 年牛客多校第九场题解

B Semi-Puzzle: Brain Storm 题意&#xff1a;给定 a , m a,m a,m&#xff0c;构造一个非负整数 u u u&#xff0c;使得 a u ≡ u ( m o d m ) a^u \equiv u \pmod m au≡u(modm)。 1 ≤ a < m ≤ 1 0 9 1 \le a<m \le 10^9 1≤a<m≤109&#xff0c; 0 ≤ u ≤ 1 …

Elasticsearch:如何在 Ubuntu 上安装多个节点的 Elasticsearch 集群 - 8.x

Elasticsearch 是一个强大且可扩展的搜索和分析引擎&#xff0c;可用于索引和搜索大量数据。 Elasticsearch 通常用于集群环境中&#xff0c;以提高性能、提供高可用性并实现数据冗余。 在本文中&#xff0c;我们将讨论如何在 Ubuntu 20.04 上安装和配置具有多节点集群的 Elast…

centos7安装protobuf|序列化和反序列化工具

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总https://blog.csdn.net/yu_cblog/categ…