时间单位:s ms μs ns 依次相差1000倍
1.移码和补码的关系:同一数值的移码与补码符号位相反,其它各位相同;故0的移码和补码表示形式唯一。
2. 在虚拟存贮器中,当程序正在执行时,由____完成地址映射。
A.程序员 B.编译器 C.装入程序 D.操作系统 答案:D
程序在系统中运行,须经过以下步骤。
如C语言编译出main.c file1.c file1.h等,在链接前一步生成了file1.o等目标模块(都是逻辑地址从0开始的东东),把这三个目标模块和libc和库文件【链接】成一个可执行文件。
3.挂接在总线上的多个部件 只能分时向总线发送数据,但可同时从总线接收数据。
4.若阶码为三位,用补码表示;尾数7位,用原码表示,其中一位为符号位;以2为底,则十进制数27/64的浮点规格化数是
C.1110110110
解析:首先排除A、D,它们非规格化,因为规格化的原码,最高数值位为1。27/64的原码表示:0.0110110=0.110110×2-1。左移一位成规格化数。阶码用补码:111。
5. 数位每左移1位相当于原数乘以2,为防止左移操作造成溢出,补码左移的前提条件是:其原最高有效位
A.为0 B.为1 C.与原符号位相同 D.与原符号位相异 答案: C
解析: 补码表示时,最高数位为“0”时是有效位、为“1”时是无效位,故算术左移时,最高数位丢“0”,结果出错,而丢“1”,则不对结果产生负面影响。最低数位为“1”时是有效位、为“0”时是无效位,故算术右移时,最低数位丢“1”,影响精度,而丢“0”,则不对结果产生负面影响。
【补码从低位到高位找到的第一个1的左边均与反码相同,该1的右边均与原码相同】
PS:补码左移溢出的判断依据是,当符号位与最高数值位不同时,左移会溢出。 举例:补码1011即原码为1101(十进制为-5),而补码左移1位补码变成1110即原码为1010(十进制为-2);而如果补码1100即原码为1100(十进制为-4),而补码左移1位补码变成1000(十进制为-8)
6. 实现N位(不包括符号位)补码一位乘时,乘积为 位(2007年 西安电子科技大学)
A.N B.N+1 C.2N D.2N+1 答案:D
解析:补码一位乘法运算过程中一共向右移位N次,加上原先的N位,一共是2N位数值位,因乘积结果加上符号位,故共2N+1位
海明码是一种多重奇偶校验码,原理是在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错位,还能指出错位的位置,为自动纠错提供依据。
根据纠错理论得 L-1=D+C且D≥C
即编码最小码距L越大,其检测错误的位数D越大,纠正错误的位数C也越大,且纠错能力恒小于检错能力。
例:在n=4,k=3时,求1010的海明码
解:
设n为有效信息的位数,k为校验位的位数,即信息位n和校验位k应满足
n+k ≤ (2的k次方)-1 [若要检错两位错,则需再增加1位校验位,即k+1位]
海明码位数为n+k=7≤2^3-1成立,则n,k有效。设信息位为D4D3D2D1(1010),共4位,校验位为P3P2P1,共3位,对应的海明码为H7 H6 H5 H4 H3 H2 H1 .
规定校验位Pi在海明位号为2^(i-1)的位置上,其余各位为信息位,因此有:
P1的海明位号为2^(i-1)=2^0=1,即H1为P1
P2的海明位号为2^(i-1)=2^1=2,即H2为P2
P1的海明位号为2^(i-1)=2^2=4,即H4为P3
将信息位按原来的顺序插入,则海明码各位的分布如下:
H7 H6 H5 H4 H3 H2 H1
D4 D3 D2 P3 D1 P2 P1
每个数据位用多个校验位进行校验,但要满足条件:
被校验数据位的海明位号等于校验该数据位的各校验位海明号之和。另外,校验位不需要再被检验,分组形成的校验关系如下:
校验位Pi的值为第i组(由该校验位校验的数据位)所有位求异或。
根据(3)中的分组有
1010对应的海明码为1010010,红色为校验位,其他为信息位。
每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查,构成k个校验方程:
若S3S2S1的值为000,则说明无措,否则说明出错,且这个数就是错误位的位号,如S3 S2 S1=001,则说明第一位出错,即H1出错,直接将该位取反就达到了纠错的目的。
假定用若干个8K*4位芯片组成一个基地址为0的地址连续的64K*8位存储器,则主存地址3020H所在芯片的最小地址是 (中国科学院大学2017年) B. 2000H
解析:用3020H除以8K,得到的余数就是所在芯片,再看所在芯片的起始地址即可,根据(64K*8)/(8K*4)=16,需要16块芯片,但是注意片选位不是4位。由于小芯片是8K即13位,存储器为64K即16位,因此前三位用作片选;由于64K=2^16,所以16位地址的前四位为片选,3020H的二进制位为0011 0000 0010 0000,后13位全部取0即可得到该主存地址所在芯片的最小地址 0010 0000 0000 0000,即2000H。
(1)在浮点机中,设尾数采用双符号位,当补码运算结果的尾数部分不是规格化的形式应进行规格化处理,当尾数符号位为 时,需要右规。(哈尔滨工业大学 2007年)
A.00 B.10 C.11 D.01或10 答案:D
解析:运算结果两符号位不等,表示尾数之和绝对值大于1,需右规,即将尾数之和向右移一位,阶码加1。
(2)IEEE754浮点数C1E00000表示的真实的数是 (北京科技大学 2013年)
A. -7B. -28C. -14D. 14 答案:B
解析:(1 1000 0011 110 0000 0000 0000 0000 0000)2
符号S=1为负;指数用移码表示:1000 0011,即131-127=4;
尾数为110 0000 0000 0000 0000 0000 B;即完整的基数为1.11。指数为4,即小数点右移4位,为11100。
(11100)2=(0001 1100)2=(1C)16=(16+12)10=(28)10【注此处要将原码补充完整为8位,前面填充0】又符号位为负,所以最终为-28。
注:符号扩展
正数,填充原符号位;
负数,若原码则填充符号位;若补码则整数填充1、小数填充0;若反码则(原符号位移到新符号位,其余填充1)。
存储周期:连续启动两次读或写操作所需最小的间隔时间。
· 存取时间:指的是CPU读或写内存内数据的过程时间。
· 存储时间:属于存取时间的存操作数据的过程时间。(注意和存取时间的区分)
(1)指令字长=存储字长的前提下,取指周期=机器周期(=间址周期=执行周期=中断周期)
错误选项举例:指令字长=机器(错在机器字长)字长的前提下,取指周期=机器周期。
这里注意【机器字长】是计算机一次整数运算能处理的机器位数,通常也把一次总线事务访问主存或I/O的时间定为一个机器周期。
(2)如果指令字长=2 × 存储字长,则需要2次访存,取指周期=机器周期×2
(3)取指字长取决于操作码的长度、操作数地址的长度和操作数地址的个数,但是为了硬件设计方便,指令字长一般取字节或存储字长的整数倍。
(4)【408真题】若某计算机最复杂指令的执行需要完成5个子功能,分别由功能部件A~E实现,各功能部件所需时间分别为80ps、50ps、50ps、70ps和50ps,采用流水线方式执行指令,流水线寄存器延时为20ps,则CPU时钟周期至少是(100ps)
【解析】指令流水线的每个流水线时间单位为时钟周期,题中指令流水线的指令需要用到A~E五个部件,所以每个流水段时间应取最大部件时间80ps,此外还有寄存器延时20ps,则CPU时钟周期至少是100ps。
第一种是程序查询方法,依靠CPU 不断的执行查询指令等进行数据传输。
第二种是中断方式,通过CPU 执行中断处理程序(软件)完成数据的传输,但中断处理需要硬件。
第三种是DMA 方式,通过在内存和设备之间开设一条专用的数据通路,通过这个数据通路完成数据的传输,利用硬件实现数据传输,在数据传输过程中不需要CPU干预,传输完毕后,要进行数据校验等工作时,DMA部件会发出一个中断,请求CPU进行后续工作。
第四种是通过通道方式,DMA方式需要CPU来控制传输的数据块大小、传输的内存位置,而通道方式中这些信息是由通道控制的,通道程序(软件)控制数据交换。(每个DMA控制器对应一台设备与内存传递数据,而一个通道可以控制多台设备与内存的数据交换,总之通道相当于一个弱鸡版CPU。)
第五种是IO 处理机。
其中DMA 是完全依靠硬件完成数据的传输;中断和通道是依赖软件与硬件;程序查询方式完全采用软件实现。
中断方式中,若准备数据的时间小于中断响应和中断处理的时间,则数据会被刷新,造成丢失。
1 | 将程序分成固定大小的页 | 将程序分成不同的段 |
2 | OS负责实现 | 编译器负责实现 |
3 | 速度快 | 速度比分页慢 |
4 | 针对OS | 针对用户 |
5 | 有内部碎片 | 有外部碎片 |
6 | 逻辑地址分为页号和页内偏移量 | 逻辑地址分为段号和段偏移量 |
7 | 页表 | 段表 |
8 | 页表项拥有一些用于表示页细节的bit | 段表项有一些用于保护位。 |
页是信息的物理单位。分页的主要目的是为了实现离散分配,提高内存利用率。分页仅仅是系统管理上的需要,完全是系统行为,对用户是不可见的。段是信息的逻辑单位。分页的主要目的是更好地满足用户需求。一个段通常包含着一组属于一个逻辑模块的信息。分段对用户是可见的,用户编程时需要显式地给出段名[高级语言里编译器会干这件事]。
页的大小固定且由系统决定。段的长度却不固定,决定于用户编写的程序。
分页的用户进程地址空间是一维的,程序员只需给出一个记忆符即可表示一个地址。分段的用户进程地址空间是二维的,程序员在标识一个地址时,既要给出段名,也要给出段内地址。
首先,页式存储是一维的,段式存储是二维的。其次,这是两种存储管理的设计初衷决定的,跟逻辑地址的结构没有关系。在程序员的角度,若想操作一个内存地址, (1)页式存储,你直接给一个逻辑地址即可,所以是一维的。虽然这个逻辑地址包含(页号,偏移量),但是,分页那是系统自己完成的事,我们不知道也不用关心最终地址到底在哪个页上。(2)段式存储,你必须给出(段号,偏移量),所以是二维的。因为分段的好处就是程序模块化,不同的段权限不同,所以在哪个段上,是我们关心的。段页式只不过是把段式存储中的段内偏移量再用分页的方式管理,同样的,这不是我们关心的。还是给出(段号,偏移量)就能操作想操作的地址。
(上面这句话的低字节(LSB)是指1234的34,LSB又叫最低有效字节)
.将32位数0x12345678按照低字节为字地址存放,则按字节地址由小到大依次存为 78563412
解析:每个十六进制数代表4个二进制位,故每两个十六进制数构成一个字节,作为一个存放单位(如78H构成一个存放单位),又采用以低字节地址为字地址(即小端)的存放方式,故由小到大依次存为78 56 34 12。
大端模式:数据的高字节保存在内存的低地址中,和我们的阅读习惯一致;
小端模式:数据的高字节保存在内存的高地址中。
CPU的结构中没有地址译码器。地址译码器在主存中。地址译码器的作用就是用来接收CPU 送来的地址信号并对它进行译码,选择与此地址码相对应的存储单元,以便对该单元进行读/写操作。注意和指令译码器区分,指令译码器是控制器的一部分,属于CPU一部分,仅仅对操作码进行译码。
ALU只能有一个输入端可与总线相连,另一输入端需通过暂存器与总线相连
解析:由于ALU是一个组合逻辑电路,故其运算过程中必须保持两个输入端的内容不变,又由于CPU内部采用单总线结构,故为了得到两个不同的操作数,ALU的一个输入端与总线相连,另一个输入端需通过一个寄存器与总线相连;此外,ALU的输出端也不能直接与内部总线相连,否则其输出又会通过总线反馈到输入端,影响运算结果,故输出端需通过一个暂存器(用来暂存结果的寄存器)与总线相连。
(1)已知[x]补,求[-x]补,即[x]补连同符号位在内每位取反,末位+1,即可得到[-x]补。
------------------------上条规则【千万】不要和第25条混淆:正补码变负补码:如25=0001 1001B(就是将25写成二进制形式),变成-25的方法是:将上面的数从右往左看,从第一个1左边的数字起(包括该数字)往左,全部取反(无加1)。
------------------------记录个SB错误:把2^6错误写成10 0000了(应该是6个0),SBSBSB
(2)[x-y]补=[x+(-y)]补=[x]补+[-y]补,即[x-y]补=[x]补+[-y]补。
(3)大多数计算机系统都x采用补码表示机器数。
补码可方便解决补码数的扩充问题,因在补码表示中,全1表示-1,所以对负数补码进行扩充,可以直接补符号位,如1001扩充成8位,可以写成11111001,0111扩充成8位,可以写成00000111。
某计算机字长为8位,其CPU中有一个8位加法器。已知有符号数x=-69,y=-38,现要在该加法器中完成x-y的运算,则该加法器的两个输入端信息和输入的低位进位信息分别是 。(中国科学院大学 2018)
C.1011 1011,0010 0101,1 答案: C
解析: 考察加法器。加法器执行减法操作的过程是将减法转換为加法,且执行补码运算。
X=[-69]10=[-100 0101]2=[1100 0101]原=[1011 1011]补
Y=[-38]10=[-010 0110]2=[1010 0110]原=[1101 1010]补
加法器对减法的处理是把减数求反,然后输入端的低位进位信号置1。
所以加法器的两个输入端的输入信号分别为1011 1011和0010 0101,且低位进位为1。
参考2017真题(https://blog.csdn.net/qq_35812205/article/details/108005393)
虽然i和n均unsigned型,但这里是cmp指令的计算机内部比较功能,即用到补码加减法运算器。
总之,无符号数的减法是用补码的【x-y】补=【x】补+【-y】补运算的。
磁盘存储器格式化容量=每道扇区*扇区容量*总磁道数(柱面数)*记录面
物理位置的确定依靠(柱面号,盘面号/磁头号,盘区号)
若磁盘转速为7200 转/分,平均寻道时间为8ms,每个磁道包含1000 个扇区,则访问一个扇区的平均延迟时间大约是 。(西安电子科技大学 2015年)B. 12.2ms
解析:存取时间 = 寻道时间 + 延迟时间 + 传输时间。存取一个扇区的平均延迟时间为旋转半周的时间,即为(60/7200)/2=4.17ms ,传输时间为(60/7200)/1000=0.01ms(此处是将0.008ms四舍五入) ,因此访问一个扇区的平均存取时间为4.17+0.01+8=12.18ms ,保留一位小数则为12.2ms。
【延迟时间】磁头定位到一个扇区的时间,即旋转半轴的时间
【传输时间:先求一圈的时间,一圈(一个磁道)又包含1000个扇区,求的一个扇区对应时间即传输时间】
解析:按字节编址,块大小为4 × 32bit=16B ,则“字块内地址”占4 位;“能存放4K 字数据的Cache ”即Cache 的存储容量为4K 字(注意单位),则Cache共有1K=2^10个Cache 行,则Cache 字块标记占10 位;则主存字块标记占32 - 10 - 4=18 位。
Cache的总容量包括:存储容量和标记阵列容量(有效位、标记位、一致性维护位和替换算法控制位)。标记阵列中的有效位和标记位(主存字块标记)是一定有的,而一致性维护位(脏位)和替换算法控制位的取舍标准是看题眼,题目中,明确说明了采用写回法,则一定包含一致性维护位,而关于替换算法的词眼题目中未提及,所以不予考虑。
从而每个Cache 行标记项包含18+1+1=20 位,则标记阵列容量为:2^10*20 位=20K 位,存储容量为:4K*32 位=128K 位,则总容量为:128K+20K=148K 位。
PS:写回法:当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。这种方法减少了访存次数,但存在不一致的隐患。每个Cache行必须设置一个标志位(脏位),反映该块是否被CPU修改过。
举例:(二路组相联的情况)
【解析】图中看出Cache中每组有2行,因此采用2路组相联映射方式。Cache每行还有1位LRU位(使用LRU替换算法)、1位修改位即脏位(回写策略,根据脏位判断数据是否更新,若脏位为1则需要写回内存)、有效位(指出该Cache行信息是否有效)。28位物理地址中Tag字段占20位,组索引字段占3位,块内偏移地址占5位,因此Cache共有2^3=8组,每组2行,每行共有2^5=32B(注意此处和第一题不同,此题没明确说明数据有多少字,故直接用通过块内地址和组字段计算).
Cache的总容量=标记+数据=2×8×(20+1+1+1)+8×2×32×8b=558B。
组相联映射:组间用直接映射,组内全相联映射。 Cache的组号=主存的块号 mod Cache的组数(mod为求余运算)
主存字块标记 | 组地址(组号) | 字块内地址 |
已知Cache容量为16KB(14位),块内地址为5位,则
(1)直接映射则中间的【组号】为(14-5=9位)
(2)8路组相联映射则中间的【组号】为16KB /(8×2^5B)=2^6,即【组号】6位。
|
微程序控制器 |
硬布线控制器 |
工作原理 |
微操作控制信号以微程序的实行存放在控制存储器中,执行指令时独处即可。 |
微操作控制信号由组合逻辑电路根据当前指令码、状态和时序,即使产生。 |
执行速度 |
慢 |
快 |
规整性 |
较规整 |
繁琐、不规整 |
应用场所 |
CISC CPU |
RISC CPU |
易扩充性 |
易扩充修改 |
困难 |
(1)若指令系统中具有n种机器指令,则控制存储器中的微程序数至少是n+2个(增加的1个为公共的取指微程序,另1个为对应中断周期的微程序)
DRAM 动态随机存取存储器(Dynamic Random Access Memory,DRAM)随机存取存储器,要电容经常周期性地充电,否则无法确保记忆长存。由于这种需要定时刷新的特性,因此被称为“动态”存储器。相对来说,“静态”存储器只要存入数据后,纵使不刷新也不会丢失记忆。
DRAM和SRAM都是随机存储器(断电后信息丢失)。
1级中断的屏蔽字为1101,代表它可以屏蔽除3之外的其他所有中断
将十进制数-0.75转换为IEEE754的单精度浮点数格式表示。
注意上图中的【126】是写出其二进制。(这里要搞清楚移码和真值相差127)
(阶码中0和255都是非正规阶码即(1)(2)(4)(5)点)
(1)E=0且M=0,则真值为0
(2)E=0且M≠0,为非规格化数,真值=(-1)^s × 0.M×2^(-126)
阶码部分表示为0-127+1=-126(注意这里要+1);尾数部分隐含的数为0,即尾数为0.xxxx
(3)1≤E≤254时,真值=(-1)^s ×1.M×2^(E-127)【“正常”情况float】
(4)E=255且M≠0时,真值为"NaN"(非数值)
(5)E=255且M=0时,真值为正无穷或负无穷(看符号位)
PS:非规格化浮点数参考(https://blog.csdn.net/i6223671/article/details/88312191)
求A+B时,进位输出为1则CF=1;进位输出为0则CF=0
求A-B时,进位输出为1则CF=0;进位输出为0则CF=1;
----------------------------------------------------------------------------------------
溢出标志位OF为1时,表示溢出,说明寄存器中的内容不是真正的结果;
符号标志位SF为0时,表示结果为正数(溢出标志为1,说明符号标志有错);
进位标志位CF为1,仅表示加法器最高位有进位,对运算结果不说明什么。
这里的A大于B,就像下图的5-3(补码形式,[x-y]补=[x]补+[-y]补,可结合第16点复习)一样,其实进位输出是1(注意不要理解成十进制那种大数-小数“没有进位”)所以CF=0。
假设有2个整数x和y,x=-68,y=-80,采用补码形式(含1位符号位)表示,x和y分别存放在寄存器A和B中。还有2个寄存器C和D。A,B,C,D都是8位的寄存器。下列回答要求最终用用十六进制表示二进制序列:
(1)寄存器A和B的内容分别是什么?
【解析】x=-69=-100 0100,则[-68]补=1011 1100=BCH,因为y=-80=-101 0000,则[-80]补=1011 0000=B0H,寄存器A和B中的内容分别是BCH,B0H
(2)x和y相加后的结果存放在寄存器C中,寄存器C中的内容是什么?
【解析】[x+y]补=[x]补+[y]补=1011 1100 +1011 0000=1 0110 1100=6CH,所以寄存器C中的内容是6CH,其真值为108.此时溢出标志位为1,表示溢出,即说明寄存器C中的内容不是真正的结果;符号标志位SF为0,表示结果为正数(溢出标志位1,说明符号标志有错);进位标志位CF为1,仅表示加法器最高位有进位,对运算结果不说明什么。
(3)x和y相减后的结果存放在寄存器D中,寄存器D中的内容是什么?此时溢出标志位OF是什么?符号标志位SF是什么?进位标志位CF是什么?
【解析】[x-y]补=[x]补+[-y]补=1011 1100 +0101 0000=1 0000 1100=0CH,最高位前面的一位被丢弃(取模运算),结果为12,所以寄存器D中的内容是0CH,其真值为12.此时溢出标志位OF为0,表示不溢出,即寄存器D中的内容是真正的结果;符号标志位SF为0,表示结果为正数;进位标志位CF为1,仅表示加法器最高位有进位,对运算结果不说明什么。
注:产生进位不一定代表溢出。(第三小问就是一个典型例子)
题:已知一段程序首行代码虚拟地址为 0040 1020 H,其机器指令为55 4D F4;最后一行代码的虚拟地址为0040 107F,其机器指令为 C3 D4 58 ,求程序代码总容量。
正解:0040 107F H +2 - 0040 1020 H +1 =0000 0062 H=98B
错解:0040 107F H - 0040 1020 H +1 =0000 0062 H=96B
假设寄存器为8位,用补码形式存储机器数,包括一位符号位,那么十进制数-25在寄存器表示为: (杭州电子科技大学 2012年)D. E7H 答案:D
解析:25=0001 1001B(就是将25写成二进制形式),变成-25的方法是:将上面的数从右往左看,从第一个1左边的数字起(包括该数字)往左,全部取反。对0001 1001B,从右往左看,第一位是1,不变;从第二位起(包括该位)往左,全部取反,就变成了1110 0111B,即E7H。
PS:负补码变正补码也是同样方法。
不管正数变负数还是负数变正数,都是从低位到高位,从第一个1左边一律取反,得到相反数。如-43,由于43二进制是0010 1011,则-43位1101 0101.
即常规方法:正数变负数,就是取反+1,负数变正数,就是-1取反。
低位交叉编址:可通过流水线并行存取,提高存储器带宽
高位交叉编址:访问一个连续主存块时,总是现在一个模块内访问,等到该模块访问完才转到下一个模块访问,CPU总是按顺序访问存储模块,存储模块不能被并行访问,因而不能提高存储器的吞吐率。
PS:高位多体交叉存储器虽不能满足程序的连续读取,但仍可能一次连续读出彼此地址相差一个存储体容量的4个字(只是这么读的概率较小)。
简单计算题(1):一存储器支持四体交叉存取,某程序执行过程中访问地址序列为3,9,17,2,51,37,13,4,8,41,67,10.请问哪些地址访问会发生体冲突?
【解析】首先将访问地址分别%4得到模块序号。
访问地址 | 3 | 9 | 17 | 2 | 51 | 37 | 13 | 4 | 8 | 41 | 67 | 10 |
模块序号 | 3 | 1 | 1 | 2 | 3 | 1 | 1 | 0 | 0 | 1 | 3 | 2 |
如何判断是否访存冲突:若相邻的4次访问出现同一个模块序号,则后者和前者访存冲突。
简单计算题(2):某计算机字长为32位,存储体的存储周期为200ns。采用四体交叉工作,用低2位的地址作为体地址,存储数据按地址顺序存放。主机最快多长时间读出一个数据字?存储器的带宽是多少?
【解析】因为每个体的存取周期是200ns。四体交叉轮流工作,每2个体间读出操作的延时为1/4个存储周期,理想情况是每个存取周期平均可以读出4个数据字,读出一个数据字的时间平均为200ns/4=50ns.数据字长为32位,数据传输率为32位/50ns=80MB/s
真题选择题(3):
某计算机主存按字节编址,由4个64M×8位的DRAM芯片采用交叉编址方式构成,并与宽度为32位的存储器总线相连,主存每次最多读写32位数据。若double型变量x的主存地址为804 001AH,则读取x需要的存储周期是(3)
【解析】由于double型变量是8B,而一个DRAM一次存取8位,所以读取x要8次DRAM(8条流水线),根据流水线图可知存取时间一共需要T+T+3T/4,但又因为double型变量x的主存地址为804 001AH的最低2位为10,说明它从编号为2的芯片开始存储(从0开始编号),因此至少需要3个存储周期(2,3;0,1,2,3;0,1)。
指令执行过程中需要访问主存时,CPU首先把被访问单位的地址送到MAR中,然后通过地址线(单向)将主存地址送到主存中的地址寄存器,以便地址译码器进行译码选中相应单元,同时CPU将读写信号通过控制线送到主存的读写控制电路(见下段)。
如果是写操作,那么CPU同时将要写的信息送到MDR中,在读写控制电路的控制下,经数据线(注意是双向的)将信号写入选中的单元;如果是读操作,那么主存读出选中单元的内容送到数据线,然后送到MDR中。
数组A[0]首地址为2000H,经过循环结构和变址寻址访问数组A元素,若某次循环所取元素为2100H,则此时变址寄存器内容为( 32):2100H-2000H得到100H,代表地址变化了100H(十六进制)个内存单元(假设题目为按字节编址),则100H化为十进制256,再用256B/8B=32即现在的数组元素下标。
常见的数据类型大小:double和char(8B) int(4B) short(2B)
【两者联系】接口是主机和外设的交接界面;
端口指接口电路中可以进行读/写的寄存器,若干端口+相应的控制逻辑=接口。
PS:上图(王道的)的地址线疑误(应为单向),下图颜值高点==
外设和接口一侧的数据传送分为并行接口(一个字节/字的所有位同时传送)&串行接口(一位一位地传送);另外如果是主机和接口一侧的数据传送则一定是并行传送。
PS:I/O控制器,又称I/O接口,又称设备控制器。
指接口电路中可被CPU直接访问寄存器。之所以能被CPU访问是因为有端口地址(统一编址/独立编址)。端口分为数据端口、状态端口和控制端口。
判断命题:I/O端口中CPU可以访问的寄存器称为I/O接口(正确)
I/O指令实现的数据传送通常发生在(通用寄存器和I/O端口之间):I/O指令时CPU发出的,而AB选项和CPU没有关系,对于B选项注意CPU和I/O设备工作方式速度不匹配,所以需要有I/O接口作为“中介”。
.系统总线中地址线的功能是用于选择 。(北京科技大学 2014年)
A.主存单元 B.I/O端口 C.磁盘数据块 D.A或B 答案:D
解析:地址总线既可用于选择主存单元,也可用于选择I/O端口;磁盘通过磁盘控制器与主机相连,故系统总线中的地址线只能用来选择磁盘控制器中的端口,而不能用来选择磁盘数据块。
注意:间址寻址第一次访存得到的【操作数的有效地址】通过数据总线送到CPU。另外,突发(猝发)传送是一次传输一个地址和一批地址连续的数据,提高设备的吞吐量。另外,接口和外设的状态信息、I/O接口的命令字&状态字也通过数据总线从I/O接口发往CPU。
控制总线包括时序信号、I/O设备和存储器的相应信号等(一般说时钟周期不变,则控制信号不变)。
CPU判断取出的是指令还是数据
指令在取指时,CPU通过访问存储器可将指令取出,在执行时,CPU访问存储器将操作数取出。
主存判断信息是地址还是数据
总线的类型(地址总线上传输地址,数据总线上传输数据)
【拓展】I/O指令实现的数据传送通常发生在( )
A.I/O设备和I/O端口之间 B.通用寄存器和I/O设备之间
C.I/O端口和I/O端口之间 D.通用寄存器和I/O端口之间
【解析】I/O指令是CPU发出的,AC选项和CPU无关,不选。I/O端口是CPU与设备之间的交界面。主机和I/O设备的工作方式和工作速度有很大差异,I/O端口充当“中介”。在执行一条指令时,CPU使用【地址总线】选择所请求的I/O端口,使用【数据总线】在CPU寄存器和端口之间传输数据。
单CPU中所有指令的指令周期为一个时钟周期(即一个时钟周期内完成一整条指令,即只能把CPU周期拉长,时钟频率降低)。
单周期CPU要配合多个部件在一个周期内完成一条指令,所以要配合多总线结构(单总线结构不支持并发传送,即只能有一个部件争用总线);反之,单总线要配合多周期CPU(一个时钟周期内只能完成一个部件的工作,而完成一条指令需要多个部件协调).
(1)时钟信号不变,控制信号即指PC中操作(每次自动加1即可),所以指令执行中控制信号大体不变。
(2)一个周期内
附:多周期CPU
即一条指令分为多个时钟周期。分为【不定长的机器周期】(耗时短的要向耗时长的阶段看齐即要满足最慢的来执行,另一种方法是给短的填充成等长)&【定长的机器周期】。
奇偶校验码(指data和校验位两坨中1的个数为奇数的码)只能测出奇数位错误,不能测出偶数位错误。
【例题】设在数据传送中采用偶校验,若接收到代码为10111011,则表明传送中
C.未出现错误或出现偶数位错 答案:C
解析:偶校验只能发现一位错,但不能确定是哪一位错,不能纠错,当码字中出现偶数位错时,码字中“1”的个数仍是偶数,所以不能发现错。题中码字“10111011”中“1”的个数是6为偶数,所以有可能是未出现错误或者出现了偶数位错误。
补码浮点数加减法判断溢出3种方法(口诀:大同社会—不溢出):
(408真题)减法指令“sub R1,R2,R3”的功能为“(R1)-(R2)->(R3)”,该指令执行后将生成进位/借位标志CF和溢出标志OF。若(R1)=FFFF FFFFH,(R2)=FFFF FFF0H,则该减法指令执行后,CF和OF分别为多少( )
A.CF=0,OF=0 B.CF=1,OF=0 C.CF=0,OF=1 D.CF=1,OF=1 答案:A
解析:[x]补-[y]补=[x]补+[-y]补,[-R2]补=0000 0010H,[R1]补+[-R2]补 相加的结果中符号位的进位和最高数位的进位相同(若不同则表示溢出),可以判断溢出表示OF为0。减法操作只需判断借位标志,R1大于R2,所以借位标志为0。
根据IMUL指令的规定,如果结果的高一半的所有位,与低一半的第一位相同,则OF=CF=0,如果不相同,则OF=CF=1。详细参考(https://zhidao.baidu.com/question/77188082.html?qq-pf-to=pcqq.c2c)
【若乘积的高33位为非全0或非全1,则OF=1】(2019年计组大题第四问考了这个)
(1)【mov指令】内存和寄存器直接移动data。将第二个操作数(寄存器/内存/常数值)
(2)【STA指令】把寄存器的内容写入指令的内存单元。如STA X(X为主存地址):隐含寻址,将ACC内容写入主存X。
push、pop
add、sub、inc/dec、imul、idiv、and/or/xor、neg、shl/shr
jmp、jcondition/jle、call/ret(call保存调用之前的地址信息,ret实现子程序的返回机制)