WORD格式.分享
45.
char function(char a[],int n) { }
if (count >n/2)
return mainElement; return '\\0'; else
for (int i=1;i count = 0; for (int i=0;i if (a[i] == mainElement) count++; if (a[i] == mainElement) count++; else { } count--; if (count == 0) { } mainElement = a[mainSub++]; count++; int count = 0; int mainSub = 0; char mainElement = a[0]; count++; 46. (1)Cache地址为:组号13位、组内块号2位、块内地址5位。则Cache有2的13次方个组=8192个组。 主存地址为:区号14位、区内块号13位、块内地址5位。Cache行由目录表项和数据区两部分,目录表项位数为:14+2(LRU位)+1(标记位)+1(写回法脏位)=18位。 数据区为32*8位=256位。则Cache行大小至少有18+256=274位。 (2)0000 0000 0100 0110 0011 0000 0101 0000,则10 0011 0000 010为命中组号,Cache行标记字段的值为0000 0000 0100 01 精品.资料 WORD格式.分享 (3)A[i]+=A[i+1]等价于A[i]=A[i]+A[i+1],则一次循环需要访问主存三次。 for(i=0;i<512;i+=2)可得循环次数为512/2=256次,则该程序段共访存256*3=768次。由sizeof(int)=4,可得存储一个int型数据需要4B。由一个Cache块大小为32B,可得一个Cache块可以存放32/4=8个int型数据。int A[512]定义了512个int型数据,则存储A[512]共需要512/8=64个Cache块。则命中率为1-64/768=704/768=91.7%。 47. (1)A8H=1010 1000,1010对应为OP2的存数操作,Rs/Rd=10,则源操作数的寻址方式为寄存器寻址。 (2)y=y*8,思路:先将y所在单元存入R0,将R0左移3位,再将R0放入y所在单元 1001 00 00 ;取数操作 0010 0011 ;地址23H,这两步相当于R0←[23H] 1000 01 00 ;赋值操作 0000 0011 ;3,这两步相当于R1←03H 001 0 00 01 ;R0算术左移(R1)位,相当于R0<<(R1) 1010 00 00 ;存数操作 0010 0011 ;地址23H,这两步相当于[23H]←(R0) (3) R2→MAR,1→Read 1T R3→Y, M(MAR)→MDR 2T MDR→ALU,ADD→ALU,ALU→Z 1T Z→R3,1→End 1T 总共需要5个时钟周期 精品.资料
相关推荐: