各种字长总结¶
参考了
- 袁春风《计组习题解答》
- 零壹考研
- 408历年真题
袁春风习题解答相关回答:
1.机器字长、编址单位、存取单位、传输单位、指令字长各指什么?它们之间有何关系?
答:在计算机内部,有指令和数据两大类信息。指令和数据都以二进制形式存放在存储器中,运行程序时,需要把指令和数据从存储器读出,通过总线传输到 CPU,然后,CPU再通过执行指令来对操作数进行相应的运算,最后把结果数据送到寄存器或存储器中。所以,在设计或使用计算机过程中,要涉及很多问题,例如
- 指令和数据在存储器中按什么长度存放;
- 写入或读出时按什么长度存取;
- 在总线上传输时同时传送多少位;
- 数据和指令送到CPU后,在 CPU的寄存器中按多少位存放;
- 在运算器中按多少位来运算,等等。
因而,出现了一系列有关信息单位和信息宽度的概念,这些概念非常重要,但比较容易混淆,需要将很多知识和概念联系在一起,才能很好地理解这些概念及其相互之间的关系,
它们的定义和关系说明如下。
1. <strong>机器字长</strong>是计算机的一个非常重要的指标。通常称 32位机器或64位机器,就是指机器的字长是 32 位或 64位。一般情况下,<strong>机器字长定义为 CPU 中在同一时间内一次能够处理的二进制数的位数</strong>,<strong>实际上就是 CPU 中定点运算数据通路的位数</strong>。在计算机中“字”的概念经常出现。<strong>一个字的宽度并不等于机器字长</strong>。字作为机器中所有信息宽度的计量单位,对于某个系列机来说,其字宽总是固定的。例如,在80x86系列中,一个字的宽度为16 位,因此,32 位是双字,64 位是四字。在 IBM 303X系列中,一个字的宽度为 32位,所以16 位为半字,32 位为单字,64 位为双字。
2. <strong>编址单位</strong>就是<strong>存储单元的宽度</strong>,指存储器中具有相同地址的若干个存储元件(或称存储元,、存储基元、记忆单元)构成的一个二进制代码的宽度,可以是8位、16位、32 位等。现在大多数计算机<strong>按字节编址,即编址单位为8位</strong>,每一个字节有一个地址。由此可见,<strong>一个数据(如 32 位整数、32 位浮点数或 64 位浮点数等)可能占多个存储单元</strong>,<strong>CPU 要求一次从存储器读出或写入的信息也可能有多个存储单元。</strong>
3. <strong>存取宽度</strong>是指<strong>一次从一个由多个 DRAM 芯片构成的存储模块(即主存)中同时读写的信息的宽度</strong>,例如,假定某个存储模块由8个4096×4096×8位的 DRAM 芯片按交叉编址方式构成,则该存储模块的存取宽度是64位,也即,8个芯片可同时读写,每个芯片同时读8位,因而最多可以同时存取 64 位信息。
(2017)某计算机主存按字节编址,由4个64M×8位的DRAM芯片采用交叉编址方式构成,并与宽度为32位的存储器总线相连,主存每次最多读写32位数据。若double型变量x的主存地址为804001AH,则读取x需要的存储周期数是( )。
A. 1 B. 2 C. 3 D. 4
解答:
该计算机主存由4个64M×8位的DRAM芯片采用交叉编址方式构成,即4体低位交叉编址,低log 4 = 2位为模块编号,即4个模块编号为0, 1, 2, 3,二进制编号为00B, 01B, 10B, 11B。x的数据类型为double,占64位,8个字节,主存按字节编址,所以x占8个地址单元。x的主存地址为804 001AH=1000 0000 0100 0000 0000 0001 1010B,低2位为10B,也就是x从编号为2的模块开始存储。可以画出x的存储布局如下。

存储器总线为32位,每个模块占8位,4个模块正好占32位,每次可以按行存取,并行启动4个模块,主存每次最多读写32位数据,满足要求。x的内容存储在3行中,所以需要执行3次主存读写数据,每次需要一个存储周期,总共需要3个存储周期。
本题选C。
总结
交叉编址多模块存储器可以采用轮流启动或同时启动两种方式。
- 轮流启动:按每隔1/m(m为交叉存储度)个存储周期轮流启动各模块进行读写。如果每个存储模块一次读写的位数(即存储字长)正好等于系统总线中的数据线数(即总线传输单位),则采用轮流启动方式。
- 同时启动:同时启动所有模块进行读写。如果所有存储模考一次并行读写的总位数正好等于系统总线中的数据线数,则可采用同时启动方式。
4. <strong>传输宽度就是总线宽度</strong>,也就是一次最多能在总线上传输的数据位数。对于存储器总线来说,总线上传输的信息宽度应该等于存储器的存取宽度。因此,在设计系统时,应考虑传输宽度和存取宽度的匹配,并且每个设备中的总线接口部件也要与这些宽度匹配。
5. <strong>指令字长</strong>是指<strong>指令的位数。有定长指令字机器和不定长指令字机器</strong>。定长指令字机器中所有指令的位数是相同的,目前定长指令字大多是 32位指令字。不定长指令字机器的指令有长有短,但每条指令的长度一般都是8的倍数。因此,一个指令字在存储器中存放时,可能占用多个存储单元;从存储器读出并通过总线传输时,可能分多次进行,也可能一次读多条指令。
机器字长¶
机器字长指的是计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数,通常与CPU的寄存器位数、加法器有关。因此,机器字长一般等于通用寄存器的大小,字长越长,数的表示范围越大,计算精度越高。计算机字长通常选定为字节(8位)的整数倍。
或者说,我们可以这样理解机器字长:在一个CPU指令集中,每条指令都可以处理长度不同的操作数。这时就把大多数指令能处理的最长长度但是又不花费额外周期的操作数长度称为机器字长。举个例子:大多数指令都能处理8位,16位,32位数据,但是处理32位数据要花费更多的时钟周期,而 处理8位和16位的时间一样,那么就称机器字长是16位。
存储字长¶
一个存储单元的位数,也就是CPU向内存某个地址取数据时一次性取走的数据量。
注意:MDR位数与总线中的数据线宽度相等,与存储字长不一定相等。
(2021)假定计算机M字长为16位,按字节编址,连接CPU和主存的系统总线中地址线为20位、数据线为8位,采用16位定长指令字,指令格式及其说明如下:
其中,op1~op3为操作码,rs、rt和rd为通用寄存器编号,R[r]表示寄存器r的内容,imm为立即数,target为转移目标的形式地址。请回答下列问题。
(1) ALU的宽度是多少位?可寻址主存空间大小为多少字节?指令寄存器、主存地址寄存器(MAR)和主存数据寄存器(MDR)分别应有多少位?
解析
第一问。ALU的宽度为16位。ALU的宽度是指它能够处理的位数。一般等于机器字长,因为计算机M字长为16位,所以ALU的宽度为16位。
第二问。可寻址主存空间大小为 字节(或1MB)。地址线20位,可表示地址数为
,计算机按字节编址,所以主存空间大小为
×1B=
B=1MB 。
第三问。指令寄存器、主存地址寄存器(MAR)和主存数据寄存器(MDR)各有16位、20位和8位。指令寄存器用于存储指令,指令字长16位,所以指令寄存器有16位。主存地址寄存器(MAR)位数等于地址线位数,地址线为20位,所以MAR有20位。主存数据寄存器(MDR)位数等于数据线位数,数据线为8位,所以MDR有8位。
指令字长¶
一条指令的长度。由于指令的长度可以相等,也可以不相等,所以指令字长可以是固定的,也可以是不固定的。指令可以占用1/2个存储单元、1个存储单元、两个存储单元...我们分别把它们叫做半存储字长指令、单存储字长指令、双存储字长指令...简称半字长指令、单字长指令、双字长指令
机器字长、存储字长、指令字长之间的的长度关系¶
首先来看存储字长和机器字长的关系。机器字长大于等于存储字长,通常是存储字长的整数倍, 最常见的情况是1倍即相等,这样可以充分发挥机器字长的作用,一次性把数据取到CPU中,一次性处理计算。机器字长也可以是存储字长的两倍,四倍,因为能处理64位定点数的CPU当然也能处理存放32位、16位的定点数
接着是存储字长与指令字长的关系。指令字长可以是存储字长的一半,也可以是存储字长的整 数倍,比如1倍,两倍,我们通常把这些指令叫做半存储字长指令、单存储字长指令、双存储字长 指令。
CPU要从内存中取一条双存储字长指令,那就要访问内存两次。指令字长决定了IR寄存器的位数。如果指令字长最大为32位,那么IR寄存器至少需要32位。
指令字长和机器字长的关系¶
如前面所说,指令字长可以是存储字长的0.5, 1, 2倍,机器字长可以是存储字长的1, 2, 4倍, 那指令字长和机器字长是不是有什么关系呢?这里要注意,指令字长和机器字长两者互不影响, 没有任何约束关系,只是恰巧各自与存储字长有倍数关系。因为机器字长强调的是参与ALU运算的操作数位数,而操作数位数显然与指令长度也就是指令字长无关。(有的指令可以没有参与ALU 运算的操作数,甚至没有显式操作数)
