为什么原始的Macintosh屏幕分辨率是512×342,而不是人们可能预期的512×384

许多经典Mac电脑配备了——或支持——分辨率为512×384像素的显示屏,但许多紧凑型Mac电脑,从1984年原版机型一直到1991年 的Macintosh Classic II,均内置了分辨率为512×342像素的CRT显示屏。这涵盖了所有配备9英寸屏幕的黑白紧凑型Mac电脑。而后续的Color Classic和Color Classic II则采用了10英寸CRT显示屏,分辨率为完整的512×384。这一话题出现在我与约翰·格鲁伯共同参与的《The Talk Show》节目中。节目中,我曾脱口而出称初代Mac的分辨率为512×384。但实际上……并非如此。初代Mac的屏幕分辨率为512×342。我后来记起了正确数字并立即更正,但考虑到这个网站的名称,这确实有些尴尬。这促使我开始探究苹果为何做出这一决策。为何早期Mac的显示屏高度比后期型号短42像素?经过大量阅读,要回答这个问题需考虑多个因素。

内存

初代Mac仅配备了128千字节的内存。本文中初代Macintosh的照片大小为604 KB,是1984年那台机器整个内存占用量的4.7倍。当然,苹果会在后续机型中改进这一问题,但为适应初代Mac而做出的许多设计决策在接下来的数年里仍被沿用。在Folklore.org网站上,Andy Hertzfeld撰写了一篇精彩的文章,详细介绍了Macintosh的多个早期版本,其中甚至包括内存更少的型号:

1982年初,原始的68000设计已问世超过一年,而软件远未完成,因此Burrell [Smith]担心原始设计中的一些权衡已不再适用。他利用定制芯片的广阔空间(其中额外逻辑几乎无需成本),对架构进行了更新。最重要的决策是承认软件无法装入64K内存,转而采用完整的16位内存总线,需要16个RAM芯片而非8个。额外的内存带宽使他能够将显示分辨率翻倍,从384×256提升至512×342。他还添加了诸如通过DMA供电的四声道独立声音发生器等高级功能。这是Macintosh设计的第四个版本。

元素周期表在20世纪80年代,推出一款分辨率为384×256的电脑并不算太过前卫。1982年的Commodore 64最高分辨率为320×200。1983年推出的Apple IIe提供了多种显示模式:

  • 40或80列文本,白底黑字,24行
  • 低分辨率:40×48(16种颜色)
  • 高分辨率:280×192(6种颜色)
  • 双低分辨率:80×48(16种颜色)
  • 双高分辨率:560×192(16种颜色)

像C64和Apple II这样的计算机不得不使用许多技巧才能在屏幕上显示图形。Macintosh将采用完整的图形用户界面(GUI),而384×256的分辨率会显得过于粗糙,因此将128千字节的内存视为一种”升级”是一种有趣的视角,打破了”哇,原始Mac真是受限太多!”的常规看法。实际上,它能做到这一点令人惊叹。当意识到Macintosh使用部分内存驱动显示时,这种感觉焕发新生。在512×342分辨率下,绘制屏幕所需的内存总计为21.8KB。若苹果选择运行512×384分辨率的4:3显示屏,系统将需要24KB内存用于显示。在那个年代,每一字节都弥足珍贵。再次引用安迪·赫茨菲尔德(Andy Hertzfeld)的观点

原版Macintosh仅配备128KB内存(相当于1/8兆字节),因此内存管理通常是开发系统和应用程序时最困难的部分。我们为系统分配了大约16KB的内存,另外22KB用于512×342像素的黑白屏幕,因此应用程序只剩下大约90KB的内存。像MacWrite或MacPaint这样较大的应用程序似乎已经到了极限。

似乎有两点是正确的:

  • 原版 Macintosh 的内存容量比早期设计更高
  • 即使在 128K 内存下,系统运行也极为紧张

丹尼尔·奈特在撰写关于原版 Mac 的文章时指出:

安迪·赫茨菲尔德所写所言,Macintosh的显示屏分辨率仅为256×256像素(相较于Apple II的280×192图形界面已有所提升)。直到1981年1月,Mac团队才决定尝试使用摩托罗拉68000处理器。这确实是个明智的决定,因为首款Mac配备了512×342像素的显示屏,这将占用原计划用于低成本信息终端的64KB内存中超过30%的空间。

CPU时序

Macintosh的核心是一颗运行频率为8MHz的摩托罗拉68000处理器。与128KB内存一样,当与显示硬件配合使用时,这也会带来一些固有限制。为了减少CRT闪烁,苹果努力实现60Hz的垂直刷新率。这意味着CPU有三分之一的时间用于绘制显示屏。最初的Mac没有专用图形处理器,因此CPU必须花时间加载上述22K内存,该内存作为显示缓冲区使用。机器的视频电路会读取这22K内存并直接将内容显示到CRT上。与内存类似,更高的屏幕分辨率会占用更多资源,从而影响Mac操作系统和程序的运行。如果你熟悉标准电视格式,你可能已经注意到,这种刷新率与屏幕尺寸的组合意味着Mac与Apple II支持的NTSC复合视频不兼容。(它也与PAL系统不同。)这使苹果能够在性能和图像质量之间取得平衡,以团队认为合适的方式,考虑到他们拥有的硬件,正如比尔·阿特金森所写:

Apple II在黑色背景上显示白色文字。我认为要做好图形处理,必须切换到像纸张一样的白色背景。在打印时反转文字是可行的,但照片打印成负片则行不通。Lisa硬件团队抱怨屏幕闪烁过于频繁,他们需要更快的刷新率和更昂贵的内存来防止滚动时出现拖影。史蒂夫听取了所有利弊后,为了图形效果选择了白色背景。

关键点在于:原始Mac的运行频率并非8 MHz,而是7.83 MHz。这一微调使苹果能够更轻松地协调CPU时钟周期与CRT刷新需求。

正方形像素

以512×342分辨率运行9英寸CRT显示器,使原始Mac的像素密度达到72 PPI,但更重要的是,屏幕尺寸使Mac能够拥有正方形像素。苹果首款图形用户界面(GUI)驱动的机器Lisa以矩形像素著称,如安迪·赫茨菲尔德在此处所述

Lisa团队决定优化显示器的水平分辨率,以便以吸引人的字体显示80列文本。垂直分辨率并不那么重要,因为垂直滚动比水平滚动更适合文本显示。设计师决定让Lisa的水平分辨率是垂直分辨率的两倍,采用720×360像素的显示屏,像素的高度是宽度的两倍。这对文字处理等以文本为中心的应用程序非常有利,但对图形应用程序来说有些不方便。当布雷尔于1980年12月重新设计Macintosh,使其采用与Lisa相同的摩托罗拉68000微处理器时,这在苹果公司内部引发了震动。布雷尔的新设计不仅比Lisa简单得多,芯片数量不到Lisa的一半,而且运行速度几乎是Lisa的两倍,采用8兆赫时钟而非5兆赫时钟。其他优势还包括Mac的384×256像素显示屏具有相同的水平和垂直分辨率,这一特性被称为”正方形像素”。正方形像素使得编写图形应用程序更加容易,因为无需担心分辨率差异的问题。

赫茨菲尔德进一步透露,Mac团队曾试图说服Lisa团队改用方形像素,将机器的分辨率提升至当时令人惊叹的768×512像素,但这一计划未能实现,因为在此次会议召开时,Lisa已进入量产阶段。

当然,丽莎最终成为了一款失败的产品,1985年,苹果将该机器的后期版本重新命名为”Macintosh XL”。该机型出厂时搭载了名为”MacWorks XL”的软件适配层,可使Mac软件在Lisa上运行,但矩形像素导致软件画面出现拉伸现象。为解决此问题,苹果公司推出了名为”Macintosh XL屏幕套件”的产品,将分辨率调整为608×432像素。这是Sun Remarketing公司的一份DIY升级指南中对该产品的描述。Sun Remarketing专注于维护Lisa硬件的正常运行。

任何最近修复的Lisa/Mac XL都离不开Macintosh XL屏幕套件。与标准9英寸Macintosh的方形像素不同,原装Lisa/XL采用矩形像素。使用矩形像素时,圆形看起来像橄榄球,正方形看起来像意大利面盒。Macintosh XL屏幕套件的目的是将像素调整为方形。比例与其他Mac完全相同(1:1),但整体显示区域(608像素×432像素)大致与12英寸Macintosh 11 WYSIWYG显示器(640×480)相当。标准9英寸Mac仅显示512×342像素。完整的屏幕改装套件包含新的3A启动ROM、新的视频ROM和新的栅极线圈。(较新软件还需系统更新5.0和MacWorks Plus。)完整安装屏幕套件需耗时一到两小时。

模拟真实世界

除了方形像素使屏幕图形看起来更佳外,Macintosh团队还希望计算机对需要打印作品的用户有用。72 DPI屏幕对于MacWrite、MacPaint以及随后推出的页面布局工具等应用程序而言,清晰度已绰绰有余。用户可以以全尺寸或缩放比例查看作品,以了解正在处理的整体页面布局。更大的显示屏会陆续推出,但对于1984年而言,512×342的分辨率已绰绰有余。

一切皆有平衡

简而言之,要解释早期紧凑型Mac为何采用512×342屏幕分辨率并无简单答案。垂直分辨率减少42像素的具体原因已无从考证,但大量证据表明苹果公司认为此举在多个方面具有优势。苹果公司正在做它最擅长的事:设计一款在性能、易用性和成本之间实现恰当权衡的产品。短短几年后,Mac将支持更大尺寸的显示屏,但对于1984年而言,这种平衡已然恰到好处。在《Macworld》杂志的首期中,马修·道格拉斯写道

外表往往具有欺骗性。大多数计算机在屏幕上以24或25条”不可见”的水平线显示文本。这种显示方式称为文本模式。要显示图形,软件会切换到图形模式,此时显示屏变成由像素组成的点阵。每个像素(点)要么关闭(不可见),要么打开(可见)。当然,计算机可能拥有多个文本模式或两种以上的图形模式,也可能是图形与文本的混合模式。Mac显示器只有一种模式:图形模式。整个屏幕由点组成:水平方向有512个点,垂直方向有342个点,总共175,104个点,这些点组合在一起显示你在Mac屏幕上看到的全部内容。(现在你知道了Mac屏幕上令人惊叹的字体种类、属性及字号范围背后的秘密。)

在同一期杂志中,大卫·邦内尔采访了比尔·盖茨,并问他是什么让Mac与众不同。盖茨——此前曾表示Mac是他希望母亲尝试的电脑——回答道:

Mac 电脑最初被设计为图形处理设备。苹果公司并未内置 ROM 字符生成器或多种视频模式。他们仅设置了一种视频模式,即纯位图模式,分辨率为 512×342 像素。显示器被直接集成到机器中,以实现极高的图像清晰度并形成一个完整的系统。他们清楚地知道屏幕的宽高比以及像素的排列方式。他们还确保了鼠标的使用,并且64K ROM能够支持非常丰富的图形交互。你可以为PC配备一块较好的图形卡,添加微软鼠标和必要的软件,但这并非该机器的核心设计方向。个人电脑主要在文本模式下使用,至今仍主要在没有鼠标的情况下使用;你无法在个人电脑上以相似的价格获得与Mac相媲美的性能或图形效果。尽管两者都是”图灵机”(即具有有限内存),但Mac的定位截然不同。在当今所有个人电脑中,Mac是独一无二的。这是首次有人提出:”我们不需要其他个人电脑所具备的许多功能,因此让我们优化几个关键领域,并确保软件设计围绕这些功能展开。”

你也许感兴趣的:

共有 131 条讨论

  1. 文章并未明确指出具体原因。以下是我的推测。安迪·赫茨菲尔德(Andy Hertzfeld)的引述表明,限制因素是内存带宽而非内存容量:

    > 最重要的决策是承认软件无法装入64K内存,因此采用了完整的16位内存总线,需要16个内存芯片而非8个。额外的内存带宽使他能够将显示分辨率翻倍,从384×256提升至512×342

    如果你查看机器的规格,你会发现,在活动扫描行期间,视频正好使用了可用内存带宽的一半,而CPU可以使用另一半(在水平和垂直消隐期间,CPU可以使用整个内存带宽)[1]。这决定了扫描行的持续时间。

    如果计算机拥有更多扫描线,就必须做出妥协,因为每纳秒的时间都已分配完毕[2]。刷新率必须降低,或消隐期必须缩短,或内存带宽必须提高,或内存带宽必须不均匀地分配给CPU和视频,后者可能更难实现。我不知道他们能够调整哪些参数,哪些是硬件的硬性要求,但我想,如果他们想达到60Hz,考虑到RAM芯片的内存带宽和所选CRT的消隐时间,他们无法实现384条扫描线。

    [1]https://archive.org/details/Guide_to_the_Macintosh_Family_Ha…

    [2]https://archive.org/details/Guide_to_the_Macintosh_Family_Ha…

    1. 许多老式机器的时钟速度和视频像素率是相互匹配的。在某些彩色机器上,系统时钟是标准彩色同步频率的整数倍。

      Timex Sinclair 所有的计算都在消隐间隔内进行,这就是为什么它运行得如此缓慢。

      1. 有一篇有趣的博客文章讲述了一台结构简单的机器如何生成视频信号,如果有人对涉及的信号感兴趣:

        http://blog.tynemouthsoftware.co.uk/2023/10/how-the-zx80-gen

        “CPU 仅在 BASIC 等待输入(或暂停)时生成电视画面。在其他时间,它不会生成视频画面,因此 CPU 可以全速运行程序。”

      2. Commodore Amiga系列的68k时钟频率因地区不同而有所差异,这是由于载波频率差异(具体来说,NTSC为2倍频率,PAL为1.6倍频率,这导致时钟频率几乎相同,但并非完全一致)。

        有趣的是,这两种垂直分辨率(200p/400i与256p/512i)的差异也对软件设计产生了一些次要影响。由于PAL系统屏幕底部20%区域为黑色,因此很容易判断一款游戏是在NTSC地区开发,还是针对全球市场发行。

      3. 为了节省好奇者的搜索时间:Timex Sinclair是ZX Spectrum的美国版本。

        1. ZX Spectrum拥有(原始的)视频硬件。GP评论者指的是ZX80和ZX81,它们使用Z80 CPU生成显示,因此实际上无法同时”思考”和生成显示。在 ZX81 上有两种模式:SLOW 模式和 FAST 模式。在 FAST 模式下,Z80 CPU 会优先处理计算而非生成显示,因此在程序运行时显示会变得模糊灰暗,当程序结束或等待键盘输入时显示才会重新出现。

          1. 有一款冒险游戏在初始地图生成时会显示”时间的迷雾”30秒——这是对模拟电视因视频信号缺失而产生的噪声的一种非常有创意的描述。

          2. 你说得对!我想到的是 Timex Sinclair 2068。它之前有 1000 和 1500 型号(分别对应 ZX80 和 ZX81,正如你所说)。

    2. 查看当时其他架构也能帮助理解这个问题有多棘手。当时,Commodore、Nintendo等公司已采用专用视频处理芯片。这使CPU无需直接生成视频信号,只需分配少量周期与视频子系统通信即可。当然,视频芯片的最大缺点是成本(定制制造、元器件数量),显然Macintosh团队正努力将其降至最低。

      1. 昔日主要的8位竞争对手——雅达利8位系列和Commodore 64的定制图形芯片(Antic和Vic-II)——在需要访问内存时,会”窃取”6502(或C64中的6510)的周期,即进行”周期窃取”。

        我记得曾在Atari上编写过一段CPU密集型代码,并利用视频空白期来加速代码执行。

      2. 此外,这些并非原始位图,而是基于瓦片结构,以帮助降低内存和带宽成本。

      3. 然而,尽管Macintosh的部件数量较少,但其价格却高于Commodore和Atari等竞争对手的产品,后者配备了专用的视频渲染芯片。我想苹果在硬件销售上的毛利率一定很高,因为包装盒里装的东西实在太少了。

    3. 显示器至今仍是带宽杀手,我们一直在与其他硬件同步提升其规格。如今你可能拥有一台4K 30bpp 144Hz显示器,仅维持其运行就需要33Gbit/s的带宽,这还不包括图像合成部分。

      1. 我有一台通过一根USB-C数据线连接到笔记本电脑的4K 60Hz显示器,但由于带宽限制,我的选择是4K30和USB 3.x支持,或者4K60和USB 2.0。

        我喜欢这台显示器,它清晰锐利,很多时候几乎有 HDR 效果,但它拥有多个 USB 3.0 端口,却只能达到 USB 2.0 的速度,因为我不想在 30Hz 游戏中出现卡顿,这真是……奇怪。

          1. 识别需要改进的领域是我们在进步

            1. 例如,更谨慎地选择在谁面前自慰。(以防万一参考不明显,我这里不是在说wmf或Jaygles。)

        1. 这就是我为什么拆掉我的底座,直接将显示器连接到笔记本电脑的原因。30Hz太低了,我需要60Hz(或者可能50Hz就够了——我在PAL地区 ;-)

      2. 4K 技术来得太早了。像素太多,运算周期也太长。而且不幸的是,它在像素着色器开始承担更多工作时被引入。

        因此,几乎没有任何内容真正以 4K 分辨率渲染。所有内容都是通过 upscaling 实现的——甚至更糟的是,你的显示器需要通过双输入来实现。

        一旦我们能轻松实现60 FPS、1080p、4倍MSAA且无需 upscaling,再重新考虑4K的可行性。

        1. 如果能达到120 FPS,我或许会同意。

        2. 你在说什么?对于经过合理优化的应用程序来说,4K下达到60 FPS根本不算什么挑战。只需要比廉价显卡更好的硬件即可。而120+ FPS已经成为显示器的全新标准。

          1. 我告诉你,即使这些数字在纸面上看起来不错,但软件和硬件为了达到这个目标所使用的技巧会降低整体质量。

            所以,虽然你的显示屏上确实点亮了4K像素,但这真的是一幅更好的图像吗?

            虽然可能有高端硬件能处理这些,但软件在设计时还是为其他人做了选择。

            还有一些图像算法不适合GPU,现在已经无法有效计算了。

      3. 我们在嵌入式系统中也经常看到这种情况。

        如果你的交叉开关内存互联仅具有静态优先级,那也没用。

      4. 营销人员曾表示,当LCD取代CRT时,你不需要发送整个图像来更改LCD上的一个像素,只需更改该像素即可。

        1. 但DVI本质上是去掉数模转换部分的VGA,而原始HDMI是带加密功能的DVI,加上一些预定义的”必备”时序,以及将额外数据填充到为CRT设计的信号空闲时段中。

          我认为部分刷新功能仅通过DisplayPort的某些可选扩展实现。

          1. DVI只是一个接口——它可以是模拟的、数字的,或同时支持两者。

            1. DVI是一种接口,定义了多种连接器变体——而数字部分本质上是模拟部分(即VGA信号)以数字形式传输。

          2. 我甚至不确定部分刷新是否存在于电子纸显示器之外。在DisplayPort上,我们能做到的最好是可变刷新率,一直到面板自刷新。

    4. 为什么需要 60Hz?为什么不采用欧洲的 50Hz?与当地电网的交流频率同步是否存在巨大优势?

      1. 如果你习惯了像美国人那样到处看到 60Hz,那么 50Hz 就会显得格格不入。

        但归根结底,我怀疑这只是因为50Hz更容易实现。

      2. 几年前Macintosh问世后,普遍认为50Hz会导致令人烦躁的闪烁。显然这取决于荧光粉类型。或许当时这已是普遍共识?

        我认为额外的16%屏幕空间是值得的。

        1. 在50Hz下,白色背景确实闪烁得相当厉害,至少对我这个习惯了NTSC标准的眼睛来说,在电视上是这样。也许他们可以在显示器中使用更长衰减时间的荧光粉,但这样会导致运动和动画模糊。

        2. 说到荧光粉,早期Photoshop有一个设置可以选择使用的类型。这些设置会根据已发表或测量的值调整RGB平衡。https://twitter.com/gingerbeardman/status/154371808662010265…

    5. 没错。就像Apple ][一样,原始的Mac帧缓冲区是通过交替访问方式设置的,依赖于帧缓冲区读取来管理DRAM刷新。

      看起来DRAM是以6个CPU周期为周期设置的,因为512位(32次16位总线访问)×342行×60Hz×6周期×2等于7.87968MHz,这比名义上的7.83MHz稍快,剩余的0.6%可能在垂直空白期间消耗。

      1. 但为什么是342,而不是将时钟速度保持在8 MHz,并让floor(8e6/2/6/60/32) = 347行?

        我怀疑kmill是正确的:https://news.ycombinator.com/item?id=44110611 — 512×342非常接近3:2的宽高比,而347会导致一个尴尬的1.476:1宽高比。

        1. 你可以将水平偏转驱动线圈的增益降低2%以恢复3:2比例。事实上,我怀疑精度能达到2%。

        2. 这听起来不对。Mac显示的管子本身就更接近电视风格的4:3比例,上下有明显的空白区域。

          如果让我猜测,这可能是另一项硬件限制。或许342在与芯片供应商签订合同时,正好碰上了某种DRAM时序限制。或者更可能的是,~21.5 kHz的扫描频率是显示管供应商设定的硬性上限(这比电视机能达到的频率快得多),而乔布斯或相关负责人又提出了严格的60 Hz要求。

      2. 这就像双端口,但却是双半双工!

  2. 标题有误,因为黑白Mac的分辨率是512×342,而非512×324。

    如果苹果采用64K×4芯片,那也不是太离谱,这样只需四颗芯片就能实现128KB的16位全宽内存。

    512×342占128KB内存的16.7%,而512×384则占18.75%。差异不大。但拥有正方形像素确实不错。

    1. 看起来只是HN提交的标题有误(当前为”为什么原始Macintosh的屏幕分辨率是512×324″)。文章的标题是”为什么原始Macintosh的屏幕分辨率是512×342″,而”324″在页面上任何地方都没有出现。

      1. 看来有人在阅读Hacker News评论并编辑页面——archive.org在编辑过程中捕获了该页面,其中一处显示”324″:https://web.archive.org/web/20250527202300/https://512pixels…

        1. 哦,这太有价值了。实时HN反馈循环。

    2. > 不会

      真的,约翰?你真的让我去解析这个词吗?

      1. 这是一个很棒的词,我经常使用它。

        1. 你本不该那样做。如果你没那样做,谁会抱怨呢?

        2. 通常不会用克林贡语正写法来转录。

      2. 你版本的”不应该”的标点符号不是那样的吗?

    3. 值得添加吗?那个(几乎[1])无处不在的菜单栏也占用了20像素的垂直空间——所以可以说该应用程序有322行可用空间。

      [1] 当然,许多游戏会隐藏菜单栏。

  3. 答案是如今越来越难实现的事情——设定性能目标,并通过计算得出既能达到规格要求又能实现性能目标的参数。

    这需要一些工作,但我怀疑你可以通过算术来解决这个问题。假设他们希望显示器以60 Hz运行,并且需要一个帧缓冲区,那么在1位显示器上以512×384分辨率运行时,你需要196,608位/24,576字节/24千字节[如下]。

    Mac 128k搭载了运行频率为7.8336 MHz的摩托罗拉68k处理器,这意味着每帧可达到130560 Hz,即60帧每秒。

    据我所知,68k处理器的字长为32位,假设屏幕以字为单位绘制,每次取数据大约需要20个时钟周期[1],因此每帧大约需要6528次取数据操作。以 32 位元每次取樣計算,填充螢幕需要約 6144 次記憶體取樣。由於水平刷新需要時間,因此會浪費等待時間,故 6528 – 6144 = (鼓點聲) 384,即顯示器上的水平線數。

    我显然只是触及了表面,遗漏了许多细节。但我的观点是,只要有足够的信息,这是可以计算出来的,这就是过去工程师们如何进行规格设计的方式。

    1 – https://wiki.neogeodev.org/index.php?title=68k_instructions_

    以下 – 为什么是位?原始的 Mac 采用 1 位显示技术,即每个像素使用 1 位来设置为开启或关闭状态。由于无需使用 3 个子像素来生成颜色,因此显示效果比彩色显示器更紧凑、更锐利,即使在较低分辨率下也显得有些类似纸张的质感。文章中提到 DPI 约为 72 的说法是正确的。另一种思考方式是,Mac的目标是预印刷桌面出版。许多印刷厂可以以每英寸150-200行的速度印刷。设备非常好的印刷厂可以达到300行或更高。虽然测量标准不同,但作为所见即所得工具的Mac,很好地模拟了当时的模拟印刷设备。(来源:成长于印刷业务家庭)

    1. Motorola 68000处理器拥有16条数据线和24条地址线,因此仅传输一个CPU完整字就需要至少两个时钟周期(不考虑地址锁存器的时序等因素)。

      据我所知,部分代码通过复杂的多寄存器复制操作来提升图形处理的时钟周期效率。

      至于屏幕,据我所记得,让”屏幕上显示的内容”与”纸张上打印的内容”易于对应,是推动Mac在多年间几乎与DTP(桌面出版)画上等号的关键因素。

    2. 在排版中,每英寸有72个点,因此他们将1像素等于1点。

  4. 令人印象深刻的是,有多少人读完了整篇文章,而不仅仅是看到一句:”我们不需要其他个人电脑所具备的许多功能,所以让我们优化几个关键领域,并确保软件设计围绕这些领域展开。”

    Mac并非廉价机器,而当时的苹果公司也无力承担不必要的开支——他们这次必须取得成功,而他们做到了。

    是的,这是事实,他们受限于带宽,也受限于半32位CPU的速度。

    但Mac当时确实领先一步,并且拥有足够的资源在新技术到来时继续发展。这就是我认为当时的PC所缺乏的。

  5. 这篇文章真的没有解释为什么他们选择了这个数字。

    1. 我不知道,但我可以做一些数字分析:一个3:2的宽高比,宽度为512像素,需要341.3行,四舍五入后得到512×342。

      后来的384这个数字对应的是精确的4:3宽高比。

    2. 在32位机器上实现高效图形处理时,扫描线方向(即正常安装的CRT显示器的水平方向)必须是32的倍数,最好是2的幂。

      文章提到了对正方形像素的需求。因此,他们很可能先确定了水平分辨率,然后选择了能让512像素水平分辨率下获得正方形像素的垂直分辨率。

        1. 68000处理器的数据寄存器和地址寄存器均为32位宽。

        2. 68000内部是16位架构,每次只能访问16位内存,但指令集设计时已考虑未来版本,大多数指令可操作32位数据——但会带来性能开销。(因为本质上需要分两步完成操作。)

          这是否足以使其被视为真正的32位处理器,这是一个哲学问题。

          1. 不,这完全错误。68000处理器内部是32位架构,并且拥有32位寄存器:https://en.wikipedia.org/wiki/Motorola_68000

            外部数据总线为16位,地址总线为24位。这就是为什么后来我们得到了32位干净的ROM,因为苹果公司将未使用的上8位地址位用于标志位。

            1. 它拥有32位寄存器,但其算术逻辑单元(ALU)为16位,因此是否将其归类为16位或32位处理器存在争议。我倾向于认为它是32位处理器,因为其指令集让程序员感觉是在使用32位系统。

              此外,Z80被称为8位处理器,但其ALU为4位。

              1. 68000实际上拥有三个16位ALU,因此每时钟周期可处理48位数据。其中一个ALU可执行所有操作,而另外两个主要用于加法运算。如今我们可能会将其视为地址生成单元(AGU)的一部分,但其中一个ALU与数据寄存器操作共享。

            2. 时钟周期计数并不能支持这一理论。事实上,从该链接中可以看出:

              > 内部使用一个16位数据算术逻辑单元(ALU)和两个主要用于地址处理的16位ALU,[4]并配备一个16位外部数据总线。

              1. 就像很多事情一样,分类体系在边缘地带会变得模糊,双方都可以提出各自的论点。

                不过我还是要指出,ALU宽度和总线通常被视为与处理器的”位数”无关,更多是实现细节。Z80拥有4位ALU,但被视为8位CPU。PDP-8/s和SERV拥有单比特ALU,但分别被视为12位和32位处理器。8088尽管拥有8位ALU和总线,但仍被视为16位CPU。

                “位数”通常被定义为”与通用寄存器(GPR)最接近的存储单元的宽度”。

                1. 赞同。如果你是汇编语言程序员,你根本不会知道它有一个16位ALU。所有操作都是32位的,无论底层硅片是什么样子。

          2. 根据https://wiki.neogeodev.org/index.php?title=68k_instructions_…,68000的32位寄存器加法操作比16位和8位寄存器加法操作更快(6个时钟周期),后者需要8个时钟周期。

            大多数32位操作比16位操作慢,因为外部数据总线仅为16位,而大多数操作都使用外部数据总线。但简单的内部操作在32位时更快,这似乎表明68000内部是32位的。

            1. 有一个细节——当加到地址寄存器时,字加法仅需8个时钟周期。加到数据寄存器时则需要4个时钟周期。这是因为68000处理器始终以32位进行地址计算,而加到地址寄存器时,16位操作数会被符号扩展为32位。另一方面,加到数据寄存器时,结果仅为16位。这一点体现在标准指令为ADDA.W而非ADD.W,当地址寄存器为目标时。

            2. 有趣,谢谢。我之前可能忽略了这个细节,可能是因为我过去在Atari ST上做过类似的操作,而其指令被量化到最近的nop(因此6个时钟周期并不是一个实际存在的概念)。地址寄存器操作始终是长整型,显然符号扩展会带来一些开销。考虑到几乎所有其他长整型操作都更慢,我猜这是因为16位内部操作的时序恰好有利。

              ADDQ和ADDX是更好的指令,以及任何使用Dn,Dn寻址模式的指令。长整型和字操作的指令字节数相同,但长整型操作仍然更慢。

              (寄存器到寄存器的移动操作与宽度无关,因此它可能为此提供了32位路径。这很好。但如果它为所有操作都提供32位路径会更好。而它显然没有。这颗CPU有寄存器,但这无法拯救它。)

          3. 386SX的情况类似,通常被视为基本32位处理器。我认为这种认知差异可能与发布时间有关;386SX在DX(配备32位数据总线)之后发布,因此被视为廉价的32位芯片,而68000最初发布时采用16位数据总线。

            (有趣的事实:还有 68008,它是一款采用 8 位总线的 68k 处理器!)

            1. 据我所知,386SX的主要优势在于能够使用更便宜的16位主板布局和组件。由于当时大多数软件都是为286兼容性而设计的,且ISA总线仅为16位宽,因此32位总线缺乏的重要性并不突出,这限制了32位总线在快速图形传输中的实用性。

              在商业生命周期内,24位地址总线从未成为显著瓶颈,因为当时很少有消费类软件需要超过4MB的内存,而当这种需求出现时,486SX(32位总线且无数学协处理器)已取代其成为新的性价比之王。

              1. 286/386SX/486SLC可寻址16MB,即完整的24位地址空间。

                > ISA总线仅为16位宽,这限制了32位总线在快速图形传输中的实用性。

                不仅如此,其频率为8MHz,以匹配最快的IBM AT电脑速度。486/33或66上的VLB以33MHz运行,堪称福音,其带宽是16位ISA总线的8倍。

            2. 68008在嵌入式系统中广泛应用,甚至可以轻松在面包板上搭建完整的微型计算机。

          4. 它最初是作为前一代产品的16位增强版,随着开发进程演变为32位架构。

            数据寄存器与地址寄存器的分离也是其演进过程中的结果,据我所知,最终是因为这使得 CPU 更便宜、更容易制造。另一个要素是,68000 至少拥有两层微代码——第一层微代码引擎生成指令,由第二层微代码引擎解释,最终驱动执行单元。

    3. 文章指出:简而言之,无法简单解释早期紧凑型Mac为何采用512×342的屏幕分辨率。实际上,苹果公司正在做它最擅长的事情:设计一款在性能、易用性和成本之间取得恰当平衡的产品。

      1. 它明显比我之前见过的任何东西都好。

  6. CRT显示器非常宽容——512×342与x384的差异微乎其微。通过微调垂直和水平尺寸,仍可获得正方形像素。

    我的问题是,htotal和vtotal的像素数和行数分别是多少?也许将vtotal精确设置为384(即128乘以3)能节省硬件成本。或许他们通过减少计数器中的一个比特,从而少用了一个TTL芯片。

  7. 文章并未明确说明为何选择512×342。但我更感兴趣的是,为什么在后来的Mac上改为512×384。只是为了填满整个4:3屏幕吗?

    除此之外,这篇文章真的想告诉你,1984年的这个分辨率有多么惊人。别忘了,那一年甚至更早,你就可以买到一台IBM XT克隆机,配备”经济型”720×348单色Hercules图形。

    1. 512×384型号与Macintosh LC相邻,因此可以使用原版LC显示器(LC本身支持640×480分辨率)或Color Classics。据我所知,这部分是为了让LC更好地与Apple IIe卡兼容(尽管IIe软件使用的是560×384模式)。

      赫尔墨斯卡虽然不错,但与丽莎一样存在非正方形像素的问题,因此不适合创建图形用户界面。

      1. > 尽管IIe软件使用560×384模式

        不错,这是从//e的560×192模式中将行数翻倍,应该会看起来很清晰。

    2. MDA和赫尔墨斯均为50Hz。真正80年代中期廉价清晰显示器的王者是12英寸640×400@71Hz的Atari SM124显示器。你可以用仅购买苹果激光打印机的价格,买到Atari ST + SM124 + Atari SLM804激光打印机 + Calamus DTP软件包 :)

      1. 当时我使用的是XT克隆机+Hercules(以及SIMCGA用于游戏),而50Hz刷新率并没有想象中那么糟糕——MDA CRT显示器采用慢衰减荧光粉设计以减少闪烁。

        我之前完全不知道Atari生产激光打印机。我认识的ST用户(虽然不多)要么在做MIDI,要么在玩游戏。

  8. 我一直认为这是在内存使用、刷新速度和图形用户界面(GUI)之间做出的权衡。别忘了,Macintosh之前有Lisa(800×364)和IIGS(640×200),所以他们可能对在特定分辨率下什么才是舒适的界面有很好的把握。

    1. > 别忘了,Macintosh之前有Lisa(800×364)和IIGS(640×200),

      Lisa是1983年1月

      Macintosh是1984年1月

      Apple IIgs是1986年9月

    2. IIGS的发布日期远晚于初代Macintosh:https://en.wikipedia.org/wiki/Apple_IIGS

    3. Lisa的价格大约是Macintosh的两倍,这也是它惨遭失败的原因。因此,价格限制了硬件配置,进而导致了显示带宽的限制。

  9. 他们引用的民间传说链接:https://www.folklore.org/Five_Different_Macs.html

    《Macworld》的第一期,值得注意的是第一页是微软产品的广告,包括MultiPlan电子表格、Word等。https://archive.org/details/MacWorld_8404_April_1984_premier…

    Mac最初使用的软盘是单面400KB磁盘。我猜这又是另一组权衡取舍。https://folklore.org/Disk_Swappers_Elbow.html

  10. > 但考虑到这个网站的名字,这确实有点尴尬。

    为什么,这个网站的名字是512pixels.net,不是342pixels.net;他正好抓住了512这个尺寸。 :)

  11. 我记得在80年代初使用过一台电脑(可能是Xerox Star),它使用CPU来生成显示。为了加快CPU密集型任务的速度,你可以清空屏幕。

    1. 据我所知,Alto的整个显示控制都实现于微代码中。

      类似的 trick 中,Symbolics 3600(至少第一款型号)将磁盘驱动程序的大部分实现为微代码中的一个任务(是的,微代码是一个支持抢占式多任务处理的系统)。我不确定其中有多少涉及 MFM 格式处理,但最终这意味着从磁盘读写一页数据只需一条高级指令。

  12. > “为了最小化 CRT 闪烁,苹果努力实现 60 Hz 的垂直刷新率”

    ……这一限制至今仍困扰着许多 Mac 电脑,甚至部分 iPhone,距今已超过 40 年!

    1. 每次看到有人把60Hz的CRT显示器称为”无闪烁”或”几乎无闪烁”等,我都感到惊讶。每次看到60Hz的CRT显示器运行时,我都能立即察觉到闪烁。在家中,我一直使用至少75Hz的刷新率,最好是85Hz(2000年代初,Windows系统)。

      1. 你见过运行在30赫兹的设备吗?甚至15赫兹?30赫兹与60赫兹之间的闪烁差异,远大于60赫兹与120赫兹之间的差异!没错,60赫兹并非无闪烁,任何有限数值都无法做到(可能存在量子极限),但现实中你会达到一个无法察觉闪烁的临界点。对于大多数用途来说,60Hz已经足够接近,尽管你仍然可以察觉到差异。

        1. 我坦白说记不清了。不过就我所知,这里的电视机一直都是50Hz(PAL制式)(除非它们搞了什么我不知道的把戏,偷偷运行在100Hz之类),而我显然可以连续观看多年而没有太大问题,所以显然这不是什么大问题。但在显示器上,我确实无法忍受,而85赫兹则感觉完美(我记得自己从未察觉到明显的闪烁)。

          1. – 我听说一些较新的数字PAL电视会将图像存储在帧缓冲区中,然后以100赫兹的频率扫描两次,而现代复古游戏玩家会避免这种方式,因为它会增加相对于直接扫描的延迟。

            – 关于CRT显示器是否比电视机使用衰减更快的荧光粉,我听到过矛盾的报告。也许部分原因在于计算机显示的是白色图像,这比黑暗背景上的白色文字(或更暗的电视场景)更容易引起明显的闪烁。

            1. 我在90年代用高速快门拍摄了家人彩色电视机的胶片照片。在(NTSC)60Hz场率下,屏幕约20%的区域在任何时刻都在衰减,其余为黑色。因此,要让这些荧光粉的屏幕在物理上无闪烁,刷新率需达到约500Hz。我怀疑彩色CRT显示器的荧光粉衰减速度比我的彩色电视更快。

              1. 我查阅了 Gateway VX720 VGA 显示器(类似 Diamond Pro 710)的亮度测量数据,发现蓝色和绿色荧光粉在 30 微秒内衰减至 50% 亮度,而红色荧光粉则保持明亮 300 微秒。我没有测量它们衰减至近乎黑色水平所需的时间。遗憾的是,我从未对我的 Trinitron 电视进行过测量,当时我仍然拥有它。总之,这些结果尚不明确。

                1. 这听起来比我从电视照片中记得的要快一些。

            2. 我旧的琥珀色和绿色CRT显示器确实比任何电视机都有更慢的荧光粉响应速度。它们无法在不产生严重拖影的情况下显示正常电视帧率。不过即使在黑底白字模式下,它们也没有明显的闪烁现象(部分程序可以实现这种效果,我的显示器也配备了反色视频按钮)

          2. 这很有趣。60Hz的电视总是让我头疼,但我的75Hz电脑显示器却不会。

            我认为实际上是交错扫描而非刷新率导致的。

          3. > 这里的电视机始终是50Hz(PAL制式)

            但每次只显示屏幕的一半,因此实际上每隔一行以25Hz的频率闪烁

      2. 我最近又开始玩CRT显示器,发现对于运行在60或70Hz的快节奏游戏,我几乎察觉不到闪烁,但对于文字内容,低于85Hz就会引发头痛。幸运的是,我买的显示器可以支持1024×768分辨率下100Hz刷新率 :)

        * 原生VGA接口及大多数MS-DOS游戏均以70Hz运行。

        1. 记得我第一次拥有自己的电脑(而非与他人共享)时,屏幕刷新率至少要达到72Hz,最好更高,这是”基本要求”。因此15英寸CRT显示器必须以800×600分辨率运行。

          后来,当我拥有了一块内存超过2MB的显卡后,我记得曾花了很多时间在17英寸CRT显示器上尝试各种模式线,以实现更高的刷新率和分辨率,这台显示器是我父亲换用笔记本电脑后留给我的 :)

          1. 我们的第一台PC是486,配了一台糟糕的15英寸显示器,但我当时太小,记不清细节了。我算幸运的,我爸是索尼的忠实粉丝,我们很快换了一台漂亮的17英寸Trinitron :)

      3. 在绿色ZnS:Cu荧光粉上,即使是20Hz也几乎没有闪烁。

      4. 单色CRT荧光粉如P4(锌硫化物银)的持续时间比彩色CRT使用的荧光粉更长,因此闪烁现象不那么明显。

      5. 我也是。我对PWM非常敏感。我曾尝试在VGA显示器上使用85Hz,但较高的信号带宽和廉价硬件导致视频明显模糊。70Hz也不是一个理想的折中方案。

        自TFT显示器问世后,我受到的干扰大大减少,因为TFT显示器几乎没有闪烁(尽管一些4位廉价TN液晶显示器在某些颜色下仍会出现闪烁)

      6. >每次看到运行在60Hz的CRT显示器,我都能立刻分辨出来。在家里(2000年代初,Windows系统)我总是将刷新率设置为至少75Hz,最好是85Hz。

        同样,我记得曾安装过一个程序,可以快速更改我接触过的几乎所有电脑的显示设置。如果CRT显示器所在的房间有荧光灯照明,情况会特别糟糕。

        1. 如果你的照明和显示屏的闪烁频率与数学比例一致,你就会注意到,除非频率极高。1:1是最常见的,因为很容易将灯光和CRT与交流电频率同步,而在美国是60Hz(欧洲是50Hz)。1:2(过去比较常见)或4:5的比例也会引起问题。

          不过现在想想,CRT本应与信号同步,同步频率无需与交流电频率相关,但实际情况并非如此(我所知的所有计算机均通过晶体振荡器生成同步信号,我不清楚电视台如何获取同步信号,但怀疑与交流电频率无关)。

          1. 维基百科关于NTSC的条目提到了几个希望将刷新率基于电源线路频率的原因:

            > 将场刷新率与电源频率匹配可避免互调(也称为拍频),这会导致屏幕上出现滚动条。刷新率与电源频率的同步偶然间帮助了电影摄像机记录早期直播电视节目,因为只需利用交流电频率设定同步交流电机驱动摄像机的速度,即可轻松实现每帧胶片捕捉一帧视频的同步。

            (我推测预先录制并通过电传送技术转播的节目,也应以30帧/秒的同步交流电机拍摄。)

            > 在早期电视系统中,主电压控制振荡器以水平线频率的两倍运行,该频率再除以使用的线数(本例为525)以获得场频率(本例为60 Hz)。该频率随后与60 Hz电源线频率进行比较,任何偏差通过调整主振荡器的频率进行校正。

            我认为后来的电视机可能直接与接收信号同步。

            https://en.wikipedia.org/wiki/NTSC#Resolution_and_refresh_ra

    2. 但由于LCD不闪烁(除部分专为电子游戏设计的型号会因某种原因闪烁背光外),这种需求已大幅降低。

      我记得即使在60Hz下,CRT的闪烁也让我感到烦人。

      1. 闪烁背光似乎可以让你在液晶完成旋转前不点亮新视频帧,这样你只需要应对视网膜上的视觉残留,而不是额外应对液晶的视觉残留。

        1. 我用”出于某种奇怪的原因”这个表述是不恰当的。我无意暗示我反对游戏显示器这样做,只是我没有做过相关研究来理解其原因。

          1. 是的,我也在这里进行一些推测。

  13. 答案可能更接近于:”他们能做到的最低分辨率,而不会让史蒂夫抱怨。”

    1. 苹果需要一些史蒂夫的戏剧性,他们最近似乎在倒退。

  14. 无论我们选择512×324、512×342还是512×384,72 PPI(精确)和9英寸对角线尺寸(精确)这两者无法同时实现。

    我知道这很吹毛求疵,但这种细节真的让我很困扰,有人能澄清这里真正的尺寸(和/或PPI)吗?

    参考:

    512×324 @ 72 PPI = 8.42英寸(或214毫米)(四舍五入)

    512×342 @ 72 PPI = 8.55英寸(或217毫米)(四舍五入)

    512×384 @ 72 PPI = 8.89英寸(或226毫米)(四舍五入)

    前两个甚至无法得到对角线像素数的整数结果,更不用说得到72的整数倍了。或者屏幕周围会有条纹,或者这该如何实现?

    1. 对于CRT显示器,对角线测量的是物理管的尺寸。实际可视区域较小。管的边缘部分被塑料覆盖,而且总有一些未用于显示图像的边距,因此这些区域是黑色的。

      这是一支9英寸的管,aspect ratio为3:2。你计算的8.5英寸图像在72 dpi下的结果听起来是正确的。

      1. >对于CRT显示器,对角线测量的是物理管的尺寸。实际可视区域要小一些。

        这也是为什么那个时代的电视和显示器看起来总是比广告中显示的要小。我记得曾向很多人解释过这一点。

    2. 您说得对,屏幕会居中显示,周围带有边距/边框。

      虽然CRT屏幕为9英寸,但根据当时的维修指南,屏幕应调整为可见图像尺寸为7.11英寸×4.75英寸,几乎正好是1.5:1的比例。这意味着分辨率为72dpi,以匹配PostScript字体大小用于打印输出和所见即所得(WYSIWYG)模式。

      因此,您的对角线尺寸为8.55英寸。

      一些经典Macintosh用户今天并不了解这种屏幕尺寸的逻辑,或者不同意这种做法,他们会将屏幕拉伸以填满整个CRT。天啊!

      顺便说一下,我今天早些时候在https://news.ycombinator.com/item?id=44105531上发布了几乎相同的信息——真是巧合!

    3. 一个边长为一千单位的正方形,其对角线长度不会是一个有理数,更不用说整数了。

      一个9英寸的CRT显示器永远不会精确到9英寸,因为光束轨迹的宽度和高度是模拟的,再加上有overscan,所以一个9英寸的屏幕只会显示一个非常接近9英寸的尺寸。

    4. 你说得对,在512×324分辨率下是8.55英寸。屏幕上下有黑边。

      1. 左右两侧也有黑边,因为图像被居中显示。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注