多字节数据组织在计算机体系结构中有哪些用途?
有两种常用于多字节数据的组织,例如big-endian和little-endian。在big-endian格式中,值的最重要字节保存在位置X中,随后的字节保存在位置X+1中,依此类推。例如,将存储十六进制值01020304H(H表示十六进制),从位置100H开始,如表(a)所示。
(a)大端和(b)小端格式的数据组织
(一种)
(二)
在小端,顺序是相反的。最小有效字节保存在位置X,下一个字节保存在位置X+1中,依此类推。表(b)中显示的类似小端格式的值。
相同的组织可用于字节内的位。在big-endian组织中,bit0是一个字节的最右边的bit,最左边的bit是bit7。在little-endian组织中,最左边的bit是bit0,bit7是右边——最一点。
Endian组织用于字节和字不会影响CPU和计算机系统的性能。只要CPU被设计为处理特定格式,两者都不比另一个好。主要问题在于在具有不同字节序的计算机之间传输数据。例如,如果小端组织的计算机将值01020304H传输到大端组织的计算机,而未转换数据,则大端组织的计算机将读取值为04030201H。
某些程序可以将数据文件从一种格式转换为另一种格式,而某些微处理器具有执行转换的特殊指令。多字节字还有另一个需要关注的问题是对齐。现代微处理器一次可以读取多个字节的数据。例如,Motorola68040微处理器可以同时读取四个字节。
但是,除了两个最低有效位之外,四个字节必须位于具有相同地址的连续位置。该CPU可以同时读取位置100、101、102和103,但不能同时读取位置101、102、103和104。这种情况需要两次读取操作,一次用于位置100(不需要)、101、102和103,另一次104、105(不需要)、106(不需要)和107(不需要)。
对齐只是意味着将多字节值存储在位置中,以便它们从也开始多字节读取块的位置开始。在此示例中,这意味着在地址可被4整除的内存位置处开始多字节值,从而保证单次读取操作可以访问四字节值。