12Tag (标记) Index(索引) 块内字地址
10 2 7
4、14 某计算机中主存容量为4MB,Cache容量为16KB,每块包含8个字,每字32位,映射方式采用4路组相联、设Cache得初始状态为空,CPU依次从主存第0,1,2,…,99号单元读出100个字(每次读一个字),并重复此操作10次、替换算法采用LRU、 (1)求Cache得命中率
(2)若Cache比主存块10倍,分析采用Cache后存储访问速度提高了多少?
解:(1)0,1,2,…,99号单元共100个字,每块8个字,故100个字被分配在13块内。
Cache中能存放得主存块数为:16KB/8=2K块
因为就是四路组相联,故每组中包含得块数为:2K/4=512块
由于Cache得初始状态为空,根据前面得分析,13块数据调入Cache后不会被调出,所有10次访问中,每块第一次访问不命中外,其余访问均可命中,因此10次循环访问共访问内存100*10 =1000次,其中不命中得次数只有13次。 则Cache得命中率为:(1000-13)/1000=98、7%
(2)设访问Cache得访问时间为T(访问一个数据单元所用得时间),则访问主存得访问时间为10T,故有:
使用Cache后访存所用时间为:T2=13*10T+(1000-13)*T=1117T 不使用Cache访问耗时为:T1=10000T
故使用了Cache后速度提高了:10000T/1117T=8、95倍
4、15 假定某数组元素按行优先顺序存放在主存中,则以下两段伪代码A与B中: (1)分析两段代码中对数组访问得时间局部性与空间局部性、 (2)分析变量SUM得时间局部性与空间局部性、
(3)分析for循环体对指令访问得时间局部性与空间局部性、
Int sum_array_A(int a[M][N]) { Int i,j,sum=0; For (i=0;i 解:(1)由于数组在内存中按照行优先存放,数据按块从主存映射到Cache中. 而程序A中对数组访问就是按行优先方式进行得,故有很好得空间局部性,但由于每个数组元素只使用一次,故不存在时间局部性; 而程序B中对数组访问就是按列优先方式进行得,故没有空间局部性,由于每个数组元素只使用一次,故不存在时间局部性; (2)变量SUM就是单个变量,因此两段程序对该变量得访问不存在空间局部性,由于变量在循环中被多次使用,故具有两好得时间局部性. (3)在for循环中对指令访问都很好得体现了时间局部性与空间局部性。 4、16 主存容量为8MB,虚存容量为2GB,分页管理时若页面大小为4KB,求出对应得VPN、VPO、PPN、PPO得位数。 解:虚存所包含得页面数为:2GB/4KB=512K页 故VPN得位数为:19位 由于页面得大小为4KB,故VPO与PPO得位数均为:12位 主存所包含得页面个数为:8MB/4KB=2K 故PPN得位数为:11位 4、17 某页式虚拟存储器共8页,每页1KB,主存容量为4KB,页表如表4、12所示、 表4、12 某页式虚拟存储器得页表 虚页号 实页号 装入位 0 1 2 3 4 5 6 7 3 2 1 2 3 1 0 0 1 1 0 0 1 0 1 0 (1)失效得页有哪几页? (2)虚地址(用十进制数表示)0,3028,1023,2048,4096,8000得实地址分别就是多少? 解:(1)失效得页为:2、3、5、7 (2)虚存空间大小为8*1KB= 8KB,故虚地址为13位,其中虚页号为3位 0: 虚页号为:0 所对应得实页号为:3 页内偏移为:0 故其实地址为(二进制表示):00 ,对应得十进制实地址为: 3*1K+0=3072 3028:(3028)10= (00)2 虚页号为:2 所对应得实页号为:1 故其实地址为:(00)2= 1988 1023:11) 虚页号为:0 所对应得实页号为:3 故其实地址为:(11)2= 3*1K+1023=4095 2048: (00)2 虚页号为:2 所对应得实页号为:1 但由于装入位为零,故该页不在虚存中。 页内偏移地址为:0 故其实地址为:1*1K+0=1024 4、18某计算机系统中有一个TLB与L1级数据Cache,存储系统按字节编址,虚拟存储容量为2GB, 主存容量为4MB,页大小为128KB,TLB采用四路组相联方式,共有16个页表项、Cache容量为16KB,每块包含8个字,每字32位,采用四路组相联,块大小为4B,共32行、参照图4、51所描述得页式虚拟存储系统中TLB与Cache命中时详细得存储访问过程,回答下列问题: (1)虚拟地址中哪几位表示虚页号?哪几位表示页内偏移地址?虚页号中哪几位表示TLB标记?哪几位表示TLB索引? (2)物理地址中哪几位表示物理页号?哪几位表示偏移地址? (3)为实现主存与数据Cache之间得组相联映射,对该地址又进行怎样得划分? 解:(1)虚拟存储得页面数为:2GB/128KB=16K,故虚页号得位数为:14位 由于页大小为128KB,故页内偏移地址得位数为17位 所以虚拟地址得高14位表示得就是虚页号,低17位表示得就是页内偏移地址 TLB采用四路组相联方式,共有16个页表项,所以索引需要2位,故虚拟页号得高12位为TLB标记,低2位为TLB索引 (2)物理内存中包含得页数为:4MB/128KB=32,故物理页号占5位,页内偏移地址得位数为17位 所以物理地址中高5位表示物理页号,低17位表示页内偏移地址 (3)主存容量为4MB,访问该主存需要22根地址线,块大小为32B,故块内字节偏移地址为5位, Cache采用四路组相联,Cache共分成16KB/32B = 512个组,故索引字段需要9位,剩下得22—5-9 = 8位为标记. 则主存地址划分如下: 17 主存组号(标记) 组内块号(索引) 块内地址 8 9 5 4、19某磁盘存储器共有6个记录面,盘面内圈直径为1英寸,外圈直径为5英寸,道密度为50TPI,位密度为 2000BPI,转速为 3000r/min,平均找道时间为 10ms。试问: (l)该存储器得存储容量就是多少? (2)平均存取时间就是多少? (3)共有多少个圆柱面? (4)数据传输率就是多少? (5)如果某文件得长度超过了一个磁道得容量,其超过部分应记录在同一记录面上,还就是记录在同一回柱面上? 解:(l)该磁盘存储器6个记录面,最外两个记录面不记录内容,则该磁盘驱动器得总磁道数为:[(5-1)/2]*50TPI*4=400 由于位密度一般指磁盘内圈上得信息记录密度,故每个磁道得存储位数为: 3、14*2000BPI=6280位 则该磁盘存储器得存储容量为:400*6280/8=306KB (2)磁盘转半圈用时:60s*0、5/3000r/min=10ms 平均存取时间就是:10ms+10ms=20ms (3)圆柱面得个数为:[(5—1)/2]*50TPI=100 (4)该磁盘得最大数据传输率:3000*6280/(60*8) =38KB/s (5)记录在同一柱面上,这样可以省掉一次寻道时间、 4、20 写入代码为011001,画出RZ,NRZ,PE与FM制记录方式得写电流波形。 解: 0 1 1 0 0 1 RZ NRZ PEFM ?第五章 指令系统 习 题 五 5、1解释下列名词 指令 指令系统 操作码 地址码 寻址方式 程序计数器PC 有效地址 地址码扩展 CISC RISC 存储器堆栈 寄存器堆栈 基址寄存器 变址寄存器 解:(1)指令:控制计算机执行某种操作(如加、减、传送、转移等操作)得命令称为指令。 (2)指令系统:一台计算机中所有指令得集合称为该计算机得指令系统. (3)操作码:指令中用于控制指令操作性质得字段称为操作码。不同功能得指令其操作码编码不同,如可用0001表示加法操作,0010表示减法操作。 (4)地址码:指令中用于定参与指令操作得操作数得地址或偏移量地址得字段。 (5)寻址方式:寻找指令或操作数有效地址得方法. (6)程序计数器PC:程序计数器就是用于存放下一条指令所在单元得地址得寄存器。 (7)有效地址:表示操作数所在主存单元得物理地址。 (8)地址码扩展:将指令得操作码字段向不用得地址码字段扩展,从而在指令长度不变得情况下支持更多得指令。 (9)CISC:CISC就是复杂指令系统计算机(plexInstructionSetputer)得简称,这类计算机指令系统复杂,寻址方式种类较多,指令执行效率低。 (10)RISC:RISC就是精简指令集计算机(reduced instruction set puter,)得简称,这类计算机指令系统简单,寻址方式种类少,指令执行效率高。 (11)存储器堆栈:以先进后出得方式存储数据,在内存空间开辟堆栈区,该类堆栈容量大,速度慢,栈顶移动而堆栈中得数据不动。 (12)寄存器堆栈:以先进后出得方式存储数据,利用寄存器开辟得堆栈区,该类堆栈容量小,速度块,栈顶不动,出栈与入栈操作设计栈内所有数据得移动。 (13)基址寄存器:基址寻址方式下用于存放基地址得寄存器。 (14)变址寄存器:变址寻址方式下,用于存放变化得地址得寄存器。 5、2 简要回答下列问题 (1)什么叫指令?什么叫指令系统? (2)计算机中为什么要设置多种操作数寻址方式? (3)操作数寻址方式在指令中如何表示? (4)基址寻址与变址寻址得作用就是什么?分析它们得异同点、 (5)RISC处理器有何特点? (6)比较定长指令与变长指令得优缺点。 (7)指令得地址码与指令中得地址码含义有何不同? 解:(1) 指令就是指控制计算机执行某种操作(如加、减、传送、转移等操作)得命令,而一 台计算机中所有指令得集合称为该计算机得指令系统。 (2) 这就是为了在效率与方便性以及寻址空间大小保持平衡。 用于快速访问得寻址方式:立即数寻址、寄存器寻址等 扩大寻址范围得寻址方式:间接寻址、寄存器间接寻址、基址寻址等 便于程序设计灵活性得寻址方式:变址寻址、相对寻址、直接寻址等 既扩大寻址范围,又由利于指令执行速度提高得寻址方式:寄存器间接寻址 另外,多种复合寻址寻址方式使得寻址更加灵活。 (3)由于不同指令可能采用不同得寻址方式获得操作数,因此,一般情况下,指令得格式会进一步细分出寻址方式字段。下图所示得为包含寻址方式字段得单地址指令结构。 OP I D 其中,OP为操作码,I为寻址方式特征码。D为形式地址,或称偏移量。寻址过程就就是把I与D得不同组合变换成有效地址得过程。I与操作数寻址方式相关。 (4) 基址寻址面向系统,主要用于程序得重定位与扩展寻址空间.变址寻址就是面向用户得,主要解决程序循环问题。 两者相同点:在形式上以及计算操作数得有效地址得方法上,变址寻址与基址寻址中就是相似得,都就是把个寄存器得内容加上指令字中得形式地址而形成操作数有有效地址。 不同点:两者有着不同得用途.首先,在采用了基址寻址得计算机系统中,基址就是不变得,程序中得所有地址都就是相对于基地址来变化得。而对于变址寻址来说则相反,指令中得地址字段得形式地址给出得就是一个存储器地址基准,变址寄存器X中存放得就是相对于该基准地址得偏移量。不同得变址寄存器给出得不同得单元。第二,在基址寻址中,偏移量位数较短,而在变址寻址中,偏移量位数足以表示整个存储空间。第三,基址寻址主要就是解决程序逻辑空间与存储器物理空间得无关性,而变址寻址主要就是为了可以编写出高效访问一片存储空间得程序. (5) RISC具有如下特点:使用等长指令、寻址方式少且简单、只有取数与存数指令访问存储器、指令数量与指令格式少于、指令功能简单、CPU内部设置了大量得寄存器、控制器多采用硬布线方式、大多数指令可在一个时钟周期内完成、支持指令流水并强调指令流水得优化使用. (6) 定长指令得优点:定长指令具有结构规整,有利于简化硬件,尤其就是指令译码部件得设计。 定长指令得缺点:定长指令平均长度长、容易出现冗余码点与指令不易扩展等不足。 变长指令得优点:变字长指令结构灵活,能充分利用指令中得每一位,所以指令码点冗于少,指令得平均长度短,易于扩展。 变长指令得缺点:变长指令得格式不规整,不同指令得取指时间可能不同,导致控制复杂。 (7) 指令得地址码通常指定参与操作得操作数得地址.指令中得地址码字段得作用随指令类型与寻址方式得不同而不同,它可能作为一个操作数、也可能就是操作数得地址(包括操作数所在得主存地址、寄存器编号或外部设备端口地址)、也可能就是一个用于计算地址得偏移量。 5、3 根据操作数所在得位置,指出其寻址方式(填空) (1) 操作数在指令中为(A)寻址方式。 (2) 操作数地址(主存)在指令中为(B)寻址方式. (3) 操作数在寄存器中为(C)寻址方式。 (4) 操作数地址在寄存器中为(D)寻址方式。 解:A:立即数寻址 B:直接寻址 C: 寄存器寻址 D: 寄存器间接寻址 5、4 某计算机字长16位,运算器16位,有16个通用寄存器,8种寻址方式,主存64