在决定使用八位组作为基本单位时,历史力量在起作用,需要进行权衡吗?
曾经有一些机器使用其他字长,但是今天对于非八位制,您必须寻找博物馆作品,用于嵌入式应用的专用芯片和DSP。字节是如何从计算机设计早期的混乱和创造力中演变出来的?
我可以想象,更少的位对处理足够的数据以使计算可行无效,而太多的位将导致昂贵的硬件。比赛中还有其他影响吗?为什么这些力量平衡到八位?
(顺便说一句,如果我可以花时间旅行,我会回到“字节”被声明为8位的时候,并说服每个人将其变成12位,并用21世纪初期的小饰品贿赂他们。)
在决定使用八位组作为基本单位时,历史力量在起作用,需要进行权衡吗?
曾经有一些机器使用其他字长,但是今天对于非八位制,您必须寻找博物馆作品,用于嵌入式应用的专用芯片和DSP。字节是如何从计算机设计早期的混乱和创造力中演变出来的?
我可以想象,更少的位对处理足够的数据以使计算可行无效,而太多的位将导致昂贵的硬件。比赛中还有其他影响吗?为什么这些力量平衡到八位?
(顺便说一句,如果我可以花时间旅行,我会回到“字节”被声明为8位的时候,并说服每个人将其变成12位,并用21世纪初期的小饰品贿赂他们。)
Answers:
5位baudot码确实做了很多真正的早期工作,但是很快就变得非常局限(只有32个可能的字符,因此基本上只有大写字母和一些标点符号,但数字的“空格”不足) 。
从那里开始,相当多的机器使用了6位字符。但是,这仍然远远不够-如果您要使用大写和小写(英文)字母和数字,那么只剩下两个用于标点符号的字符,因此大多数字符集中只包含一个字母。
ASCII定义了一个7位字符集。很长时间以来,这种“足够好”的使用已经成为大多数新字符集的基础(ISO 646,ISO 8859,Unicode,ISO 10646等)。
二进制计算机激励设计人员将大小的幂乘以2。由于“标准”字符集无论如何都需要7位,因此再增加一位以获得2的幂数并不需要花费太多时间(到那时,存储变得越来越便宜,大多数字符都“浪费”了一点时间)也被接受)。
从那时起,字符集已移动到16位和32位,但是大多数主流计算机很大程度上都基于原始的IBM PC。再说一次,市场上足够多的人对8位字符感到满意,即使PC尚未达到目前的主导水平,我也不确定每个人都不会使用较大的字符来做所有事情。
我还要补充一点,市场已经发生了很大变化。在当前市场中,字符定义的大小由硬件定义的少于软件。Windows,Java等很久以前已移至16位字符。
现在,支持16位或32位字符的障碍仅是最小的,原因是16位或32位字符本身固有的困难,而很大程度上是总体上支持i18n的困难。例如,在ASCII中,检测字母是大写还是小写,或者在两者之间进行转换是非常琐碎的。在完整的Unicode / ISO 10646中,它基本上是难以描述的(要点是标准甚至不尝试-它们只是提供表,而不是描述)。然后,您添加一个事实,即对于某些语言/字符集,甚至大写/小写的基本概念都不适用。然后添加一个事实,即使在其中一些字符中显示字符仍然要复杂得多。
这些都非常复杂,以至于绝大多数软件甚至都没有尝试过。情况正在缓慢改善,但执行起来却很缓慢。
七位用于ASCII信息,一位用于错误检测奇偶校验。
看看有关8位体系结构的Wikipedia页面。尽管字符集本来可以是5位,6位然后7位的,但是底层CPU /内存总线体系结构始终使用2的幂。最开始的微处理器(大约1970年代)具有4位总线,这意味着一条指令可以移动4位。外部存储器和CPU之间的数据位。
然后,随着8080处理器的发布,8位体系结构变得流行起来,这就是x86汇编指令集的开端,该指令集一直使用到现在。如果我不得不猜测,字节来自这些早期的处理器,主流公众开始接受并使用PC,而8位被视为单个数据单位的标准大小。
从那时起,总线大小一直加倍,但始终保持2的幂(即16位,32位和现在的64位)。实际上,我敢肯定,当今总线的内部结构比64条并行线要复杂得多,但是当前的主流CPU体系结构是64位。
我认为,通过始终加倍(而不是增长50%),可以使与现有应用程序和其他旧组件共存的新硬件更容易。因此,例如,当它们从8位变为16位时,每个指令现在可以移动2个字节而不是1个字节,因此可以节省一个时钟周期,但最终结果是相同的。但是,如果您从8位架构转变为12位架构,则最终会将原始数据分解为一半,然后进行管理可能会很烦人。这些只是猜测,我并不是真正的硬件专家。
一个字节有不同的(至少)1、4、6、7、8、9、12、18、20位,可能还有36位,具体取决于要查看的计算机。我在这里用“字节”来表示“内存的最小可寻址单位”,而不是使用任何以文本为中心的解释。(例如,Saturn CPU,这是流行的HP48SX / GX计算器系列中使用的64位CPU,以4位为单位对存储器进行寻址)。
20位字节在50年代的“ IAS机器”中极为常见。6、12、18(也许是36)在60年代,70年代以及某种程度上在80年代的各种架构中非常流行。
最后,似乎已经赢得了“ 2的幂”和“可寻址单元中的位”之间的良好对应关系。
首先要澄清一下:八位字节(8位单元)实际上并不是现代计算机体系结构中的基本单元。至少没有比2,2,4,16,32,64,128等的其他幂更基本的东西。八位字节是8位处理器的基本单位(因此得名!),但是现代体系结构通常使用更大的位-内部设置。例如,x86_64具有64位整数寄存器和80位浮点寄存器。RAM以64位块的形式进行读写,而处理器仅使用一点魔术就可以处理单个8位字节。
对于较旧的体系结构,“字节”表示数据总线的大小,并且如原始问题所述,存在许多不同的总线大小(4、5、6、8、12等)。但是自1993年以来,为了使数据大小具有标准化的SI单位,已将字节定义为8位。因此,“字节”的含义已经从与体系结构相关的单元变为与体系结构无关的标准化单元。
因此,如今,字节是用于寻址和量化数据的标准单位,但实际上并不是基本的单位。
八位字节单位成为事实上的存储标准,主要是因为担心存储文本。对于存储文本,理想情况下,您希望一个字节存储一个字符。有两个重要因素:
当然,8位还不足以支持所有脚本-日语(日语)至少需要16位(对于它而言,Unicode为21位),但是在那时,位非常昂贵,大多数数字文本都在其中ASCII范围。
如今,文本通常以宽度可变的编码(如UTF-8)存储,而诸如Unicode组合字符之类的东西,“一个字节等于一个字符”早已成为历史。出于历史原因,今天的字节实际上只是标准。
根据我的信息,字字节本身是由八(8)位字的短语by-by衍生的。我们在8位字中发现的便利是转换为十六进制值,因为值00000000 = 00&11111111 = FF(对于无符号,Dec 255,对于带符号,-127,dec),这样的结构很容易进行所有算术运算,包括按位运算操作。
我认为字节(8位字)是字长的自然演变,从灾难性的小3位到可笑的大60位字