什么是字长(百度百科)

链接:https://baike.baidu.com/item/%E5%AD%97%E9%95%BF

在计算机领域,对于某种特定的计算机设计而言,字(word)是用于表示其自然的数据单位的术语,是用来表示一次性处理事务的固定长度。一个字的位数,即字长,是计算机系统结构中的一个重要特性。字长在计算机结构和操作的多个方面均有体现。计算机中大多数寄存器的大小是一个字长。计算机处理的典型数值也可能是以字长为单位。CPU和内存之间的数据传送单位也通常是一个字长。还有内存中用于指明一个存储位置的地址也经常是以字长为单位的。现代计算机的字长通常为16、32、64位。其他曾经使用过的字长有:8、9、12、18、24、36、39、40、48、60位;slab是早期的另一个字长实例。

计算机采用二进制编码方式表示数、字符、指令和其它控制信息。 [1] 计算机在存储、传送或操作时,作为一个单元的一组二进制码称为字,一个字中的二进制位的位数称为字长

通常称处理字长为8位数据的CPU叫8位CPU,32位CPU就是在同一时间内处理字长为32位的二进制数据。二进制的每一个0或1是组成二进制的最小单位,称为位(bit)。常用的字长为8位、16位、32位和64位。字长为8位的编码称为字节,是计算机中的基本编码单位。

字长与计算机的功能和用途有很大的关系,是计算机的一个重要技术指标。**字长直接反映了一台计算机的计算精度,为适应不同的要求及协调运算精度和硬件造价间的关系,大多数计算机均支持变字长运算,即机内可实现半字长、全字长(或单字长)和双倍字长运算。在其他指标相同时,字长越大计算机的 处理数据的速度就越快。早期的微机字长一般是8位和16位,386以及更高的处理器大多是32位。市面上的计算机的处理器大部分已达到64位。字长由微处理器对外数据通路的数据总线条数决定。

通俗含义

字长是CPU的主要技术指标之一,指的是CPU一次能并行处理的二进制位数,字长总是8的整数倍,通常PC机的字长为16位(早期),32位,64位。

PC机可以通过编程的方法来处理任意大小的数字,但数字越大,PC机就要花越长的时间来计算。PC机在一次操作中能处理的最大数字是由PC机的字长确定的。

我们先来看一下人脑是如何进行计算的,例如5×6则立即可以得到答案是30,但对于55×66,就不可能立即得到正确的答案,这就是说55或66已走出了人脑的“字长”,这是为了得出结果,就必须把复杂的问题(如55×66)分解成易于处理的问题(如55×66可分解为50×60,50×6,5×60,5×6),然后再综合起来,得出结果。

没想到百度百科也能举出这种有意思的例子

同样PC机也是这样处理问题的,一台16位字长的PC机,可以直接处理2的16次方(65536)之内的数字,对于超过65536的数字就需要分解的方法来处理。32位pc机比16位机优越的原因就在于它在一次操作中能处理的数字大,32位字长的PC机能直接处理的数字高达40亿(2的32次方),能处理的的数字越大,则操作的次数就越少,从而系统的效率也就越高。在这里插入图片描述

CPU大多是64位的,但大多都以32位字长运行,都没能展示它的字长的优越性,因为它必须与64位软件(如64位的操作系统等)相辅相成,也就是说,字长受软件系统的制约,例如,在32位软件系统中64位字长的CPU只能当32位用。

固定字长与可变字长

每一个储存位置都可以由其地址找到。但是每一储存位置的长度( length)尚未指定。

在某些计算机中,每一储存位置是由固定的位数所组成的。每当计算机涉及到某一个储存位置时,即表示它要引用此一固定长度的位置,亦称为一个“字” ( word ) 。像此种型态的组织,我们称之为固定字长( fixed word length)或可定址字( word-address-able)。例如典型的迷你计算机,一个字长为16个位。

另一些计算机,它的每个地址所引用是一个位元组或一个字。这种计算机,我们称之为可定址字( character-ddressable )或可定址位元组( byte-addresable )。右图所示即为此种储存体,因为这10个位元组的每一个位元组,皆可个别设定一个位址。
在这里插入图片描述
至于可定址字元的计算机,经常被称为可变字长( variable word length )的机器。

我们之所以称之“可变字长” ,是因为只要利用一个计算机已有的指令(如" add"或"move " ),它就可以去处理字数目为可变的字。但对固定字长的计算机而言,它所处理的字数目是由指合本身所指定的。

在这里插入图片描述
上图所示为固定字长与可变字长储存体组织的比较

图a所示为每字可存4个字元的固定字长组织。注意此种组织中,虽然是每4个字元形成一组,且可赋予一个地址,但是每个个别的字元却不能赋予位址。

在图b的可定址字元或可变字长的组织中,计算机可将其中每一个字赋予一个位址。

例如,在图b ,一个读取字母SANTA的指令,只要指定第一个字元的位址( 001 )及所要读取的字数(5) ,则此5个字元即可被读出。


可变字长组织其主要优点为储存体的使用效率高;即,只需使用与字数一样的位置即可储存该组字(注:如果想储存SANTA这一组字,只需使用5个位置即可)。然而,固定字长的组织可能会有浪费内存空间的现象。例如图a中的第三个字(位址为003 )仅被利用一半,而其另一半则未被使用。


双倍字长

双倍字长是指计算机内部参与运算的数的位数。它决定着计算机内部寄存器、ALU和数据总线的位数,直接影响着机器的硬件规模和造价。双倍字长直接反映了一台计算机的计算精度,为适应不同的要求及协调运算精度和硬件造价间的关系,大多数计算机均支持变字长运算,即机内可实现半字长、全字长(或单字长)和双倍字长运算

数据总线 DB 用于传送数据信息

数据总线是双向三态形式的总线,即他既可以把CPU的数据传送到存储器或I/O接口等其它部件,也可以将其它部件的数据传送到CPU。

**数据总线的位数是微型计算机的一个重要指标,通常与微处理的字长相一致。**例如Intel 8086微处理器字长16位,其数据总线宽度也是16位。需要指出的是,数据的含义是广义的,它可以是真正的数据,也可以指令代码或状态信息,有时甚至是一个控制信息,因此,在实际工作中,数据总线上传送的并不一定仅仅是真正意义上的数据。 [7]

地址总线AB是专门用来传送地址的,由于地址只能从CPU传向外部存储器或I/O端口,所以地址总线总是单向三态的,这与数据总线不同。地址总线的位数决定了CPU可直接寻址的内存空间大小,比如8位微机的地址总线为16位,则其最大可寻址空间为216=64KB,16位微型机的地址总线为20位,其可寻址空间为220=1MB。一般来说,若地址总线为n位,则可寻址空间为2^(n-10)千字节。 [7]

越基本的东西越重要,不要看内存、操作系统、硬盘之间玩的有多花,没有这些什么都不是。硬件是上限,其他优化只是逼近上限?

控制总线CB用来传送控制信号和时序信号。控制信号中,有的是微处理器送往存储器和I/O接口电路的,如读/写信号,片选信号、中断响应信号等;也有是其它部件反馈给CPU的,比如:中断申请信号、复位信号、总线请求信号、限备就绪信号等。因此,控制总线的传送方向由具体控制信号而定,一般是双向的,控制总线的位数要根据系统的实际控制需要而定。实际上控制总线的具体情况主要取决于CPU。

字与字节

字节是寻址的最小单位

字是计算机一次处理数据的最大单位。

最大的寻址空间,是2^字长(如果一个字是64位,那么最大的寻址空间就是2的64次方)。

<think>嗯,用户问的是“按半字长寻址是什么意思”。首先,我需要确定用户对计算机组成原理中的寻址方式有多少了解。可能用户是学生,正在学习这方面的内容,或者是对计算机底层感兴趣的自学者。 首先,“半字长寻址”这个词组,需要拆解来看。字长(Word Length)通常指CPU一次能处理的二进制位数,比如32位、64位。寻址则是访问内存的方式。所以,半字长寻址可能指的是以半字(Half-Word)为单位进行内存寻址。 接下来,要确认半字的定义。通常,字(Word)是CPU处理的基本单位,半字就是字的一半。例如,32位系统中,字是32位,半字就是16位。但不同架构可能有不同定义,需要明确这一点。 然后,寻址方式涉及如何计算内存地址。按半字长寻址可能意味着每个地址对应半字大小的内存单元,而不是字节或全字。比如,如果按字节寻址,每个地址指向一个字节(8位);按半字寻址,每个地址指向16位,地址增量会是2字节。 用户可能想知道这种寻址方式的优缺点和应用场景。比如,某些处理器可能为了效率或兼容性,采用半字寻址。同时,需要解释这种寻址方式对编程的影响,比如地址对齐的问题,访问效率等。 可能用户遇到的实际情况是,在编程或学习中遇到了半字寻址的概念,需要理解其机制。或者是在阅读技术文档时遇到了这个术语,需要进一步解释。 还要注意用户可能的误解,比如将半字长寻址与字节寻址混淆,或者不清楚不同寻址方式之间的区别。需要对比常见的寻址方式,比如字节寻址、字寻址,来突出半字寻址的特点。 此外,需要考虑实际例子,比如某些ARM架构或嵌入式系统是否使用半字寻址,或者在某些特定指令集中如何处理半字数据。这能帮助用户更好地理解概念的实际应用。 最后,确保解释清晰,结构合理,避免使用过多专业术语,或者对术语进行适当解释,帮助用户逐步构建对半字长寻址的理解。</think>### **按半字长寻址的详细解释** #### **1. 基本概念** - **字长(Word Length)**: CPU一次能处理的二进制位数,例如32位系统的字长为32位,64位系统的字长为64位。 - **半字(Half-Word)**: 字长的一半。例如,32位系统中,半字为16位;64位系统中,半字为32位。 #### **2. 按半字长寻址的定义** - **含义**: 内存地址的每个单位对应**半字大小**的数据。例如,在32位系统中: - 按**字节寻址**:每个地址指向1字节(8位)。 - 按**半字寻址**:每个地址指向2字节(16位)。 - 按**字寻址**:每个地址指向4字节(32位)。 - **地址计算**: 若系统按半字寻址,内存地址的步进单位为半字长度(例如16位)。 例如,地址`0x1000`指向第1个半字,地址`0x1001`指向第2个半字(实际物理地址可能相差2字节)。 #### **3. 特点与影响** - **地址对齐**: 若按半字寻址,数据需按半字边界对齐(例如地址必须是偶数)。 **未对齐访问**可能导致性能下降或硬件异常(取决于CPU设计)。 - **效率与兼容性**: - **优点**:适合处理半字数据(如16位整数),减少指令周期。 - **缺点**:与按字节寻址的系统交互时,需额外处理地址转换。 - **实际应用**: 常见于某些嵌入式系统或专用处理器。例如: - ARM架构支持半字(16位)和字节(8位)的混合寻址模式。 - 某些DSP(数字信号处理器)针对半字数据优化寻址逻辑。 #### **4. 示例对比** | **寻址方式** | **地址步进单位** | **适用场景** | |--------------|------------------|---------------------------| | 字节寻址 | 1字节(8位) | 通用计算(如x86、ARM) | | 半字寻址 | 2字节(16位) | 处理16位数据(如音频采样) | | 字寻址 | 4字节(32位) | 32位整数或浮点数操作 | #### **5. 编程注意事项** - **数据存取**: 若需读写半字数据,需使用对应指令(如ARM的`LDRH`/`STRH`)。 ```assembly LDRH R1, [R0] ; 从地址R0加载半字(16位)到寄存器R1 STRH R2, [R3] ; 将R2的半字数据存储到地址R3 ``` - **内存布局**: 在C语言中,可通过`uint16_t`类型操作半字数据,但需确保内存对齐: ```c uint16_t *ptr = (uint16_t*)0x1000; // 假设地址0x1000按半字对齐 *ptr = 0xABCD; // 写入16位数据 ``` #### **6. 总结** - **核心定义**:按半字长寻址指以半字(字长的一半)为最小寻址单位。 - **应用场景**:高效处理16位数据,常见于嵌入式系统或特定硬件优化。 - **关键影响**:地址对齐要求、指令集支持、与字节寻址系统的兼容性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值