计算机组成原理(2)-----存储芯片与CPU的连接

简介: 计算机组成原理(2)-----存储芯片与CPU的连接

一.单块存储芯片与CPU的连接

如图所示是8*8位的芯片,总共8个存储字,每个存储字有8位

回忆一下存储器芯片的输入输出信号:

注:现在的计算机MAR、DR通常集成在CPU内部。存储芯片内只需一个普通的寄存器(暂存输入、输出数据)

二.多块存储芯片与CPU的连接

1.位扩展

只有存储字长与数据总线的宽度一致,才能尽可能地发挥数据总线的性能,若单块存储芯片字长小于数据总线的宽度,就可以使用位扩展

如下图所示,8K表示2^13次方,所以需要13根地址线A0~A12,CPU会把想要访问的地址通过地址线送到存储器中


WE则表示当这个信号是高电平时,CPU需要往存储器写数据,低电平时,表示CPU需要往其中读数据。


由于存储芯片位8K*1位,所以每次只能通过数据总线传送一个bit,数据总线没有被充分利用


CS为片选信号,高电平有效

为了解决数据总线没有被充分利用的问题,我们可以给主存加上一块相同型号的存储芯片。因为两个存储芯片都有8K个存储单元,若将CPU将13位的地址信息同时送给两个芯片,则这个地址数据会对应两个芯片相同位置的存储单元。

与第一块芯片不同的是,右边这一芯片读出的数据,可以作为CPU的D1读入的数据,如图所示,给CS都加上高电平,两块芯片就能同时工作:

使用同样的方法,可以增至8块存储芯片,如图所示:

数据总线可以同时把8位的数据信息,送至CPU,所以整个主存的存储字长被拓展为8bit

8片8Kx1位的存储芯片---->1个8Kx8位的存储器,总容量8KB,这就是位拓展

2.字扩展

若想要扩展主存字数,可以使用字扩展,如图所示的存储芯片,由于其字长已经是8位,数据总线宽度=存储字长,所以不需要进行位扩展了



但是我们会发现另一个问题,如图所示的CPU中MAR有16位,即2^16的寻址能力,但是我们只用了A0~A13这13根地址线,若依然使用第1节中位扩展的方法,这两个存储单元的8位的信息,会通过数据总线传给CPU,都会导致数据总线的冲突。


(1)线选法

对这一芯片的第一种改造方法为线选法,我们将A13地址线连接到第一个芯片,将A14地址线连接到第二个芯片,当A13和A14两个信号分别为1,0时,第一个芯片CS为1,会工作,第二个芯片CS为0,不会工作。同理,若第二个存储器CS信号为1,第一个存储器CS信号为0。那么第二个存储器会工作。


所以A13,A14为01或10

A14,A13为01,第一个芯片工作,A14,A13为10,第二个芯片工作

总结:

可以看到线选法中A14,A13只能为01或10,n个存储体,就需要n条专门的地址线来表示n个选片信号。

(2)译码器片选法

其实只需要一根专门的地址线就可以表示片选信号。如图所示用A13传送片选信号。如图所示,若A13为1,那么第一个存储芯片的片选信号为1,第二个存储芯片的片选信号为0,若A13为0,则反过来即可。

所以A13为1,第一个芯片工作,A13为0,第二个芯片工作。

这里的电路我们可以将其看作1-2译码器,即输入一位地址信息,可能呈现2^1两种状态

总结:

我们可以使用译码器处理CPU的高位地址部分,对于专门用来表示片选信号的地址线,n条线就可以表示2^n个选片信号,如图所示3位译码器就对应8(2^3)根地址线

注:译码器的编号也可以逆过来

举个例子,如图所示,使用的是2-4译码器,这里各存储器的地址线是都是一端连接CPU,一段连接存储器的,这里只是为了看起来比较简洁


例如A13,A14为00,那么0号线会被选通,对应的存储芯片会工作,所以其地址范围为00 0....0~00 1.....1(00跟上13位地址)

注:若为 ,则存储芯片 信号端,要画一个小圆圈

与此同理,其他存储器的地址范围如图所示:

若将A13,A15作为译码器的输入信号,无论A14这一位取0还是1,都影响不到选片操作,如图所示,对于第一个存储芯片,当A14为0时,有8K个合法地址,当A14为1时,也有8K个合法地址。


本来芯片只有8K个存储单元,然而有16个合法地址对应8K个存储单元,其他存储芯片也是类似,所以实际应用中,这种设计是不合理的。

总结:

对于字扩展,有线选法和译码片选法两种方法:

实际应用时都用译码片选法

3.字位同时扩展

如图所示,总共8个存储芯片,每两个芯片为一组,因为每个芯片为4位,而CPU能同时读写8位地址,即数据总线有8根,所以可以用两块芯片为1组进行位扩展


每个芯片是16K,即2^14次方,所以CPU的A0~A13这14位的地址信息作为片内地址,由于CPU的A14,A15两个地址信息没有使用,所以可以接一个2-4译码器,进行字扩展,总共有4个片选信号,所以可以接4组,每组有两个存储芯片。

1组为16K*8位,4组为64K*8位,合法的地址:

第一组为00开头,第二组为01开头,第三组为10开头,第四组为11开头,地址范围如图所示:

三.译码器相关

补充(译码器相关知识点):

译码器输出端只有1条线能输出高电平,这种译码器就能和片选信号CS高电平有效存储芯片配合使用

若译码器输出端画了个小圆圈,那么有效信号是0,无效信号是1,这种译码器就能和片选信号CS低电平有效存储芯片配合使用

实际的译码器还有使能端,高电平有效,若使能端为1,则译码器工作

还有的译码器会有多个使能端,只有以下使能端都有效,译码器才能工作

对于74LS138译码器,是最常见的。若使能信号是非法的状态,译码器输出的都是全1



CPU可使用译码器的使能端控制片选信号的生效时间,CPU地址的输出与数据的输入输出外,还有一个很重要的输出信号(,memory request) ,当CPU访问主存时,CPU就会使这个信号有效,即置为低电平

如下图所示,我们把译码器的G1和 置为1和0,即合法的值,再把 接通 信号的输出端,当CPU没有发出主存请求信号时, 输出1,此时译码器不工作,所有片选信号都为1,当CPU发出主存请求信号时, 输出0,译码器才会工作,把输入的地址信号映射为某一位选通信号

所以CPU与译码器是这样配合工作的:

① CPU先通过地址线送出地址信号,包括传到存储器的低的13位和传到译码器的高3位

这些地址信息是通过电信号传输的,当CPU刚开始输出电信号时,电信号不稳定,因此CPU发出地址信息后,会等电流稳定才发出主存请求信号

② 这样能保证译码器的某一根选通线有效时,这块选通线所对应存储芯片所接收的地址信号稳定。

具体地看一下RAM的读周期:

从红色划线处开始,CPU送出了地址信息

但CPU会等地址信号稳定后,才会发出主存请求信号,这会导致译码器的某个输出端,输出一个有效的片选信号,使得某片存储芯片被选通。


通过一段时间后,这个芯片某个存储单元的数据就可以通过数据总线传出到CPU,即图中的



等数据传出一段时间后,CPU就会撤回主存请求信号,即撤回片选信号

当CPU确定接收到主存发来的数据后,就会撤回刚刚发出的地址信号

注:这样往上往下的画法表示输出的信号有0也有1

低电平有效,高电平无效


相关实践学习
实时数据及离线数据上云方案
本实验通过使用CANAL、DataHub、DataWorks、MaxCompute服务,实现数据上云,解决了数据孤岛问题,同时把数据迁移到云计算平台,对后续数据的计算和应用提供了第一步开山之路。
目录
相关文章
|
1月前
|
存储
计算机组成原理(7)----CPU内部单总线数据通路
计算机组成原理(7)----CPU内部单总线数据通路
59 0
|
1月前
|
存储
计算机组成原理(5)----CPU的基本结构
计算机组成原理(5)----CPU的基本结构
60 0
|
1月前
|
存储 弹性计算 监控
【阿里云弹性计算】深入阿里云ECS配置选择:CPU、内存与存储的最优搭配策略
【5月更文挑战第20天】阿里云ECS提供多种实例类型满足不同需求,如通用型、计算型、内存型等。选择CPU时,通用应用可选1-2核,计算密集型应用推荐4核以上。内存选择要考虑应用类型,内存密集型至少4GB起。存储方面,系统盘和数据盘容量依据应用和数据量决定,高性能应用可选SSD或高效云盘。结合业务特点和预算制定配置方案,并通过监控应用性能适时调整,确保资源最优利用。示例代码展示了使用阿里云CLI创建ECS实例的过程。
101 5
|
1月前
|
存储
【头歌·计组·自己动手画CPU】五、单总线CPU设计(理论版) 【计算机硬件系统设计】
【头歌·计组·自己动手画CPU】五、单总线CPU设计(理论版) 【计算机硬件系统设计】
368 2
|
16天前
|
芯片
芯片设计 | 一文读懂,CPU、精简指令集、复杂指令集该如何理解
芯片设计 | 一文读懂,CPU、精简指令集、复杂指令集该如何理解
13 0
|
1月前
|
存储 算法 索引
【头歌·计组·自己动手画CPU】三、存储系统设计(HUST)(理论版) 【计算机硬件系统设计】
【头歌·计组·自己动手画CPU】三、存储系统设计(HUST)(理论版) 【计算机硬件系统设计】
292 1
|
1月前
|
存储 人工智能 BI
【头歌·计组·自己动手画CPU】二、运算器设计(理论版) 【计算机硬件系统设计】
【头歌·计组·自己动手画CPU】二、运算器设计(理论版) 【计算机硬件系统设计】
173 1
|
1月前
|
存储
【头歌·计组·自己动手画CPU】四、控制器设计(理论版) 【计算机硬件系统设计】
【头歌·计组·自己动手画CPU】四、控制器设计(理论版) 【计算机硬件系统设计】
78 0
|
1月前
|
Linux
Linux rsyslog占用内存CPU过高解决办法
该文档描述了`rsyslog`占用内存过高的问题及其解决方案。
84 4
|
1月前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
138 10