【计算机组成原理】(唐朔飞教授主编-第三版)第四章习题解答(个人)

4.1解释概念:

主存、辅存以及Cache,

RAM,SRAM,DRAM,

ROM,PROM,EPROM,EEPROM,CDROM ,

Flash Memory

(1)主存和辅存:

        所有存储器如果按照在计算机中的作用可以分为"主存储器\辅助存储器\缓冲存储器",主存储器和辅助存储器简称为主存和辅存,其中主存可以直接和CPU进行信息交换,CPU可以把信息直接存储在主存中,辅存一般不直接和CPU相连,他们起到扩展计算机存储容量的作用,两者对比,主存相对速度快,单位容量造价高.

(2)Cache

        Cache即高速缓冲寄存器,它一般设置在CPU和主存中间,起到一个承上启下的作用,由于CPU的处理信息的速度增长较快,但是链接CPU的主存的速度增长相对较慢,这样使得计算机整体速度还是相对较低,为了弥补二者速度之间的"剪刀差",便诞生了高速缓存这一中介,它的作用就是将CPU常用的数据从主存中拿过来,在运行过程中可以更快的将CPU所需要的数据传递过去.

(3)RAM和SRAM和DRAM

        RAM(Random Access Memory)即随机存储寄存器,根据存储方式的不同又可以分为静态RAM和动态RAM,即(Static RAM和Dynamic RAM), 不管是S类还是D类,他们 都是易失性存储器的一种,其中S类是使用触发器原理进行信息存储的,即使消息读出后,它仍可以保持其原状态,不需要再生,但是电源掉电后,原存储信息丢失;D类则是靠电容存储信息,电容上的电荷只能维持一到二毫秒,因此即使是电源不掉电,信息也会自动消失,这就需要进行一个"刷新"操作,以让信息保存.和S类相比,它具有集成度高\功耗更低的特点.

(4)ROM和PROM和EPROM和EEPROM以及CDROM

  1. ROM(Read-Only Memory,只读存储器):ROM是一种只能读取数据而不能写入或修改数据的存储器。ROM通常用于存储计算机系统的固定程序和数据,如启动程序和固件。

  2. PROM(Programmable Read-Only Memory,可编程只读存储器):PROM是一种可以编程一次的只读存储器,用户可以通过特殊的设备将数据写入PROM中,但一旦数据写入后就无法修改。PROM通常用于存储固定的程序或数据

  3. EPROM(Erasable Programmable Read-Only Memory,可擦除可编程只读存储器):EPROM是一种可以多次擦除和编程的只读存储器,通常需要使用紫外线擦除器来擦除存储的数据。EPROM具有可重复使用的特点,适用于需要频繁更新或修改的应用。

  4. EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦除可编程只读存储器):EEPROM是一种可以通过电子信号擦除和编程的只读存储器,相比于EPROM,EEPROM的擦除和编程更加方便和快速,而且不需要紫外线擦除器。

  5. CD-ROM(Compact Disc Read-Only Memory,光盘只读存储器):CD-ROM是一种使用光学技术存储数据的只读存储器,数据一经写入CD-ROM后无法修改。CD-ROM通常用于存储大量的音频、视频和软件等数据。

4.2计算机中哪些部件可用于存储信息,按其速度、容量和价格/位排序说明。

        计算机中这种分级的存储形式可以更好的释放计算机的性能,并且可以使用有限的金额打造出工作效率更高的机器.

4.3 存储器的层次结构主要体现在什么地方,为什么要分这些层次,计算机如何管理这些层次?

         存储器的层次结构见上图.

        这种层次结构的设计是为了在速度、容量和成本之间取得平衡。高速缓存存储器速度快,但容量小且成本高;主存储器速度适中,容量适中,成本适中;辅助存储器速度慢,容量大,成本低。

        计算机管理这些存储器层次的方式是通过存储器层次结构中的存储器管理单元(Memory Management Unit,MMU)来实现的。MMU负责将数据从辅助存储器中加载到主存储器,然后再将数据从主存储器加载到高速缓存中。同时,MMU还负责将数据从高速缓存中写回到主存储器,再从主存储器写回到辅助存储器。这样,计算机可以根据需要将数据从不同层次的存储器中移动,以实现数据的快速访问和高效利用。

4.4说明存取周期和存取时间的区别。       

        存取时间又称作存储器的访问时间(Memory Access Time),是指启动一次存储器操作(读或写)到完成该操作所需要的全部时间.存取时间分读出时间和写入时间,读出时间是从存储器接收到有效地址开始到产生有效输出结束,写入时间是存储器接收到有效地址到数据被写入结束.

        存取周期(Memory Cycle Time)是指存储器进行连续两次独立的存储器操作所需要的最小的时间间隔,通常存取周期大于存取时间,因为这过程要涉及到"准备,恢复,再激活".

4.5 什么是存储器的带宽?若存储器的数据总线宽度为32位,存取周期为200ms,则存储器的带宽是多少?

        存储器的带宽是指存储器系统在单位时间内传输数据的能力,通常以每秒传输的数据量来衡量,单位为比特每秒(bps)或字节每秒(Bps)。

        对于存储器的数据总线宽度为32位,存取周期为200毫秒的情况,首先需要将存取周期转换为秒,即200毫秒 = 0.2秒。

        然后,计算存储器的带宽:

        带宽 = 数据总线宽度 * 存取周期 带宽 = 32位 * 0.2秒 带宽 = 6.4位秒

        因为带宽的单位通常是bps或Bps,所以需要根据具体情况将位秒转换为bps或Bps。

4.6 某机字长为32位,其存储容量是64 KB,按字编址其寻址范围是多少?若主存以字节编址,试画出主存字地址和字节地址的分配情况。

        机器字长为32位,一位的大小为一比特(bit),8比特为1字节,所以我们根据机器字长将存储字长为4字节,如果采用按字编址,64KB即64*1024字节,16乘4乘1024字节,除以4字节后,也就是16 K个字.

图可以类比p73.

4.7 一个容量为 16 Kx32位的存储器,其地址线和数据线的总和是多少?当选用下列不同规格的存储芯片时,各需要多少片?

(1 Kx4位,2 Kx8位,4 Kx4位,16 Kx1位,4 Kx8位,8 Kx8 位)

首先我们需要至少32位的数据线,地址线为了能够表示16K个地址,1K是2的十次方,16是2的4次方,所以至少需要10+4 = 14根地址线,数据线和地址线总和为14 + 32 = 46位.

1K x 4位:

将数据位扩展到32位需要8片4位存储芯片,此时我们可以得到1K x 32位的芯片组,一个芯片组为8片原始存储芯片,现在我们进行字扩展,同样的存储芯片组再复制15组,一共需要16 * 8 = 128片此规格的存储芯片.

2 Kx8位:

每组4片一共8组,共32片.

4 Kx4位:

每组8片,共4组,共32片.

16 Kx1位:

每组32片,共一组,共32片.

4 Kx8位:

每组4片,共4组,共16片.

8 Kx8 位:
每组4片,共2组,共8片.

4.8 试比较静态RAM和动态RAM。

静态RAM(SRAM)和动态RAM(DRAM)是两种常见的计算机内存类型,它们在结构、工作原理和性能上有很大的区别。

  1. 结构:
  • 静态RAM由6个晶体管组成一个存储单元,每个存储单元可以存储一个位(0或1)。SRAM的结构比较简单,速度较快。
  • 动态RAM由一个晶体管和一个电容器组成一个存储单元,每个存储单元同样可以存储一个位。DRAM的结构比较复杂,速度较慢。

        2.工作原理:

  • 静态RAM在存储数据时不需要刷新操作,数据可以一直保持在存储单元中,因此读取速度较快,但功耗较高。
  • 动态RAM在存储数据时需要定期进行刷新操作,否则数据会丢失。由于刷新操作会消耗一定的时间和能量,因此读取速度较慢,但功耗较低。

        3.性能:

  • 静态RAM的读取速度比动态RAM快,因此常用于高性能的计算机系统中,如缓存存储器。
  • 动态RAM的存储密度比静态RAM高,成本更低,因此常用于主存储器中。

4.9 什么叫刷新?为什么要刷新?说明刷新有几种方法。

在动态RAM(DRAM)中,刷新是指定期对存储的数据进行重新写入操作,以防止数据丢失。动态RAM中的存储单元是由电容器来存储电荷的,电容器的电荷会逐渐泄漏,导致存储的数据逐渐消失。因此,为了保持数据的完整性,需要定期对存储的数据进行刷新操作。

刷新的目的是为了重新写入电容器中的电荷,以延长数据的存储时间。如果不进行刷新操作,电容器中的电荷会逐渐减少,最终导致数据丢失。

(p86)

刷新方式通常有集中刷新、分散刷新和异步刷新三种。

  1. 集中刷新:集中刷新是指在DRAM中的所有存储单元同时进行刷新操作。这种方式简单直观,但会造成存储器在刷新时无法进行读写操作,可能会影响系统性能。

  2. 分散刷新:分散刷新是指将DRAM中的存储单元分成多个刷新组,每个刷新组独立进行刷新操作。这样可以减少刷新对整个存储器的影响,提高系统的性能。

  3. 异步刷新:异步刷新是指在DRAM中的刷新操作与读写操作是异步进行的,不会影响存储器的读写性能。异步刷新通常通过内部控制电路来实现,可以在不影响存储器读写操作的情况下完成刷新操作。

4.10  半导体存储器芯片的译码驱动方式有几种?

(p75)

半导体存储器芯片的译码驱动方式通常有线选法和重合法两种。

  1. 线选法:线选法是通过行地址和列地址的译码信号来选通存储器芯片中的某一行或某一列。在行地址译码时,通过行地址译码器将行地址信号转换为对应的行选通信号,从而选通存储器芯片中的某一行。在列地址译码时,通过列地址译码器将列地址信号转换为对应的列选通信号,从而选通存储器芯片中的某一列。这种方式集成度较低,适用于规模不大的电路。

  2. 重合法:重合法是通过行地址和列地址的译码信号的重合来选通存储器芯片中的某一单元。在这种译码方式下,行地址和列地址的译码信号同时有效时,才会选通存储器芯片中对应的存储单元,从而实现对该单元的读取或写入操作。未被选中的数据虽然也会输出,但是其输出通道中间会断开,不影响真正需要读出数据的输出。

4.11 一个8Kx8位的动态RAM 芯片,其内部结构排列成256x256形式,读/写周期为0.1S。试问采用集中刷新、分散刷新及异步刷新三种方式的刷新间隔各为多少?

首先,我们需要计算出该8Kx8位的动态RAM芯片的刷新周期。

RAM芯片的容量为8Kx8位,即总共有8K个存储单元,每个存储单元为8位。因为内部结构排列成256x256形式,所以有256行和256列。

1. 集中刷新方式:
刷新周期 = 读/写周期 = 0.1秒

刷新间隔 = 刷新周期 / 总存储单元数 = 0.1秒 / 8K = 0.1秒 / 8192 ≈ 12.21μ秒

2. 分散刷新方式:
刷新周期 = 读/写周期 = 0.1秒

刷新组数量 = 行数 = 256

刷新间隔 = 刷新周期 / 刷新组数量 = 0.1秒 / 256 ≈ 390.63μ秒

3. 异步刷新方式:
异步刷新方式不影响读写操作,所以不需要刷新间隔。

因此,采用集中刷新方式的刷新间隔为约12.21μ秒,采用分散刷新方式的刷新间隔为约390.63μ秒,采用异步刷新方式不需要刷新间隔。
 

4.12 画出用1024x4位的存储芯片组成一个容量为64Kx8位的存储器逻辑框图。要求将64K分成4个页面,每个页面分16组,共需多少片存储芯片?

两个芯片进行位扩展然后组成一组,每个组就可以看为是1K  x   8位的芯片,然后进行字扩展,再附加63组就可以了.

图可以参考p93,图4.35,只需要增加片选线即可,每组芯片共用一条片选线,然后每组连个单位芯片将八条数据线充分利用.

将64k分到4个页面,每个页面16k,又将16k分到16组,每个组有1k,已知使用的芯片为1024 x 4 的大小,需要将其进行位扩展到8位,所以每组两片,最后需要芯片数量总计:

2 * 16 * 4 = 128片.

4.13设有一个64Kx8位的RAM 芯片,试问该芯片共有多少个基本单元电路(简称存储基元)?欲设计一种具有上述同样多存储基元的芯片,要求对芯片字长的选择应满足地址线和数据线的总和为最小,试确定这种芯片的地址线和数据线,并说明有几种解答。

一个64Kx8位的RAM芯片意味着这个芯片有64KB(64K = 64 x 1024)的存储单元,并且每个存储单元有8位(或1字节)。因此,该RAM芯片共有64KB x 8 = 512K个存储基元。

为了设计一种具有相同存储基元数量的芯片,并且使地址线和数据线的总和最小,我们需要考虑如何平衡地址线和数据线的选择。

设这种芯片的地址线为A位,数据线为D位。则有以下规则:

  1. 存储单元总数 = 2^A x D
  2. 存储单元总数 = 512K

根据上述规则,可以列出方程式:

2^A x D = 512K = 2 ^19

(A, D)组合,使得地址线和数据线的总和最小:

(1, 524288) (2, 262144) (4, 131072) (8, 65536) (16, 32768) (32, 16384) (64, 8192) (128, 4096) (256, 2048) (512, 1024).....

当A为18时,D为2,此时总和最小

4.14 某8位微型计算机地址码为18位,若使用4Kx4位的RAM 芯片组成模块板结构的存储器,试问

(1)该机所允许的最大主存空间是多少?
(2)若每个模块板为32Kx8位,共需几个模块板?
(3)每个模块板内共有几片RAM芯片?
(4)共有多少片RAM?
(5)CPU如何选择各模块板?

重新组织后的语言如下:
1. 该机所允许的最大主存空间是:256KB(2^18 × 8位 = 256KB)。
2. 模块板总数为8块(256K × 8 / 32K × 8 = 8块)。
3. 板内片数为16片(32K × 8位 / 4K × 4位 = 8 × 2 = 16片)。
4. 总片数为128片(16片 × 8 = 128片)。
5. CPU通过最高3位地址译码输出选择模板,次高3位地址译码输出选择芯片。

4.15设CPU共有16根地址线,8根数据线,并用MREQ(低电平有效)作访存控制信号,RW作读/写命令信号(高电平为读,低电平为写)。

现有这些存储芯片:ROM(2Kx8位,4Kx4位,8Kx8位),RAM(1Kx4位,2Kx8位,4Kx8位)及74138译码器和其他门电路(门电路自定)。试从上述规格中选用合适的芯片,画出CPU和存储芯片的连接图。要求如下:
(1)最小4K地址为系统程序区,4096~16383地址范围为用户程序区。
(2)指出选用的存储芯片类型及数量。
(3)详细画出片选逻辑。

(1)地址空间分配图:
系统程序区(ROM共4KB):0000H-0FFFH
用户程序区(RAM共12KB):1000H-3FFFH
(2)选片:
ROM:选择4K×4位芯片2片,采用位扩展的方式,使其称为4k x 8位的芯片组,以符合要求。
RAM:选择4K×8位芯片3片,采用字扩展的方式扩充其容量以符合要求,(RAM1地址范围为:1000H-1FFFH,RAM2地址范围为2000H-2FFFH, RAM3地址范围为:3000H-3FFFH)
(3)各芯片二进制地址分配如下:

————————————————

CPU和存储器连接逻辅图及片选逻辑如下图所示:

                        
图片链接:https://blog.csdn.net/weixin_45735391/article/details/127178726

4.16 CPU假设同上题,现有8片8Kx8位的RAM芯片与CPU相连

(1)用74138译码器画出CPU与存储芯片的连接图。

(2)写出每片RAM的地址范围。

RAM00000H-1FFFH
RAM12000H-3FFFH
RAM24000H-5FFFH
RAM36000H-7FFFH
RAM48000H-9FFFH
RAM5A000H-BFFFH
RAM6C000H-DFFFH
RAM7E000H-FFFFH

(3)如果运行时发现不论往哪片RAM写人数据,以A000H为起始地址的存储芯片都有与其相同的数据分析故障原因。

存储芯片会被写入数据时必须满足以下情况:
1. CPU发送写入指令:CPU通过总线向存储芯片发送写入数据的指令。
2. 地址匹配:存储芯片的地址线与CPU发送的地址匹配,从而确定写入数据的目标存储芯片。
3. 使能信号有效:写入操作需要使能信号有效,表明存储芯片处于可写入状态。
4. 数据有效:CPU发送有效的数据到存储芯片。
5. 时钟信号:在时钟信号的控制下,数据被稳定地写入到存储芯片。

只有在上述条件全部满足时,存储芯片才会被成功写入数据。
 

如果向任意一个芯片写入数据都会影响该位置,那说明每次数据写入时该芯片一处处与被选择状态,我们联想硬件结构:

  1. Write Enable(WE):写使能线。当WE信号有效时,表示CPU可以向存储芯片写入数据。写入操作需要WE信号有效,以确保数据能够成功写入存储器。

  2. Chip Select(CS):芯片选择线。当CS信号有效时,表示CPU已经选择了特定的存储芯片进行读取或写入操作。CS信号能够帮助CPU识别并与特定的芯片通信,以确保数据正确地传输到目标存储芯片。

  3. MREQ线(Memory Request)通常用于表示CPU向外部存储器(如RAM、ROM等)发送内存读/写请求的信号。当MREQ信号变为高电平时,表示CPU希望进行内存读取或写入操作。外部存储器会根据MREQ信号的状态,配合其他的控制信号(如地址线、数据线、写使能等),响应CPU的读写请求,进行数据的读取或写入操作。因此,MREQ线起到了指示CPU对外部存储器进行读写操作的作用。

        又因为CS为低电平有效,所以考虑电路故障导致CS一直处于低电平状态,那么可能的情况有:

导致CS一直处于低电平状态的电路故障可能包括以下几种情况:

  1. CS信号线路短路或接地:如果CS信号线路发生短路或者意外接地,可能导致CS一直处于低电平状态。
  2. CS信号线路开路:如果CS信号线路发生开路,可能导致CS无法正常传输高电平信号,导致一直处于低电平状态。
  3. 与CS相关的译码器或逻辑门故障:CS信号通常需要经过译码器或逻辑门进行处理,如果这些部件出现故障,可能导致CS信号无法正确地切换为高电平状态。
  4. 供电问题:CS信号需要正常的供电电压来正常工作,如果供电不足或者异常,可能导致CS一直处于低电平状态。
  5. 芯片本身故障:CS信号的引脚或芯片本身可能发生故障,导致CS信号无法工作正常。

(4)根据(1)的连接图、若出现地址线A与CPU断线,并搭接到高电平上,将出现什么后果?

        如果地址线A13与CPU断开连接并接通至高电平,则A13将始终保持值为“1”。这种情况下,存储器将只能寻址A13等于1的地址空间(奇数片),而A13等于0的另一半地址空间(偶数片)将永远无法被访问到。当试图访问A13等于0的地址空间(偶数片)时,实际上会错误地访问到A13等于1对应的空间(奇数片)。

4.17写出1100、1101、1110、1111对应的汉明码。

已知校验位序号为2的n次方,即1,2,4,8~~~,我们如果想要传输四位数据则至少需要7位二进制数字,其中第1、2、4位为校验位,3、5、6、7位为数据位,于是接下来我们按照配奇的原则来配置汉明码。

1100:

C1 + b4(第三位) + b3(第五位) + b1(第七位) = 1,C1 = 1;

C2 + b4(第三位) + b2(第六位) + b1(第七位) = 1,C2 = 0;

C4 + b3(第五位) + b2(第六位) + b1(第七位) = 1,C4 = 0;

所以1100对应奇校验的汉明码是:1010100

1101:

C1 + b4(第三位) + b3(第五位) + b1(第七位) = 1,C1 = 0;

C2 + b4(第三位) + b2(第六位) + b1(第七位) = 1,C2 = 1;

C4 + b3(第五位) + b2(第六位) + b1(第七位) = 1,C4 = 1;

所以1101对应奇校验的汉明码是:0111101

1110:

C1 + b4(第三位) + b3(第五位) + b1(第七位) = 1,C1 = 1;

C2 + b4(第三位) + b2(第六位) + b1(第七位) = 1,C2 = 1;

C4 + b3(第五位) + b2(第六位) + b1(第七位) = 1,C4 = 1;

所以1110对应奇校验的汉明码是:1111110

1111:

C1 + b4(第三位) + b3(第五位) + b1(第七位) = 1,C1 = 0;

C2 + b4(第三位) + b2(第六位) + b1(第七位) = 1,C2 = 0;

C4 + b3(第五位) + b2(第六位) + b1(第七位) = 1,C4 = 0;

所以1111对应奇校验的汉明码是:0010111

对应二进制位数1234567
对应位置C1C2b4C4b3b2b1
11001010100
11010111101
11101111110
11110010111

4.18已知接收到的汉明码(按配偶原则配置)为

1100100、1100111、1100000、1100001,

检查上述代码是否出错?第几位出错?

利用公式:

P1​=C1​⊕b4​⊕b3​⊕b1​

P2​=C2​⊕b4​⊕b2​⊕b1

​P4​=C4​⊕b3​⊕b2​⊕b1

​如果该组逻辑与结果为0则说明没有问题,反之则存在问题。

1100100

结果为四组和二组出错,所以是其共有位置第六位出错。

1100111

一二四全部出错,所以是其共有位第七位出错。

1100000

一二组出错,所以是其共有位置第三位出错。

1100001

第四组出错,所以是它单独拥有的位置出错,即第四位出错。

4.19已知接收到下列汉明码,分别写出它们所对应的欲传送代码。

1100000(按偶性配置)       1100010(按偶性配置)      1101001(按偶性配置)

0011001(按奇性配置)       1000000(按奇性配置)       1110001(按奇性配置)

根据接收到的汉明码反推出最终想要传递的信息,首先就要进行校验,然后是修正,最后取出数据位即可。

1100000(按偶性配置) :

(1)校验并发现错误:

C1组为1,C2组为1,C4组为0,C1组包含第1,3,5,7位,C2组包含第2,3,6,7位,C4组包含4,5,6,7位,假设是一个位置出错,其中既不在C4中又包含在C1和C2中的位置是第3位;

(2)纠错:

所以第三位应该位1而不是0,汉明码正确应该为1110000;

(3)选出数据位

其传递的数据位是:1000.

1100010(按偶性配置):第五位错,同理结果为(0110)

1101001(按偶性配置):没错,同理结果为(0001)

0011001(按奇性配置):第七位错,同理结果为(1000)

1000000(按奇性配置):第六位错,同理结果为(0010)

1110001(按奇性配置):没错,同理结果为(1001)

4.20欲传送的二进制代码为1001101,用奇校验来确定其对应的汉明码,若在第6位出错,说明纠错过程。

如果第六位出错,则接收到的信息是:1001111

C1组结果为1,所以1.3.5.7位没错;C2组结果为0,所以2,3,6,7位中有错,C4组结果为0,所以说明4,5,6,7位中有错其中6是C2和C4共有切不在C1中的,便可得知第六位是出错位置。

4.21为什么在汉明码纠错过程中,新的检测位P1,P2,P4,的状态即指出了编码中错误的信息位?

汉明码的更细规则如下:

冗余位规定:
- 冗余位的数量应该大于或等于数据位的数量加1。
- 每个冗余位覆盖一组特定的数据位,其中每个冗余位都覆盖不同的一组数据位。
- 冗余位本身的计算方式为对应数据位的奇偶校验值,以确保每个冗余位能检测到一定数量的错误组合。

错误检测方法:
- 接收端在接收到汉明编码数据后,重新计算每个冗余位的正确值。
- 对比接收到的汉明编码中的冗余位和重新计算得到的冗余位值,如果存在不匹配的地方,则说明存在错误。
- 通过检查哪个冗余位与重新计算的值不匹配,可以确定错误出现的位置,并通过相应的数据位来纠正错误。

汉明码通过这种规则和方法,可以在传输过程中检测和纠正错误,提高数据传输的可靠性和完整性。
 

4.22某机字长为16位,常规的存储空间为64K字,若想不改用其他高速的存储芯片,而使访存速度提高到8倍,可采取什么措施?画图说明。

若想不改用高速存储芯片,而使访存速度提高到8倍,可采取八体交叉存取技术,如下图所示:
在这里插入图片描述
8体交叉访问时序如下图:
在这里插入图片描述

 原文链接:https://blog.csdn.net/weixin_45735391/article/details/127178726

4.25 什么是程序访问的局部性?存储系统中哪一级采用了程序
访问的局部性原理?

        程序访问的局部性是指在程序执行过程中,对某些数据或指令的访问具有一定的集中性。局部性通常分为时间局部性和空间局部性两种。时间局部性指程序在某个时间段内访问的数据或指令往往会在未来的一个时间段内再次被访问;空间局部性指程序在访问某个数据或指令时,很可能会接下来访问临近的数据或指令。

        存储系统中,采用了程序访问的局部性原理的是缓存系统。缓存系统通常将频繁访问的数据或指令缓存在快速且近处的存储介质中,以提高程序的访问速度。缓存系统利用了程序的局部性原理,通过预先将程序可能会访问的数据或指令放置在靠近处理器的高速缓存中,从而减少了访问主存或硬盘的延迟,加快了程序的执行速度。

4.26 计算机中设置Cache的作用是什么?能不能把Cache的容量扩大,最后取代主存,为什么?

        计算机中设置Cache的作用主要是为了提高数据访问速度。Cache是一个速度较快但容量较小的存储器,用来存储处理器经常访问的数据或指令。当处理器需要访问数据时,先在Cache中查找,如果数据在Cache中命中,就可以快速获取数据,从而减少访问主存或硬盘的时间,提高程序执行的效率。

        虽然Cache的容量可以扩大,但无法完全取代主存的原因是因为Cache与主存之间存在着速度和成本之间的折衷。一般来说,速度越快的存储设备成本越高,而速度较快的Cache相比于主存来说成本更高。由于Cache是存储在处理器内部或紧邻处理器的地方,所以容量较小,如果将Cache扩大到足以取代主存的容量,那么其成本将会变得非常高昂

        另外,Cache的设计原则是将经常访问的数据或指令放在其中,而主存则用于存储更大量的数据。如果将Cache的容量扩大到取代主存,那么就会带来存储层次结构的问题,可能会导致数据访问效率下降,因为Cache无法覆盖整个主存的数据范围。因此,为了在速度和成本之间取得平衡,并且保证系统的整体性能,Cache通常被设计为速度较快但容量较小的存储器,用来提高数据访问速度和程序执行效率。

4.27 Cache制作在CPU芯片内有什么好处?将指令Cache 和数据Cache 分开又有什么好处?

在将Cache制作在CPU芯片内部有以下几个好处:
        1. 降低访问延迟:将Cache集成在CPU芯片内部可以减少Cache与处理器之间的信号传输距离,从而降低数据的访问延迟,提高数据访问速度。
        2. 提高性能:由于Cache和处理器的距离更近,数据传输更快,可以提高处理器的性能,加快程序执行速度。
        3. 节约空间:将Cache集成在CPU芯片内部可以节省主板上的空间,使整个系统更加紧凑。

将指令Cache和数据Cache分开有以下几个好处:
        1. 提高并行性:如果指令Cache和数据Cache分开,那么处理器可以同时访问指令和数据,从而提高并行执行的效率。
        2. 灵活性:将指令Cache和数据Cache分开可以根据实际需求对它们进行独立的优化。不同类型的应用可能对指令和数据的访问模式有所不同,分开Cache可以更好地满足不同需求。
        3. 减少冲突:指令Cache和数据Cache通常会有不同的访问模式和满足要求。将它们分开可以避免由于指令和数据的访问冲突导致缓存失效的情况,提高Cache的命中率。

4.28 设主存容量为256K字,Cache容量为2K字,块长为4。


(1)设计Cache地址格式,Cache 中可装入多少块数据?
(2)在直接映射方式下,设计主存地址格式。
(3)在四路组相联映射方式下,设计主存地址格式。
(4)在全相联映射方式下,设计主存地址格式。
(5)若存储字长为32位,存储器按字节寻址,写出上述三种映射方式下主存的地址格式。

(1) Cache的容量为2K字节,块大小为4字节,因此Cache共有$2^{11}/2^2 = 2^9 = 512$块。Cache的地址格式为9位块号和2位块内地址。

Cache地址的设计如下:
块号(9位)    块内地址(2位)

(2) 主存容量为256K字节,主存地址共18位,共分256K/4=2^16块。主存字块的标记为18-9-2=7位。在直接映射方式下,主存地址格式如下:
主存块标记(7位)        Cache块地址(9位)     块内地址(2位)

(3) 根据四路组相联的条件,一组内共有4块,因此Cache共分为512/4=128=2^7组。主存块的标记为18-7-2=9位,主存地址格式设计如下:
主存块标记(9位)         组地址(7位)               块内地址(2位)

(4) 在全相联映射方式下,主存块的标记为18-2=16位,地址格式如下:
主存块标记(16位)         块内地址(2位)

(5) 按字节寻址,块大小为4个字,每个字32位=4个字节,共16个字节,需要4位地址。主存容量为256K*32位=1MB=2^20字节。

在直接映射方式下,主存块标记为20-9-4=7位,主存地址格式如下:
主存块标记(7位)        Cache块地址(9位)       块内地址(4位)

在四路组相联映射方式下,主存块标记为20-7-4=9位,主存地址格式如下:
主存块标记(9位)         组地址(7位)               块内地址(4位)

在全相联映射方式下,主存块标记为20-4=16位,主存地址格式如下:
主存块标记(16位)          块内地址(4位)
 

4.29假设CPU执行某段程序时共访问Cache命中4800次,访问主存200次,已知Cache的存取周期是30ns,主存的存取周期是150ns,求Cache的命中率以及Cache-主存系统的平均访问时间和效率,试问该系统的性能提高了多少?

根据所给数据,我们可以计算出Cache的命中率、Cache-主存系统的平均访问时间和效率,以及性能提高的百分比。

1、计算Cache的命中率:

        命中率 = Cache命中次数 / (Cache命中次数 + Cache未命中次数)        

        Cache未命中次数 = 访问主存次数 = 200

        命中率 = 4800 / (4800 + 200) = 4800 / 5000 = 0.96 或 96%

2、计算Cache-主存系统的平均访问时间:

        平均访问时间 = Cache命中平均开销 + Cache未命中平均开销

        Cache命中平均开销 = Cache存取周期 * 命中率

        Cache未命中开销 = 主存存取周期 * 未命中率 

        平均访问时间 = 0.96 * 30ns + 0.04 * 150ns = 34.8ns

3、计算Cache-主存系统的效率:

效率 = Cache存取周期 / 平均存取周期

效率 = 30/34.8∗100%=86.2%

4、计算性能提升的百分比:

150 n s(只有主存访问周期) / 34.8 n s(总和平均访问周期)

= 4.31 150ns/34.8ns

=4.31150ns/34.8ns

=4.31 倍,即提高了 3.31倍

4.30    ==一个组相联映射的Cache由64块组成,每组内包含4块。主存包含4096块,每块由128字组成,访存地址为字地址。试问主存和Cache的地址各为几位?画出主存的地址格式。

  1. Cache组数为64/4=16,即16组。
  2. Cache容量为64*128=2^13 字节,Cache地址共13位。
  3. 主存共分为4096/16=256组,每组包含16块。
  4. 主存容量为4096*128=2^19 字节,主存地址共19位。
  5. 主存字块标记(8 位)    组地址( 4 位)‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎      字块内地址( 7 位)

4.31   == 设主存容量为1MB,采用直接映射方式的Cache容量为16KB,块长为4,每字32位。试问主存地址为ABCDEH的存储单元在Cache中的什么位置?

直接映射方式是一种计算机存储映射机制,它将内存地址直接映射到缓存中的地址。在直接映射中,每个缓存块只能被映射到内存中的一个特定地址范围。

直接映射方式的特点包括:(p117)

  1. 易于实现:直接映射方式相对简单,因为每个缓存块只有一个固定的位置。
  2. 直接映射方式具有很高的速度:因为数据可以直接从缓存中读取,而无需进行复杂的寻址计算。
  3. 缓存利用率低:由于每个缓存块只能映射到一个特定的内存地址范围,可能导致缓存利用率低,一些内存块无法被缓存。
  4. 竞争问题较少:由于每个缓存块只能映射到一个固定的位置,所以在缓存中发生的竞争问题较少。

        主存和Cache都是按字节来编址。给定的Cache容量是16KB,即2^14字节。每个缓存块的大小为4*32/8字节,即16字节,或者可以表示为2^4字节。因此,Cache共有2^14/2^4 = 2^10块。由此,Cache中的地址由10位块地址和4位块内地址组成。

主存的容量是1MB,即2^20字节。采用直接映射方式,主存中每个块的大小为4*32/8字节,即16字节,或者可以表示为2^4字节。主存地址由6位主存块标记、10位Cache块地址和4位块内地址组成。

给定的主存地址为ABCDEH,对应的二进制地址是101010 1111001101 1110。其中,主存字块标记为101010,Cache块地址为1111001101,块内地址为1110。因此,该主存地址对应的存储单元应映射到Cache的第101010块的第1110字节,即第42块的第14字节位置,也可以表示为Cache的第11110011011110=3CDEH字节位置。
 

4.32   == 设某机主存容量为4MB,Cache容量为16KB,每字块有8个字,每字32位,设计一个四路组相联映射(即Cache每组内共有4个字块)的Cache组织。

(1)画出主存地址字段中各段的位数。
(2)设Cache的初态为空,CPU依次从主存第0,1,2,…,89号单元读出90个字(主存一次读出一个字),并重复按此次序读8次,问命中率是多少?
(3)若Cache的速度是主存的6倍,试问有Cache和无Cache相比,速度约提高多少倍?

  1. 主存地址字段划分和Cache地址计算:主存字块内地址5位,Cache地址14位,Cache块数29,主存地址格式为主存字块标记(10位)、组地址(7位)、字块内地址(5位)。

  2. Cache读取过程:初始状态下,CPU读第0号单元未命中,需访问主存并将该字所在主存块调入Cache第0组内,接着读1~7号单元都命中。后续按循环模式,每次读取90个字中有12次未命中,之后8次都命中,计算命中率为0.984。

  3. 访问时间和速度提升计算:Cache周期为t,主存周期为6t,有Cache的访问时间为  t(90 * 8-12)+6t * 12,没有Cache的访问时间为6t * 90 * 8,速度提高约4.54倍。

4.33简要说明提高访存速度可采取的措施。

  (p103)

1、物理措施:选取高速原件和采用层次结构

2、调整主存结构:

        一:单体多字系统

在一个存储周期内选取四个指令,这样使得向CPU传输指令的时间变为四分之一存取周期。采用此种方法的前提:①指令和数据的存放在主存中必须是连续的;②如果只需要写入一个指令,另外三个位置也会收到影响。

        二:多体并行系统

有高位交叉编址和低位交叉编址两种方式,前者按照(存储)体内地址顺序存放(一个体存满后,再存入下一个体),体内地址连续,故又有顺序存储之称,有利于存储器的扩充;后者则是在相邻(存储)体中是连续存放的,这种编址方法又称作模M编址(M为模块数),M一般取2的方幂,使硬件电路实现简单,有的机器为了减少存储器的冲突,采用质数个模块。这种方式不该变每个模块的存取周期的前提下,提高了存储器的带宽。

4.34反映主存和外存的速度指标有何不同?

见(p124)

4.35~4.44(略)

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒雒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值