计算机组成原理 学习笔记

0, 计算机中的K与M以及KB MB

计算机中的K是指2^10, M是2^20; KB是2^10Byte,MB 是2^20Byte. 注意K和KB,M与MB是不同的单位。


0.1, 关于异或 和 同或 的说明

  • 若干个 0 和 1 进行异或运算,最终结果取决于1  的个数, 如果有偶数个1 ,则最终结果为0;如果有奇数个1,则最终结果为1。即总的1是偶数个。
  • 若干个 0 和 1 进行同或运算,最终结果取决于0  的个数, 如果有偶数个0 ,则最终结果为1;如果有奇数个0,则最终结果为0。即总的0是偶数个。

1,

微机原理、计算机组成原理、计算机体系结构的相互关系   https://zhidao.baidu.com/question/917976419381975419.html


2,  指令字长,数据字长,机器字长,存储字长,存储单元

早期的冯.诺依曼计算机,指令字长=数据字长=机器字长,随着计算机的发展,三者变的各不相同,但都必须是字节(8位)的整数倍。

机器字长通常与存储字长一致。主存中的MDR的位数与存储字长是相等的。即:机器字长=存储字长=MDR位数

------------------------

一个指令字中包含二进制代码的位数,称为指令字长度。计算机能直接处理的二进制数据的位数称为机器字长,它决定了计算机的运算精度,机器字长通常与主存单元的位数一致(也就是说,机器字长通常与存储字长一致)。

指令字长度等于机器字长的指令,称为单字长指令;指令字长度等于半个机器字长的指令,称为半字长指令;指令字长度等于两个机器字长的指令,称为双字长指令。例如,IBM 370系列32位机的指令格式有半字长的,单字长的,还有一个半字长的。在Pentium系列机中,指令字长度也是可变的,有8位、16位、32位、64位不等。

使用多字长指令的目的在于提供足够的地址位来解决访问主存任何单元的寻址问题。但是,使用多字长指令的一个主要缺点是必须两次或多次访问主存以取出一整条指令,这样做降低了CPU的运算速度,同时占用了更多的存储空间。

在一个指令系统中,如果各种指令字长度是相等的,就称为等长指令字结构,例如都采用单字长指令或半字长指令。这种指令字结构简单,且指令字长度不变。如果各种指令字长度随指令功能而异,比如有的指令是单字长指令,有的指令是双字长指令,这就称为变长指令字结构。这种指令字结构灵活,能充分利用指令长度,但指令的控制较为复杂。


3,书中例4.3中的答案分析:

在题目中讲到,A0和BHE来控制按字节和按字两种形式访问,也就是说A0是不能用来传地址的,也就是说CPU只有19根地址线来传地址,因此地址总共有2^19种,每种地址代表的是一个存储单元,也就是指向一个存储字。 如果按字访问就可以访问的地址范围是2^19=512K 如果按字节访问,由于CPU有16根数据线,即一个存储单元可以存16位二进制代码,也就是说一个存储单元里有两个字节,所以按字节可以访问的地址范围是2^19 x 2 = 1M. 注意单位是K和M而不是KB和MB!!


4.1, 单体多字系统

个人理解:在一个存取周期内,从同一地址取出4条指令,一个地址当然只能从一个存储单元中取指令或数据,但是假设一组指令或数据 是存放在连续的存储单元中,那么就可以由一个地址取到连续的几个存储单元中的指令或数据。所以这种方法要求指令或数据是连续存放的,否则效果不明显。而且由于一次取出的指令或数据的位数增加,需要 增加 MDR的位数和增加 数据总线的位数。

4, 2多模低位交叉编址 教材P104内容理解    http://blog.csdn.net/u011240016/article/details/53116620

[another quote: ] 这个确实比较难理解。后来通过题目和别的书上看到的,我个人理解是这样,当然仅作参考。

以实际数据为例,这样比较容易理解,比如说某个存储体的有2个存储芯片,每个芯片的存储周期为100ns,如果你去读数据,如果你的数据按照这种放置方法,先放第一个芯片,放满后再放第2个芯片。那么你读数据的过程就是这样:

读0位置数据,等100ns,读1位置数据,等100ns读2位置数据。很容易理解。

但如果你换个方式来放,比如说我0位置是1号芯片起始,1位置是2号芯片起始位置,2位置是1号芯片第2个单元,3位置是2号芯片的第2个单元这样交叉来编址。再回忆存储周期的概念:其实从芯片中把数据读到缓冲区,再从缓冲区读到CPU,这个读的过程非常短,仅仅是个脉冲就可以解决的问题,但由于芯片的物理属性,你读一个芯片后,必须间隔一段时间才能去读。采用交叉编址后,你的读过程就像这样:

读0位置数据到缓冲区,40ns后,CPU取走了数据。这时1号芯片的100ns的周期还没过,不能去读,但幸运的是我们读的不是1号芯片,而是2号芯片,这样,我们就把2号芯片的数据读到缓冲区。过了40ns后,CPU取走数据,此时过去了80ns,我们只需再等20ns就可以继续去读3号位置数据,这样速度就比以前快了很多。

我个人理解,LZ可以仔细查查相关资料。


原文地址:https://www.cnblogs.com/everest33Tong/p/8412193.html