当前位置:首页 » 服务存储 » cpu与存储器必须要有译码器吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

cpu与存储器必须要有译码器吗

发布时间: 2022-08-24 09:33:42

A. 在对存储器芯片进行片选时,全译码方式、部分译码方式和线选方式各有何特点

若cpu的寻址空间等于存储器芯片的寻址空间,可直接将高低位地址线相连即可,这种方式下,可用单条读写指令直接寻址,寻址地址与指令中的地址完全吻合。
若cpu的寻址空间大于存储器芯片的寻址空间,可直接将高低位地址线相连即可,cpu剩余部分高位地址线,这种方式下,可用单条读写指令直接寻址,未连接的地址线在指令中可以以0或1出现,即有多个地址对应每个存储器空间,可在指令中将这些位默认为零。
若cpu的寻址空间小于存储器芯片的寻址空间,可将其它io口连接剩余存储器高位地址线,寻址前,需设置好这些io口。
当存在多片存储器,且希望节省cpu的io口时,需要外加译码电路。比如说,存储器地址线为13根,共8片存储器,可用74ls138连接cpu的高3位地址线,74ls38的8位输出分别连接8片存储器,读写时,寻址地址与指令中的地址完全吻合。
上一种情况中,若希望简化外围电路,也可用其余端口的8个io分别连接8片存储的片选,其寻址方式与第三种情况类似。

B. 关于CPU的一些知识

CPU又叫中央处理器,是英文单词Central Processing Unit的缩写,负责对信息和数据进行运算和处理,并实现本身运行过程的自动化。在早期的计算机当中,CPU被分成了运算器和控 制器两个部分,后来由于电路集成度的提高,在微处理器问世时,就将它们都集成在一个芯片中了。需要智能控制、大量信息处理的地方就会 用到CPU。
CPU有通用CPU和嵌入式CPU,通用和嵌入式的分别,主要是根据应用模式的不同而划分的。通用CPU芯片的功能一般比较强,能运 行复杂的操作系统和大型应用软件。嵌入式CPU在功能和性能上有很大的变化范围。随着集成度的提高,在嵌入式应用中,人们倾向于把CPU、 存储器和一些外围电路集成到一个芯片上,构成所谓的系统芯片(简称为SOC),而把SOC上的那个CPU成为CPU芯核。

现在,指令系统的优化设计有两个截然相反的方向。一个是增强指令的功能,设置一些功能复杂的指令,把一些原来有软件实现的常用功能 改用硬件的指令系统来实现,这种计算机成为复杂指令系统计算机。早期Intel的X86指令体系就是一种CISC指令结构。
RISC是Reced Instruction Set Computer的缩写中文翻译成精简指令系统计算机,是八十年代发展起来的,尽量简化指令功能,只保留那些功能简单,能在 一个节拍内执行完成的指令,较复杂的功能用一段子程序来实现,这种计算机系统成为精简指令系统计算机。目前采用RISC体系结构的处理器 的芯片厂商有SUN、SGI、IBM的Power PC系列、DEC公司的Alpha系列、Motorola公司的龙珠和Power PC等等。

介绍一下 MIPS体系。
MIPS是世界上很流行的一种RISC处理器。MIPS的意思是"无内部互锁流水级的微处理器"(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。他最早是在80年代初期由斯坦福(Stanford)大学 Hennessy教授领导的研究小组研制出来的。MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。这些系列产品以为很多打计算机 公司采用构成各种工作站和计算机系统。

指令系统
要讲CPU,就必须先讲一下指令系统。 指令系统指的是一个CPU所能够处理的全部指
令的集合,是一个CPU的根本属性。比如我们现在所用的CPU都是采用x86指令集的,他们都是 同一类型的CPU,不管是PIII、Athlon或Joshua。我们也知道,世界上还有比PIII和Athlon快得多的CPU,比如Alpha,但它们不是用x86指令集 ,不能使用数量庞大的基于x86指令集的程序,如Windows98。之所以说指令系统是一个CPU的根本属性,是因为指令系统决定了一个CPU能够运 行什么样的程序。
所有采用高级语言编出的程序,都需要翻译(编译或解释)成为机器语言后才能运行,这些机器语言中 所包含的就是一条条的指令。

1、 指令的格式
一条指令一般包括两个部分:操作码和地址码。操 作码其实就是指令序列号,用来告诉CPU需要执行的是那一条指令。地址码则复杂一些,主要包括源操作数地址、目的地址和下一条指令的地址 。在某些指令中,地址码可以部分或全部省略,比如一条空指令就只有操作码而没有地址码。
举个例子吧,某个指令系统 的指令长度为32位,操作码长度为8位,地址长度也为8位,且第一条指令是加,第二条指令是减。当它收到一个 “”的指令时,先取出它的前8位操作码,即00000010,分析得出这是一个减法操作,有3个地址,分别是 两个源操作数地址和一个目的地址。于是,CPU就到内存地址00000100处取出被减数,到00000001处取出减数,送到ALU中进行减法运算,然后 把结果送到00000110处。
这只是一个相当简单化的例子,实际情况要复杂的多
2、 指令的分类与寻址 方式
一般说来,现在的指令系统有以下几种类型的指令:
(1)算术逻辑运算指令
算术逻辑运算 指令包括加减乘除等算术运算指令,以及与或非异或等逻辑运算指令。现在的指令系统还加入了一些十进制运算指令以及字符串运算指令等。
(2)浮点运算指令
用于对浮点数进行运算。浮点运算要大大复杂于整数运算,所以CPU中一般还会有专门负责浮点运 算的浮点运算单元。现在的浮点指令中一般还加入了向量指令,用于直接对矩阵进行运算,对于现在的多媒体和3D处理很有用。
(3)位 操作指令
学过C的人应该都知道C语言中有一组位操作语句,相对应的,指令系统中也有一组位操作指令,如左移一位右移 一位等。对于计算机内部以二进制不码表示的数据来说,这种操作是非常简单快捷的。
(4)其他指令
上面三种都是 运算型指令,除此之外还有许多非运算的其他指令。这些指令包括:数据传送指令、堆栈操作指令、转移类指令、输入输出指令和一些比较特 殊的指令,如特权指令、多处理器控制指令和等待、停机、空操作等指令。
对于指令中的地址码,也会有许多不同的寻址 (编址)方式,主要有直接寻址,间接寻址,寄存器寻址,基址寻址,变址寻址等,某些复杂的指令系统会有几十种甚至更多的寻址方式。
3、 CISC与RISC
CISC,Complex Instruction Set Computer,复杂指令系统计算机。RISC,Reced Instruction Set Computer,精简指令系统计算机。虽然这两个名词是针对计算机的,但下文我们仍然只对指令集进行研究。
(1)CISC 的产生、发展和现状
一开始,计算机的指令系统只有很少一些基本指令,而其他的复杂指令全靠软件编译时通过简单指令 的组合来实现。举个最简单的例子,一个a乘以b的操作就可以转换为a个b相加来做,这样就用不着乘法指令了。当然,最早的指令系统就已经 有乘法指令了,这是为什么呢?因为用硬件实现乘法比加法组合来得快得多。
由于那时的计算机部件相当昂贵,而且速度 很慢,为了提高速度,越来越多的复杂指令被加入了指令系统中。但是,很快又有一个问题:一个指令系统的指令数是受指令操作码的位数所 限制的,如果操作码为8位,那么指令数最多为256条(2的8次方)。
那么怎么办呢?指令的宽度是很难增加的,聪明的设计师们又想出了 一种方案:操作码扩展。前面说过,操作码的后面跟的是地址码,而有些指令是用不着地址码或只用少量的地址码的。那么,就可以把操作码 扩展到这些位置。
举个简单的例子,如果一个指令系统的操作码为2位,那么可以有00、01、10、11四条不同的指令。现在 把11作为保留,把操作码扩展到4位,那么就可以有00、01、10、1100、1101、1110、1111七条指令。其中1100、1101、1110、1111这四条指令 的地址码必须少两位。
然后,为了达到操作码扩展的先决条件:减少地址码,设计师们又动足了脑筋,发明了各种各样的寻址方式,如基 址寻址、相对寻址等,用以最大限度的压缩地址码长度,为操作码留出空间。
就这样,慢慢地,CISC指令系统就形成了, 大量的复杂指令、可变的指令长度、多种的寻址方式是CISC的特点,也是CISC的缺点:因为这些都大大增加了解码的难度,而在现在的高速硬 件发展下,复杂指令所带来的速度提升早已不及在解码上浪费点的时间。除了个人PC市场还在用x86指令集外,服务器以及更大的系统都早已不 用CISC了。x86仍然存在的唯一理由就是为了兼容大量的x86平台上的软件。
]:(2)RISC的产生、发展和现状
1975年,IBM的设计师John Cocke研究了当时的IBM370CISC系统,发现其中占总指令数仅20%的简单指令却在程序调用中占了80% ,而占指令数80%的复杂指令却只有20%的机会用到。由此,他提出了RISC的概念。
事实证明,RISC是成功的。80年代末,各公司的RISC CPU如雨后春笋般大量出现,占据了大量的市场。到了90年代,x86的CPU如pentium和k5也开始使用先进的RISC核心。
RISC 的最大特点是指令长度固定,指令格式种类少,寻址方式种类少,大多数是简单指令且都能在一个时钟周期内完成,易于设计超标量与流水线 ,寄存器数量多,大量操作在寄存器之间进行。由于下文所讲的CPU核心大部分是讲RISC核心,所以这里就不多介绍了,对于RISC核心的设计下 面会详细谈到。
RISC目前正如日中天,Intel的Itanium也将最终抛弃x86而转向RISC结构。
二、CPU内核结构
好吧 ,下面来看看CPU。CPU内核主要分为两部分:运算器和控制器。
(一) 运算器
1、 算术逻辑运算单元ALU(Arithmetic and Logic Unit)
ALU主要完成对二进制数据的定点算术运算(加减乘除)、逻辑运算(与或非异或)以及移位操作。在某些CPU中还 有专门用于处理移位操作的移位器。
通常ALU由两个输入端和一个输出端。整数单元有时也称为IEU(Integer Execution Unit)。我们通常所说的“CPU是XX位的”就是指ALU所能处理的数据的位数。
2、 浮点运算单元FPU(Floating Point Unit)
FPU主要负责浮点运算和高精度整数运算。有些FPU还具有向量运算的功能,另外一些则有专门的向量处理单元。
3、通用寄存器组
通用寄存器组是一组最快的存储器,用来保存参加运算的操作数和中间结果。
在通用寄存器的设计上,RISC与CISC有 着很大的不同。CISC的寄存器通常很少,主要是受了当时硬件成本所限。比如x86指令集只有8个通用寄存器。所以,CISC的CPU执行是大多数时 间是在访问存储器中的数据,而不是寄存器中的。这就拖慢了整个系统的速度。而RISC系统往往具有非常多的通用寄存器,并采用了重叠寄存 器窗口和寄存器堆等技术使寄存器资源得到充分的利用。
对于x86指令集只支持8个通用寄存器的缺点,Intel和AMD的最新 CPU都采用了一种叫做“寄存器重命名”的技术,这种技术使x86CPU的寄存器可以突破8个的限制,达到32个甚至更多。不过,相对于RISC来说 ,这种技术的寄存器操作要多出一个时钟周期,用来对寄存器进行重命名。
4、 专用寄存器
专用寄存器通常是一些状 态寄存器,不能通过程序改变,由CPU自己控制,表明某种状态。

(二) 控制器
运算器只能完成运算,而控 制器用于控制着整个CPU的工作。
1、 指令控制器
指令控制器是控制器中相当重要的部分,它要完成取指令、分析指令等操作,然 后交给执行单元(ALU或FPU)来执行,同时还要形成下一条指令的地址。
2、 时序控制器
时序控制器的作用是为每条 指令按时间顺序提供控制信号。时序控制器包括时钟发生器和倍频定义单元,其中时钟发生器由石英晶体振荡器发出非常稳定的脉冲信号,就 是CPU的主频;而倍频定义单元则定义了CPU主频是存储器频率(总线频率)的几倍。
3、 总线控制器
总线控制器主要用于控制CPU 的内外部总线,包括地址总线、数据总线、控制总线等等。
4、中断控制器
中断控制器用于控制各种各样的中断请求,并根据优先 级的高低对中断请求进行排队,逐个交给CPU处理。
(三) CPU核心的设计
CPU的性能是由什么决定的呢?单纯的一个ALU速度在一个CPU中并不起决定性作用,因为ALU的速度都差不多。而一个CPU的性能表现的决 定性因素就在于CPU内核的设计。
1、超标量(Superscalar)
既然无法大幅提高ALU的速度,有什么替代的方法呢?并行处理的方 法又一次产生了强大的作用。所谓的超标量CPU,就是只集成了多个ALU、多个FPU、多个译码器和多条流水线的CPU,以并行处理的方式来提高 性能。
超标量技术应该是很容易理解的,不过有一点需要注意,就是不要去管“超标量”之前的那个数字,比如“9路超标量”,不同 的厂商对于这个数字有着不同的定义,更多的这只是一种商业上的宣传手段。
2、流水线(Pipeline)
流水线是现代RISC核心的一 个重要设计,它极大地提高了性能。
对于一条具体的指令执行过程,通常可以分为五个部分:取指令,指令译码,取操作数,运算 (ALU),写结果。其中前三步一般由指令控制器完成,后两步则由运算器完成。按照传统的方式,所有指令顺序执行,那么先是指令控制器工 作,完成第一条指令的前三步,然后运算器工作,完成后两步,在指令控制器工作,完成第二条指令的前三步,在是运算器,完成第二条指令 的后两部……很明显,当指令控制器工作是运算器基本上在休息,而当运算器在工作时指令控制器却在休息,造成了相当大的资源浪费。解决 方法很容易想到,当指令控制器完成了第一条指令的前三步后,直接开始第二条指令的操作,运算单元也是。这样就形成了流水线系统,这是 一条2级流水线。
如果是一个超标量系统,假设有三个指令控制单元和两个运算单元,那么就可以在完成了第一条指令的取址工作后直 接开始第二条指令的取址,这时第一条指令在进行译码,然后第三条指令取址,第二条指令译码,第一条指令取操作数……这样就是一个5级流 水线。很显然,5级流水线的平均理论速度是不用流水线的4倍。
流水线系统最大限度地利用了CPU资源,使每个部件在每个时钟周期都 工作,大大提高了效率。但是,流水线有两个非常大的问题:相关和转移。
在一个流水线系统中,如果第二条指令需要用到第一条指 令的结果,这种情况叫做相关。以上面哪个5级流水线为例,当第二条指令需要取操作数时,第一条指令的运算还没有完成,如果这时第二条指 令就去取操作数,就会得到错误的结果。所以,这时整条流水线不得不停顿下来,等待第一条指令的完成。这是很讨厌的问题,特别是对于比 较长的流水线,比如20级,这种停顿通常要损失十几个时钟周期。目前解决这个问题的方法是乱序执行。乱序执行的原理是在两条相关指令中 插入不相关的指令,使整条流水线顺畅。比如上面的例子中,开始执行第一条指令后直接开始执行第三条指令(假设第三条指令不相关),然 后才开始执行第二条指令,这样当第二条指令需要取操作数时第一条指令刚好完成,而且第三条指令也快要完成了,整条流水线不会停顿。当 然,流水线的阻塞现象还是不能完全避免的,尤其是当相关指令非常多的时候。
另一个大问题是条件转移。在上面的例子中,如果第 一条指令是一个条件转移指令,那么系统就会不清楚下面应该执行那一条指令?这时就必须等第一条指令的判断结果出来才能执行第二条指令 。条件转移所造成的流水线停顿甚至比相关还要严重的多。所以,现在采用分支预测技术来处理转移问题。虽然我们的程序中充满着分支,而 且哪一条分支都是有可能的,但大多数情况下总是选择某一分支。比如一个循环的末尾是一个分支,除了最后一次我们需要跳出循环外,其他 的时候我们总是选择继续循环这条分支。根据这些原理,分支预测技术可以在没有得到结果之前预测下一条指令是什么,并执行它。现在的分 支预测技术能够达到90%以上的正确率,但是,一旦预测错误,CPU仍然不得不清理整条流水线并回到分支点。这将损失大量的时钟周期。所以 ,进一步提高分支预测的准确率也是正在研究的一个课题。
越是长的流水线,相关和转移两大问题也越严重,所以,流水线并不是越 长越好,超标量也不是越多越好,找到一个速度与效率的平衡点才是最重要的。

1、解码器(Decode Unit)
这是x86CPU才有的东西,它的作用是把长度不定的x86指令转换为长度固定的类似于RISC的指令,并交给RISC内核。解码分为硬件解码和微解码 ,对于简单的x86指令只要硬件解码即可,速度较快,而遇到复杂的x86指令则需要进行微解码,并把它分成若干条简单指令,速度较慢且很复 杂。好在这些复杂指令很少会用到。
Athlon也好,PIII也好,老式的CISC的x86指令集严重制约了他们的性能表现。
2、一级缓存 和二级缓存(Cache)
以及缓存和二级缓存是为了缓解较快的CPU与较慢的存储器之间的矛盾而产生的,以及缓存通常集成在CPU内核, 而二级缓存则是以OnDie或OnBoard的方式以较快于存储器的速度运行。对于一些大数据交换量的工作,CPU的Cache显得尤为重要。

C. 关于 CPU中的指令译码器和预取缓冲器 的作用

关于指令译码单元:

不管是硬盘上、内存中还是CPU中,指令确实都是以二进制(0、1)方式存储,
但是二进制存储的指令并不见得就是CPU能直接处理的指令,比如
汇编语句 mov AX,BX 的二进制机器码 1000 1011 1100 0011
CPU 核心的运算单元并不知道 1000 1011 1100 0011 是什么意思,
要通过译码器才能把这一段机器码转换为控制核心电路工作的信号——微码,
换句话说,就是把二进制的程序代码(软件)变为硬件的电路控制信号。

另外,现代 x86 微处理器通常还要额外的译码电路,把 x86 CISC 指令
动态翻译成 RISC 指令,然后送到 CPU 的 RISC 核心再翻译为控制信号。

关于预取缓冲器:

如果不使用这个缓冲器,CPU 每次需要新指令的时候都从内存(或L2缓存)
读取的话,那么就得空耗几百(或L2的几十)个周期等待这些慢速设备。
L1 数据缓存以及 CPU 内核里面的指令寄存器队列 可以以更高的速度运行,
让 CPU 一旦需要就能在几个或一个周期内从中取得新指令,从而大大加快
指令连续执行的速度。

D. 如何解决存储器和CPU之间的时序配合问题,述说其详细过程

http://blog.21ic.com/user1/3794/archives/2007/40244.html
分享】存储器与CPU的连接2007-7-19 16:46:00
存储器与CPU的连接
存储器与CPU或系统总线的连接,这个题目很大。注意到以字节为单位组织的存储器是16位宽度、乃至32位宽度的存储器的基础,本着由易到难、由浅入深的原则,这里先考虑以字节为单位组织的存储器与8位CPU的连接,在下一节介绍16位宽度的存储器与16位CPU(以8086为例)的连接,在后面的章节再讨论32位CPU(以80386为例)的存储器组织。
在考虑存储芯片类型时,也是先考虑与CPU连接较为方便的SRAM和ROM,然后再指出DRAM与CPU连接时要特别考虑的地方。
在存储器与CPU连接时一般要考虑以下几个问题:
·CPU总线的负载能力。
·CPU与存储器速度的配合问题。
·存储器的地址空间分配。
·读/写控制信号的连接。
·数据线的连接。
·地址线的连接与存储芯片片选信号的产生。
1.CPU总线的负载能力
CPU总线的驱动能力有限,通常为一到数个,TTL负载,因此,在较大的系统中需要考虑总线驱动。一般做法是,对单向传送的地址和控制总线,可采用三态锁存器(如74LS373、8282等)和三态单向驱动器(如74LS244)等来加以锁存和驱动;对双向传送的数据总线,可采用三态双向驱动器(如74LS245、8286等)来加以驱动。三态双向驱动器也称总线收发器或数据收发器。
2.CPU与存储器速度的配合问题
每一种存储芯片都有自己固有的时序特性,这在前面已多次讲到。在和cPu相连时必须处理好时序的配合问题。处理这个问题应以CPU的时序为基准,从CPU的角度提要求。
例如,存储芯片读取时间应小于CPU从发出地址到要求数据稳定的时间间隔;存储芯片从片选有效到输出稳定的时间应小于系统自片选有效到cPu要求数据稳定的时间间隔。如果没有满足要求的存储芯片,或者出于价格因素而选用速度较慢的存储芯片时,则应提供外部电路,以产生READY信号,迫使CPU插入等待时钟Tw。看一个具体的例子,2114-2的读取时间最大为200 ns,而cPu要求的从地址有效到数据稳定的时间间隔为150 ns,则不能使用2114—2,可选用比它快的芯片。如果出于价格因素,一定要用2114—2,则需要设计READY产生电路,以便插入Tw。
3.存储器的地址空间分配
内存通常分为RAM和ROM两大部分,而RAM又分为操作系统占用区和用户区。另外,目前生产的存储器芯片,单片的容量仍然是有限的,即它的寻址空间是有限的,一般要由若干芯片组成一个存储器。所以,在和CPU连接时需进行存储器的地址空间分配,即需要事先确定每个芯片(或由“×l位”或“×4位”芯片组成的芯片组)所占用的地址空间。
4.读/写控制信号的连接
总的原则是CPU的读/写控制信号分别和存储器芯片的读/写信号输入端相连。实际上,一般存储器芯片没有读输入端,是用写无效时的片选信号兼作读信号。有的存储器芯片设有输出允许()引脚,一般将该引脚和CPU的读信号相连,以便该片被选中且读信号有效时将片内数据输出三态门打开。对于不需要在线编程的ROM芯片,不存在写信号的连接。

5.数据线的连接
这个问题与存储器的读/写宽度有关,而存储器读/写的最大宽度一般为CPU对外数据总线的位数。在考虑存储器与CPU的数据线连接时,总的原则是:如果选用芯片的芯片字和所要设计的存储器的读/写宽度相同,则直接将它的数据线分别和CPU的数据线相连;如果芯片字的位数小于所要设计的存储器的读/写宽度,则需进行“位扩展”,即用几片组合在一起,使它们的芯片字位数的总和等于存储器的读/写宽度,将它们的数据线分别和CPU的数据线按对应关系相连。
这里以8位CPU配8位宽度的存储器为例。若选用“×8位”存储芯片,则将它的8根数据线分别和CPU的8根数据线相连即可;而选用芯片字不足8位的存储芯片,则需要用几片(“×1位”芯片需8片,“×4位”位芯片需2片)才能构成一个8位宽度的存储器,这时,需将这些芯片的数据线按位的对应关系分别和CPU的8根数据线相连。
有些存储芯片,数据的输入和输出分别缓冲,一位数据设置DIN和DOUT两个数据线引脚。对于这种芯片,需将一位的DIN和DOUT引脚连起来,再和CPU的一根数据线相连。
6.地址线的连接及存储芯片片选信号的产生
一个存储器系统通常需要若干个存储芯片。为了能正确实现寻址,一般的做法是,将cPu或系统的一部分地址线(通常是低位地址线,位数取决于存储芯片的容量)连到所有存储芯片,以进行片内寻址(存储芯片内均设有地址译码器);而用另一部分地址线(高位地址线)进行芯片选择。存储器系统设计的关键在于如何进行芯片选择,即如何对高位地址译码以产生芯片的片选信号,常用以下三种方法:
(1)线选法
用一根地址线直接作一个存储芯片的片选信号。例如,一台8位微机,有16根地址线,现要配2 KB RAM和2 KB ROM,均选用2 K×8位的芯片,则各需一片。这时可采用一种最简单的地址选择方法,如图3.24所示。将CPU的地址线的低11位(A10~A0)和两个芯片的地址线分别相连,芯片的片选直接和其他的高位地址线中的一根相连,图中A15反相后接RAM的,A14反相后接ROM的。这样,A15、A14为1 0时选中RAM片,为0 1时选中ROM片。
这里分析一下RAM芯片占用地址空间的情况。未用的地址位(这里是A13~A11)通常取0,即RAM芯片的设计地址空间为8000H~87FFH。将A15、A14固定为1 0,A10一AO作片内寻址,当A13~A11取不同的组合时,可形成包括上述设计空间在内的8个区域。除去设计空间外,其他区域是:8800H~8FFFH,9000H~97FFH,…,B800H~BFFFH。由于A13~A11没有参加译码,访问这7个区域中的任何一个单元都会影响到设计空间中相应的单元,因此,这7个区域不得他用。可以认为这些区域也被该RAM芯片所占用着,称这些区域为设计空间的重叠区。对于该例中的ROM芯片,同样也存在7个重叠区,读者可自行分析。

线选法的优点是简单、无需外加选择电路;缺点是不能有效地利用地址空间,也不便于系统的扩充。该方法可用在存储容量需求小,且不要求扩充的场合,例如单片机应用系统。
(2)全译码
全部地址线参加译码,除去进行片内寻址的低位地址线外,其余地址线均参加译码,以进行片选。例如,一台8位微机,现要求配8 KB RAM,选用2 K×8位的芯片,安排在64 KB地址空间低端的8 KB位置。图3.25所示为该8 KB RAM与CPU(或系统总线)的连接。图中74Lsl38是3线一8线译码器。它有3个代码输入端c、B、A(A为低位)和8个译码输出端Y0~Y7。74LSl38还有3个使能端(或叫允许端)G1、和,第一个为高电平有效,后两个为低电平有效。只有当它们为l 0 0时,译码器才进行正常译码;否则,译码器不工作,所有的输出均无效(为高)。表3.5是74LSl38的真值表。此外,常用的3线一8线译码器还有8205,其输入/输出特性和74LS138完全一样,只是使用了另一组信号名称。

从图3.25中可以看到,除片内寻址的低位地址线外,高位地址都参与了译码。根据图中的接法,当A15~A1l为00000时,YO有效,选中左起第一片;为00001时,Y1有效,选中左起第二片,其他依此类推。
全译码的优点是可利用全部地址空间,可扩充性好;缺点是译码电路开销大。
(3)部分译码
它是前两种方法的综合,即除进行片内寻址的低位地址线外,其余地址线有一部分参加译码以进行片选。以图3.26所示为例,这里最高位A15没有参加译码。因为A15没有参加译码,所以也存在重叠区问题。
部分译码是界于线选法和全译码之间的一种方法,其性能也界于二者之间:可寻址空间比线选法大,比全译码小;而译码电路比线选法复杂,比全译码简单。

上面围绕存储芯片片选信号的产生,说明了三种译码方法。这些方法也适用于后面要介绍的I/O端口的寻址。

E. 计算机组成原理 cpu和存储器的连接问题

1)CPU可访问的最大存储空间看地址位数地址总线18条故2^18
2)CPU可提供数据总线8条存储空间为16KB故要拼凑一个16K*8--->(16K*8)/(4K×4
)=8
3)要求用138译码器实现地址译码应该就是3-8译码器那么有3根地址线做译码输入。
全部用4K×4位的RAM芯片构成,那么4K=2^12需要12根地址线A11-A0,之前3根就是A14-A12---这里的推算的没考虑要求其地址范围为08000H——0BFFFH的。
这里是从低位考虑的。
考虑地址空间必须先把地址从16进制转成2进制观察他们“1”最高位的位置然后设计。

F. 内存芯片与CPU连接时,CPU的地址线分成那两部分,分别有什么作用

根据所选用的半导体存储器芯片地址线的多少,把CPU的地址线分为芯片外(指存储器芯片)地址和芯片内的地址,片外地址经地址译码器译码后输出,作为存储器芯片的片选信号,用来选中CPU所要访问的存储器芯片。片内地址线直接接到所要访问的存储器芯片的地址引脚,用来直接选中该芯片中的一个存储单元。
摘自https://..com/question/504270326.html

G. 在CPU+RAM+ROM的结构中,有哪些地方用到译码器

如果CPU的数据与地址总线复用的情况下,都需要用译码器,CPU读RAM,ROM的内容需要译码器锁存地址,然后数据总线传回数据信息。如果数据总线与地址总线是分开的就不需要译码器了。

H. 存储器由哪几部分组成,如何使用

存储器由存储体、地址译码器和控制电路组成。


1)存储体是存储数据信息的载体。由一系列存储单元组成,每个存储单元都有确定的地址。存储单元通常按字节编址,一个存储单元为一个字节,每个字节能存放一个8位二进制数。就像一个大仓库,分成许多房间,大仓库相当于存储体,房间相当于字节,房间都有编号,编号就是地址。

2)地址译码器将CPU发出的地址信号转换为对存储体中某一存储单元的选通信号。相当于CPU给出地址,地址译码器找出相应地址房间的钥匙。通常地址是8位或1 6位,输入到地址译码器,产生相应的选通线,8位地址能产生28=256根选通线,即能选通256字节。16位地址能产生216=65536=64K根选通线,即能选通64K字节。当然要产生65536根选通线是很难想象的,实际上它是分成256根行线和256根列线,256 X 256=65536,合起来能选通65536个存储单元。

3)存储器控制电路包括片选控制、读/写控制和带三态门的输入/输出缓冲电路。

①片选控制确定存储器芯片是否工作。

②读/写控制确定数据传输方向;若是读指令,则将已被选通的存储单元中的内容传送到数据总线上;若是写指令,则将数据总线上的数据传送到已被选通的存储单元中。

③带三态门的输入/输出缓冲电路用于数据缓冲和防止总线上数据竞争。数据总线相当于一条车流频繁的大马路,必须在绿灯条件下,车辆才能进入这条大马路,否则要撞车发生交通事故。同理,存储器的输出端是连接在数据总线上的,存储器中的数据是不能随意传送到数据总线上的。例如,若数据总线上的数据是“1”(高电平5V),存储器中的数据是“0”(低电平OV),两种数据若碰到一起就会发生短路而损坏单片机。因此,存储器输出端口不仅能呈现“1”和“O”两种状态,还应具有第三种状态“高阻"态。呈“高阻"态时,它们的输出端口相当于断开,对数据总线不起作用,此时数据总线可被其他器件占用。当其他器件呈“高阻"态时,存储器在片选允许和输出允许的条件下,才能将自己的数据输出到数据总线上。

单片机学习需要理论结合实际,最好有自己的单片机开发板辅助,看视频教程,目前主流的有吴鉴鹰单片机开发板