计算机组成原理(1)----主存储器

2024-02-15 22:28

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

目录

1.基本半导体元件及原理

2.寻址


1.基本半导体元件及原理

一个主存储器可以分为存储器,MAR(地址寄存器)和MDR(数据寄存器),这三个部件由在时序控制逻辑的控制下工作

其中存储体用来存放二进制数据0和1,1个存储体由多个存储单元构成,一个存储单元由多个存储元构成,存储元如下图所示:

其中包含两个半导体元件:

1.MOS管,MOS管可理解为一种电控开关,输入电压达到某个阈值时,MOS管就可以接通

2.电容,一个电容由两个金属板和中间的绝缘体构成,可以以电容是否保存电荷来记录2进制的0和1,当保存电荷时,记录的是2进制的1,接着再接通MOS管,在一端检测到电流,就意味着输出了2进制1

若想让电容保存2进制1,那么就需在一端输入高电平,再接通MOS管,电容的上下两个金属板存在电压差,就会存储电荷了。

所以电容充电过程就是写数据的过程,电容放电过程就是读数据的过程

若将多个存储元合理相连,就可以一次性读出和写入多个2进制数据,多个存储元组成一个存储单元,在这里,一行表示一个存储单元(也就是一个存储字),多个行就是一个存储体(也就是存储矩阵),如图所示,一个存储字的字长为8bit

这里区分存储字和字节:

一个存储字的字长看一行有几个存储元,例如上面存储字长为8bit

一个字节8bit,即1Byte=8bit

如何通过一个地址决定读写哪一个字,这就涉及译码器的使用:

n位地址会对应2^n个存储单元,译码器会根据地址寄存器中给的地址,转变为某一条选通线的高电平信号。

例如CPU给MAR(地址寄存器)传输的是000,3个0的十进制即0(每个地址会对应译码器的一条输出线,总共有2^3=8个地址,所以译码器的输出端有8条线),所以译码器会将第0根字选线高电平输出,那么第0根线对应的存储元都会被接通,其中的2进制数据就能被读出了。 

具体地,红色的字选线被接通后,会通过绿色的数据线(位线),把每一位的2进制信息传输到MDR(数据寄存器)中,接着CPU会通过数据总线从MDR中取走整个存储字的数据(数据总线的宽度和存储字长是相同的

这个存储体的总容量=存储单元个数*存储字长=2^3*1Byte=8B

还需添加一个控制电路,控制MAR和MDR和译码器,例如,CPU通过地址总线,将地址送到MAR中,但是,由于我们是通过电信号传送2进制数据,而电信号可能会有不稳定的情况,所以在电信号稳定之前,这一电信号是不能传送给译码器的,所以只有电信号稳定,控制电路才能打开译码器的开关,让译码器接收这一地址,给出相应的数据信号,同理,输出时,只有输出的电信号稳定,控制电路才会使MDR通过数据总线输出数据信号给CPU

控制电路还需要连接片选线\overline{CS}(chip select,芯片选择信号)或\overline{CE}(chip enable,芯片使能信号),这些信号低电平有效,当我们给片选线加低电平时,表示这块芯片可以工作

一个内存条可能包含多块存储芯片,如果只想读取某块存储芯片指定地址的数据,那么只需要将这块芯片的片选信号使能(给低电平)即可。其他芯片(给高电平)

这些存储芯片会对外保留金属引脚,这些金属引脚用来接收地址线,数据线,读/写控制线,片选线传来的数据

n位地址--->2^n个存储单元
总容量=存储单元个数x存储字长=2^3 x 8bit =2^3 x 1Byte = 8B
8(存储单元个数)x8(存储字长)位的存储芯片

同时,控制电路还会连接读/写控制线,可以为一个读/写控制线(一根读/写线\overline{WE}低电平写高电平读),或两个线,一个读控制线(\overline{OE}允许读),一个写控制线(\overline{WE}允许写)

我们忽略内部的结构,就可得到下图:

存储矩阵就是存储体

译码驱动就是译码器+驱动器(为了使译码器输出的高电平信号稳定,通常会在译码器后添加驱动器,保证译码器输出的信号稳定)

读写电路包括上图的绿色线,红色线,以及控制电路

2.寻址

如下图所示,该存储体的字长为4B,总容量为1KB,即256个字,也就是总共256行

按字节寻址:总共1K个单元(地址线:10根),每个单元 1 B

按字寻址:256个单元(地址线:8根),每个单元 4 B

地址线为8根,只需要将地址算数左移两位,即在末尾添加两个0

例如要访问1号字,那就在1后面添加两个00,100:4,得到这个字起始字节的字节地址为4

再例如,访问2号字,在10后面添加两个00,1000:8,得到这个字起始字节的字节地址为8

按半字寻址:512个单元,每个单元 2 B

按双字寻址:128个单元,每个单元 8 B

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



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

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente

MySQL的隐式锁(Implicit Lock)原理实现

《MySQL的隐式锁(ImplicitLock)原理实现》MySQL的InnoDB存储引擎中隐式锁是一种自动管理的锁,用于保证事务在行级别操作时的数据一致性和安全性,本文主要介绍了MySQL的隐式锁... 目录1. 背景:什么是隐式锁?2. 隐式锁的工作原理3. 隐式锁的类型4. 隐式锁的实现与源代码分析4

MySQL中Next-Key Lock底层原理实现

《MySQL中Next-KeyLock底层原理实现》Next-KeyLock是MySQLInnoDB存储引擎中的一种锁机制,结合记录锁和间隙锁,用于高效并发控制并避免幻读,本文主要介绍了MySQL中... 目录一、Next-Key Lock 的定义与作用二、底层原理三、源代码解析四、总结Next-Key L

Spring Cloud Hystrix原理与注意事项小结

《SpringCloudHystrix原理与注意事项小结》本文介绍了Hystrix的基本概念、工作原理以及其在实际开发中的应用方式,通过对Hystrix的深入学习,开发者可以在分布式系统中实现精细... 目录一、Spring Cloud Hystrix概述和设计目标(一)Spring Cloud Hystr

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr