文章摘要
文章探讨了9位字节的潜在优势,指出历史上一些计算系统曾使用9位字节,如PDP-10,但如今8位字节已成为标准。作者认为,如果采用9位字节,IPv4地址空间将更大,可能避免IPv6推广的缓慢进程,并更好地应对全球互联网地址需求。
文章总结
标题:9位字节或许更优
在20世纪70年代,许多计算机系统使用9位字节,其中最著名的是PDP-10。然而,如今所有系统都采用8位字节,这似乎已成为自然标准。尽管8作为2的幂次方更为简洁,但作者认为,如果历史巧合使9位字节成为主流,可能会带来一系列优势。
IPv4地址:在当前的8位字节世界中,IPv4使用32位地址,约40亿个地址,这显然不足以应对全球80亿人口的需求,导致NAT(网络地址转换)的广泛使用和IPv6的缓慢推广。而在9位字节的世界中,IPv4将拥有36位地址,约640亿个地址,足以满足当前需求,并可能在未来十年内继续适用。
UNIX时间戳:在8位字节的世界中,32位的UNIX时间戳将在2038年耗尽,迫使软件向64位结构过渡。而在9位字节的世界中,36位时间戳将延续到3058年,无需急于升级。此外,负时间戳可以追溯到更早的历史时期,如基辅罗斯的建立或阿尔弗雷德大帝的去世。
Unicode字符集:在当前的16位Unicode字符集中,仅有6.5万个字符,勉强覆盖全球语言,尤其是中文字符的选择受限。而在9位字节的世界中,18位字符集将提供26.2万个字符,足以涵盖现有的15.5万个Unicode字符,包括各种表情符号。
指针与内存管理:在8位字节的世界中,32位操作系统对进程的内存限制为2GB,这在今天显得非常局限。而在9位字节的世界中,36位操作系统将允许每个进程使用高达32GB的内存,这在当前仍属于高端配置。此外,较小的指针将减少内存使用,尽管字符串可能会占用更多空间。
其他潜在优势:18位的AS号码、端口号、进程ID和用户ID将提供更大的空间。x86和A64指令编码将更加合理,半精度(18位)浮点数可能更早普及。扩展ASCII将包含希腊字母,成为一种类似NATO的编码页。Unix权限将使用一个字节,缺乏粘滞位,八进制将成为标准。
潜在问题:尽管9位字节可能带来诸多优势,但也存在一些潜在问题。例如,18位的TCP序列号可能在高带宽连接中引发问题,迫使早期采用窗口缩放技术,并在90年代中期升级到36位序列号,类似于IPv6的过渡。然而,与IPv6不同,ISP可能会更积极地支持TCPv2,以提供更高的速度。
总的来说,作者认为,9位字节的世界将减少许多令人烦恼的限制和协议扩展,尤其是在早期计算时代,许多设计决策都受到数字限制的影响。尽管存在一些潜在问题,但9位字节的替代历史似乎更具吸引力。
(注:本文内容经过编辑,删除了与主题无关的细节和脚注,保留了主要观点和关键细节。)
评论总结
评论主要围绕字节大小(如8位、9位、6位等)及其对计算机系统设计的影响展开,观点多样且涉及历史、硬件、软件等多个方面。
支持8位字节的观点: - 8位字节已成为标准,且硬件设计优化依赖于2的幂次方(如8、16、32等),9位字节会导致硬件设计复杂化。 - "Non-power-of-2 sizes are awkward from a hardware perspective."(非2的幂次方大小在硬件设计上很麻烦。) - "A lot of designs for e.g. optimized multipliers depend on the operands being divisible into halves."(许多优化乘法器的设计依赖于操作数可以被二等分。)
支持9位字节的观点: - 9位字节可能在某些场景下提供更多灵活性,如IPv4地址可能设计为27位而非32位。 - "I wouldn’t be surprised if IPv4 would have ended up being 3 byte addresses = 27 bits."(如果IPv4最终设计为3字节地址,即27位,我也不会感到惊讶。) - "The N64 internally had 9 bit bytes, just accesses from the CPU ignored one of the bits."(N64内部使用9位字节,只是CPU访问时忽略了一位。)
其他字节大小的讨论: - 6位字节在历史上也曾被使用,且在某些场景下可能有优势,如文本编码。 - "I think 6-bit bytes would have been great at a point in history."(我认为6位字节在历史上某个时期会很有用。) - "Notably with 6 bit bytes text encoding would have needed to multibyte from the get-go."(值得注意的是,6位字节的文本编码从一开始就需要多字节。)
历史与标准的反思: - 字节大小的选择是历史发展的结果,且不同硬件厂商曾有不同的字节大小标准。 - "Today, we all agree that 'byte' means 8 bits. But half a century ago, this was not so clear."(今天我们都认为“字节”是8位,但半个世纪前并非如此。) - "A reminder of that past history is that in Internet standards documents, the word 'octet' is used to unambiguously refer to an 8-bit byte."(提醒一下,过去在互联网标准文档中,“octet”一词被用来明确指代8位字节。)
对未来的思考: - 字节大小的选择可能影响未来的技术发展,如地址空间大小和安全性。 - "64-bit pointers are pretty spacious and have 'spare' bits for metadata."(64位指针非常宽敞,且有“多余”的位用于元数据。) - "A 36-bit address space doesn’t improve on this much."(36位地址空间在这方面并没有太大改进。)
总结:评论中对字节大小的讨论反映了技术选择的历史背景和未来发展的复杂性,8位字节作为当前标准有其硬件和软件设计的优势,但其他字节大小在某些场景下也有其独特的潜力。