多字节数据组织在计算机体系结构中有哪些用途?

有两种常用于多字节数据的组织,例如big-endianlittle-endian。在 big-endian 格式中,值的最重要字节保存在位置 X 中,随后的字节保存在位置 X + 1 中,依此类推。例如,将存储十六进制值 0102 0304H(H 表示十六进制),从位置 100H 开始,如表 (a) 所示。

(a) 大端和 (b) 小端格式的数据组织

内存地址
数据(十六进制)
101
01
102
02
103
03
104
04

(一种)

内存地址
数据(十六进制)
101
04
102
03
103
02
104
01

(二)

在小端,顺序是相反的。最小有效字节保存在位置 X,下一个字节保存在位置 X+1 中,依此类推。表 (b) 中显示的类似小端格式的值。

相同的组织可用于字节内的位。在 big-endian 组织中,bit 0 是一个字节的最右边的 bit,最左边的 bit 是 bit 7。在 little-endian 组织中,最左边的 bit 是 bit 0,bit 7 是右边——最一点。

Endian 组织用于字节和字不会影响 CPU 和计算机系统的性能。只要 CPU 被设计为处理特定格式,两者都不比另一个好。主要问题在于在具有不同字节序的计算机之间传输数据。例如,如果小端组织的计算机将值 01020304H 传输到大端组织的计算机,而未转换数据,则大端组织的计算机将读取值为 04030201H。

某些程序可以将数据文件从一种格式转换为另一种格式,而某些微处理器具有执行转换的特殊指令。多字节字还有另一个需要关注的问题是对齐。现代微处理器一次可以读取多个字节的数据。例如,Motorola 68040 微处理器可以同时读取四个字节。

但是,除了两个最低有效位之外,四个字节必须位于具有相同地址的连续位置。该 CPU 可以同时读取位置 100、101、102 和 103,但不能同时读取位置 101、102、103 和 104。这种情况需要两次读取操作,一次用于位置 100(不需要)、101、102 和 103,另一次104、105(不需要)、106(不需要)和 107(不需要)。

对齐只是意味着将多字节值存储在位置中,以便它们从也开始多字节读取块的位置开始。在此示例中,这意味着在地址可被 4 整除的内存位置处开始多字节值,从而保证单次读取操作可以访问四字节值。