论内存:面向技术宅和岚少的科普
虚情假意的秋风
编辑于 2023年01月27日 02:53
收录于文集
共7篇

这是一篇关于2023年1月14日岚色直播间的话题讨论。

我和岚少差不多都是修电脑长大的,不过我的年纪稍大一点并且一出生家里就已经有电脑了。

家庭状况也非常相似,我妈也是单位里第一个学会电脑的然后到处给同事朋友解决电脑问题。只不过我外公水平更高——老人家80年代就开始玩电脑了,不过因为时代的局限性所以上两代人都只能把电脑当作业余爱好,而我有幸接受了科班教育并从事了相关工作。外公已经去世很多年了,我妈这些年也开始沉迷手机不太碰电脑了,不过我还执拗地在家使工作站和服务器、外出带ThinkPad和纸笔。

关于“内存”一词的争论,我打算站在符号语言学 (人文) 和计算机科学 (理工) 的交界地,为技术小白辩护。


0x00 谢尔顿行为

我在接触正经理论之前也是个野生电脑高手,非常喜欢给别人纠正概念错误,对于内存vs硬盘问题也像岚少一样把它当作家常便饭一般。不过走入科班以后对很多过去的认知就有了更加辩证的态度,总之,包括我自己在内的技术宅们曾经高谈阔论的那些“科普”其实都是实实在在的民科。

(此处请脑补敲白板)

这张结构图内容虽然不少,但重点我已经画了虚线箭头,以表明DRAM主存与NAND硬盘之间的暧昧关系。这个区分是很难靠排除一两个例外就能变得泾渭分明的。

无损图床

代码块
HTML
自动换行
复制代码
https://files.catbox.moe/gkfj0u.png
复制成功

计算机存储器树状拓扑图

「Memory」一词的中文学名叫「存储器」,是图中一切细分的总称。这一概念下辖「易失性存储器 (内存) 」和「非易失性存储器 (外存) 」两个子类,括号中是它们不严谨的俗称。

我们在生活中常说的电脑内存条 (RAM Sticks) 、硬盘缓存 (HDD/SSD Cache) 、显存 (Video Memory) 都属于「RAM (随机访问存储器) 」。但更精确的说法是,目前常见的GDDR显卡、高端固态硬盘、内存条DIMM和手机里用的内存颗粒 (memory Chip/Die) 都是「动态随机访问存储器 (DRAM) 」及其子类。在技术应用领域中,如各类专业书籍、手册和检测工具 (Everest/AIDA/HWiNFO/CPU-Z) ,人们会通俗地把RAM叫做 memory (内存),而忽略了它还有专用名词 Memory (存储器) 的意思。这类不严谨的用法都是约定俗成的正确的行业用法,其中的谬误我会在后面进行符号学分析。

作为「易失性存储器」对立面的辅存/外存 (NVM),其下辖「ROM (只读存储器) 」、「闪存 (Flash Memory) 」和「NVRAM (非易失性随机访问存储器) 」三个主要子类。但广义上讲,从手机和SSD上的NAND到机械磁盘 (HDD)、光驱 (CD)、磁带/打孔纸带 (Tape) 甚至是纸笔都算外存, 如果可以像《硅谷》第六季中那样把SSH密钥完整背下来的话那人脑也算是一种外存 。这之中直接和RAM相对应的是ROM,比如技术宅经常刷来刷去的各种固件 (Firmware) 和BIOS芯片EPROM都是这类。还有游戏宅熟悉的只读光驱 (CD-ROM/DVD-ROM) 也是,但带刻录(-RW)的就不能算作只读 (Read-Only) 设备了 。不过由于技术进步导致古典的分类方式越来越模糊不清,比如NAND闪存这种非易失性存储器可以被强行当作易失性存储器来用——现在中低端SSD上用于替代昂贵DRAM的SLC缓存。反过来把易失性存储器倒钩成非易失性存储器也很常见——曾经风靡一时的内存盘 (RAM disk) 。还有就是要靠扣钮扣电池给主板重置BIOS设置的CMOS RAM 也是典型的反向操作,说到这还想起了给文曲星、卡西欧和游戏卡带的SRAM供电以保存数据的钮扣电池,懂的都懂……

0x01 吾等即是谢尔顿

介绍过基本概念后,再简单梳理一下历史。「通用图灵机」作为一种思想实验成为了现代电子计算机的原点,这台「抽象电脑」只能运算不能存储——输入输出全靠纸带。以今天的概念它充其量不过是个CPU而不能称作电脑,但它可远比当时的手摇机械计算机先进得多。

存储程序计算机流程图

当薪火传到了冯·诺伊曼手中的时候,更为完善的「存储程序计算机」诞生了,而「存储器 (Memory) 」一词也正式登上了历史舞台。存储设备最早用的是巨大的磁鼓和缓慢的延迟线,后来逐渐演变到了更快的电子(布朗)管和磁芯,最终发展到如今的「半导体存储器」。上古时期的整个计算机硬件系统中就只有这么一个存储器所以也没有区分的必要,但是随着技术进步存储器的种类也就越来越多,速度快的容量小、速度慢的容量大,这时就不得不给这些让设计者和开发者都眼花缭乱的存储器进行分类和分级。

存储器层次结构图

这张图给存储器分了六个层级、两大类型。「主要存储 (Primary Storage) 」和「辅助存储 (Secondary Storage) 」就是俗称的「内存」和「外存」,这里有很多不严谨的点:

  • 「主存」既可指代Primary Storage又可指代Main Memory

  • 「主存」逻辑上可指代虚拟内存/页面文件/交换分区所在的设备——可以是外置的

  • 「外存」目前大部分都是内置/板载的了——这词更多是作为逻辑概念

  • 「内存」自DOS时代起就经常被虚拟成逻辑上的「外存」——内存盘 (RAM disk)

由于上述含混,甚至一些专业教材都会出现把 Main Memory (主存) 误译成“内存”的情况,相比之下民间把硬盘误叫做“内存”的情况更值得原谅

0x02 「廻」字不止有四种写法

这里需要先简短的介绍一下符号语言学中「意指 (signification) 」的概念,意指等同于前文中用过的「指称/指代」。这个由「符号 (sign) 」或者说由「名词/名称」指向其对应物的意义或内在本质的过程就是意指,这个意指的过程可以拆分为两大要素——「能指 (signifier) 」与「所指 (signified) 」,它们通过声音或文字等符号形式在使用者之间引发某种概念联想。当然前提是沟通双方都能识别所用的符号,不然就会出现语言不通或对牛弹琴的情况。不过哪怕是双方都可以识别的符号,但相同的符号被预设进不同的语境就会产生会错意的情形,甚至言说者「主体 (subject) 」和「自身 (self) 」也会由于处于陌生的文化语境或在试图表达「不可言说之事 (the unspeakable) 」因而感到言不达意——“懂的都懂,不懂的说了也不懂。”

蔷薇的意指

举例来说,「岚少」这一能指,其相对应的所指可以是泪腺战士、尸斩仙雷、直播岚、实况岚、后期岚、周x岚等等……而「岚爷爷」这一能指的指代范围就会窄很多,其相对应的所指仅仅包含在发出某些特定声音时刻的岚少。而「岚少」这一能指是可以被其他能指任意替换转喻 (metonymy) 的,比如阿岚、岚岚、泪哥哥、周先生、周桑、岚人、优质岚性、岚宝等等……与这些意指范围相似的能指就形成了「能指链 (signifying chain) 」,处于同一条链上的能指与所指之间是可以任意相互替换的,这种不停的转喻运动叫做能指链的滑动 (slippery movement) 。多条能指链比如SH国民、niconico内测用户、B站三怂、某游戏策划、唱见宅舞实况全能选手、魂元帅、横学家、小浣熊等等交叠在一起就会形成「能指网络 (network of signifiers) 」。

0x03 谢尔顿=Nerd=Weirdo=Otaku≠Geek

民间约定俗成的「语用习惯」是遵循「传播学规律」的,大概流向是从: 学术界 (Academia)→产业界 (Industry) →商业界 (Business) 细分的话,学术界分为理论和应用、产业界分上下游、商业界分销售和消费,而我们大多数人都处于链条的最末端——消费者,也是「传悄悄话」游戏中的最后一位小朋友。

不过由于专业的因素,我和少数人一样都是「消费者 (consumer) 」中的特例——「产消者 (prosumer) 」,我们可以利用生产者的身份获取属于更高生态位中的语用习惯

然而,即便是对于最上位的学术界,专业术语也往往不统一。

Historically, memory has, depending on technology, been called central memory, core memory, core storage, drum, main memory, real storage, or internal memory. Meanwhile, slower persistent storage devices have been referred to as secondary storage, external memory, or auxiliary/peripheral storage. Recently, primary storage and secondary storage in some uses refer to what was historically called.

主要存储 (Primary storage) 辅助存储 (Secondary storage) 和主存储器 (Main Memory) 辅存储器 (Auxiliary Memory) 之间的含混程度要看具体的专业领域,而且一时要做区分一时又不要。

「Memory (存储器) 」这一能指,其所指无论在中文还是英文中都是随时间在变化的——上古计算机的“内存/memory”可以指隔壁机房里的一台鼓机 (drum machine) 。好在自大型机 (mainframe) 时代以后,“内存/memory”就走进了机箱,在逻辑和物理两个层面达成了一致。不过由于前集成电路时代的内存介质是多种多样的,作为学术传统——「主存 (Main memory) 」一词被学界沿用至今。而与时俱进的工业界则不那么死板,在内存介质固定为RAM (Random Access Memory) 之后就抛弃了拗口的Main memory,在严谨的时候用ram其余情况下一律通称memory甚至简写成mem。于此相映,中文技术圈对ram/mem的通称「内存」应该就是「内部存储器 (Internal Memory)」这一俗语的略称,毕竟学术界坚持的「主存/辅存」实在是太学究气了,完全没有「内存/外存」这么生动形象。不过时至今日「内外存」之分早已名不副实,工控领域的「单片/SoC」现在也已遍布民用数码设备——CPU、内存、硬盘以及声显网卡全都焊死在主板上了。「外部存储器 (External Memory) 」这一本就不常用的说法被淘汰也同样符合发展规律,而大众广泛接受的「内存」尽管被各种误用却依然顽强地活在我们的话语系统 (Linguistic system) 中。

内外存储器之辨

无损图床

代码块
HTML
自动换行
复制代码
https://files.catbox.moe/pvzw2a.png
复制成功

文章开头0x00的图是以树状拓扑的方式来做概念分类的,是一种结构主义的思路。而上面这张简化版的图是想要强调其中的方向性——用词/能指越往左越笼统但也越不容易错,相反则越精准但也越容易失误

我的主张是,面对外行人/技术小白误用“内存 (memory) ”一词的时候,既不要指出对方是错的也不该强迫自己屈就对方而跟着犯错

作为心智成熟的技术宅,动不动就给别人纠错并主动讲解技术细节的蠢事我们已经不会再做了。但委屈求全、压抑自我、知错犯错的做法对精神负担也不小,表面上成熟体贴但实则也是对自己的不负责任。

  • 我们要做的首先是发自内心的认可对方口中的「内存」没有用错——作为「内部存储器」的简称,「内存」可以指代一切在物理或逻辑上位于设备内部的「存储器」,包括属于「本地存储」但是可移动的「内存卡 (memory card) 」。

  • 其次是在认可对方是正确的前提下,作为水平更高的人要使用更为精确的用语——完全弃守「内存」一词的阵地,转进新高地——“你说的内存空间应该指的不是「主存 (RAM/DRAM)」缓存空间而是闪存 (Flash Memory) 存储空间吧 (笑) ”

  • 对方如果一脸蒙逼就让对话顺着继续不要多说,如果对方表示出好奇和兴趣就展开一点点来解释这两种专业术语的区别并肯定对方的内存没用错。无论是哪种情况,全新的能指已经打入了对方的无意识,总有一天他会不知不觉、阴差阳错地了解到其中的含义,让深藏在本我中的新能指浮出水面——编入并成为「能指链」上的一环,渐渐滑动到「内存」的旁边并最终替换掉它。

这样一来,结果必然是学习了新知的小白和向世界传播了真知的高手——所有人幸福的世界达成了!

其实,钻牛角尖、求知求真并不是这之中最重要的事,科普他人、传道受业解惑甚至也不算。最重要的是要认知到:

我是不可能绝对正确的——真正的开放心态是要保持「对内怀疑、 对外好奇」的。

做那个更加正确而不是指出错误的人——我是对的不能直接推导出对方是错的,对立双方不必然是对与错的冲突,而可以是对与更对的升华。


参考资料:

代码块
HTML
自动换行
复制代码
- On storage
        https://en.wikipedia.org/wiki/Computer_memory
        https://en.wikipedia.org/wiki/Semiconductor_memory
        https://en.wikipedia.org/wiki/Computer_data_storage
        https://en.wikipedia.org/wiki/External_storage
        https://m.weibo.cn/detail/4856479972589725
        https://www.gcores.com/articles/146222
- 参考教材
     存储器的类型与结构/存储设备
          《计算机科学导论》原书第3版 
          《计算机体系结构 量化研究方法》(第5版)
     存储器层次结构/硬件系统组成
          《深入理解计算机系统》
          《现代操作系统》(原书第4版) 
     内存的误译
          《计算机系统要素 从零开始构建现代计算机》
- Memory Hierarchy
		https://computerscience.chemeketa.edu/cs160Reader/ComputerArchitecture/MemoryHeirarchy.html
		https://diveintosystems.org/book/C11-MemHierarchy/mem_hierarchy.html
		https://en.wikipedia.org/wiki/Memory_hierarchy
- 物联网硬件分析
		https://iot-security.wiki/hardware-security/hardware/preliminary.html
复制成功