【计算机组成体系结构】主存储器的基本组成

2023-12-06 00:12

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

一、半导体元器件存储二进制0/1的原理

一个存储器逻辑上分为MAR,MDR和存储体,这三块在时序逻辑电路的控制下相互配合工作。 

存储体有多个存储单元构成,每个存储单元又由每个存储元构成。一个存储元可以存放一位的二进制的0/1。

一个存储元由一个MOS管和一个电容组成。 

MOS管是一种半导体,当通电压达到某一定阈值时它才会变成导体,否则是绝缘体。

上图所示电容下金属板接地为0V,下金属板若和上金属板存在电势差则会存储电荷,以此来决定存储元存储的是1还是0。

当接通MOS管时,若导线一端有电荷流出,则可以判断该电容保存的是二进制的1,否则保存的是0。这是二进制的读出。

存储也很简单,接通MOS管,接通导线,电容开始累计电荷,这样就在里面存储了1。这时候再断开MOS管,就可以防止电荷跑出去了。

如果把多个存储元排列在一起就可以组成一个存储单元(存储字)。上图红线链接了一个存储单元的所有MOS管,如果此时在红线上加入一个5v的阈值电压就可以一次读出该存储单元内所有的二进制数据(绿线用来检测有无电流导出判断是0/1)。 

而多个存储单元又构成了存储体(存储矩阵)。上图所示的存储字长为8bit。存储字长根据一个存储单元中存储元的个数决定。但是1Byte=8bit是不会变的。

这也解释了为什么存储器一次读写都是以一个存储字长为单位

 


二、存储芯片的基本原理

1.译码器

如何根据地址决定我们要读/写哪一个字呢?这就涉及到译码器的工作原理。

对于译码器,我们给定n位地址对应2^n个存储单元,所以译码器会根据MAR给出的地址转变为某一条选通线的高电平信号,这样就可以读出一整排的存储元的数据了。

译码器的每一条选通线对应每一个存储单元的地址。 

之后通过数据线(绿线)把每一位二进制数据送入MDR中,接着CPU会通过数据总线从MDR中取走一整个存储字的数据。(当然数据总线的宽度是和存储字长相同的)

2.控制电路

由于电信号的不稳定,除译码器之外,还要有控制电路来控制MAR,MDR和译码器来实现存储器的读写。 

电信号是不稳定的,CPU通过地址总线将电信号送到MAR,但不会立刻送到译码器,当MAR中的电信号稳定之前,控制电路不会打开译码器的开关。

同样的,当输出的时候,控制电路同样会在MDR中的电信号稳定之后才能从MDR送出数据到数据总线。

另外,存储芯片还要对外提供一些线路如\overline{CS}(芯片选择信号)/\overline{CE}(芯片使能信号),上面带横线的意思就是当处于低电平的时候起作用。两个线路的意思就是,当处于低电平的时候,这块芯片可以工作了。

同时还有读写线。有些设计为两根线,一根表示读一根表示写(\overline{WE},\overline{OE})。有些则用一根既可以表示读也可以表示写。


片选线的作用如上图所示,上图内存条的每个黑块就表示一个存储芯片,当地址线搜索的地址在某一个存储芯片上,片选线自然要关闭除它以外的其它所有存储芯片。

同时存储芯片的引脚数应该等于地址线+数据线+片选线+读写控制线+供电+接地。 

上图中存储器的逻辑构成我们只有读写电路和驱动器上面没有说。读写电路包括上面的红线绿线以及控制电路的读写控制线。

驱动器,我们前面说过电信号的不稳定性,而驱动器就是一个信号放大器,可以让信号离开译码器之后仍然稳定有效。

之前我们说过总容量 = 存储单元个数 X 存储字长。之后我们还要熟悉上图所示的描述方式。

例如:8X8位的存储芯片,前一个8表示的是存储单元的数量,后面的8则表示存储字长。

而通过存储单元的数量自然就可以推断出地址线是多少,如上面的例子,2^3=8,所以8X8位的存储芯片的地址线有3根,又因为每个存储字长为8,所以数据线有3X8=24根。


三、不同的寻址方式的实现

上图所示的每个方格表示一个字节,也就是8bit,而每一整行表示一个存储字,也就是说这块存储芯片它的字长是4B。假设它的总容量是1KB,那也就是说它有256个字(256行)。

现代计算机中通常按字节编址,也就是说每个字节一个地址。所以这个存储矩阵中有1K个地址。这也就是按字节编址。   

但是存储器指支持的寻址形式可不是只有按字节寻址。按字节寻址自然需要10根地址线,因为2^10=1024,才足够寻1000个地址。

而如果按字寻址,一整行,也就是一个字合并看成一个地址。当我们需要读某个字的时候,假如我们现在要读的是第1个字,那只需要我们对1进行算术左移得到100,也就是4,就可以得到该字起始字节的字节地址。

按半字寻址和按双字寻址以此类推。 

这篇关于【计算机组成体系结构】主存储器的基本组成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系