程序员区提到的“内存”不应该默认是“memory”吗

2022 年 8 月 5 日
 Ayanokouji
我经历过自己组装 pc ,买过内存条和硬盘。
为什么到手机就混乱了呢。

另外苹果官网的文案是:
购买 iphone 选择时:
存储容量:你需要多大的存储空⁠间?

购买 m2 air 选择时:
内存:多大的内存适合你?
存储设备:多大的存储容量适合你?

不清楚其他手机厂商的文案是啥。
17520 次点击
所在节点    程序员
159 条回复
brader
2022 年 8 月 6 日
之前看到的概念,忘记是从什么角度区分了,叫法是分为 内存、外存,我感觉这个叫法很清晰。

然后说下 PC 大家在日常中叫法,我遇到的比较多叫 内存、硬盘,这点没啥问题。

然后到了手机端,内存 我觉得也没问题,但是还一个 手机系统是写的 存储,大家交流口语中,也不会叫硬盘,我身边的亲人朋友交流都是说 内存多大 之类的,其实他们口里说的 内存 就是等于 硬盘、存储,运行内存 就是等于 内存,为了和他们好交流,我也迎合他们这个说法, 所以才会感觉很混乱吧。
zhizunzz
2022 年 8 月 6 日
我跟别人说内存就是内存,手机我都是说容量
rb6221
2022 年 8 月 6 日
我知道手机区的“内存”说法有问题,不过一般我不会计较,反正是对别人说的,只要他听得懂就行
你也知道说法有问题,但是我对你说手机内存 256G 你也听得懂什么意思吧?没错,语言就是在无形中改变和演化的,要怪就怪简中吧
markgor
2022 年 8 月 6 日
年纪小会上火,会较真。
现在年纪大,想的都是如何让别人理解我说什么,至于规范什么的,只会令我浪费更多的时间解释。
v2kk
2022 年 8 月 6 日
@churchill 确实同意,按你的说法,那这世界 sb 还挺多的,可能你爸爸妈妈也是其中一员哦。
hahaayaoyaoyao
2022 年 8 月 6 日
其实硬盘也可以放内存用
SPX6900
2022 年 8 月 6 日
之前和楼主想法一致,几天前在 v 站看到一个帖子:手机买多大内存合适?下面还加了“ps:本人和主流叫法不一致,内存=本地存储”,可能很多人叫内存也和这个帖子的哥们一个想法吧
jj256
2022 年 8 月 6 日
当年还存在 micro sd 卡这么个东西,为了区分就有内部存储和外部存储这俩,内部存储就被简称内存了。也许当年哪个文案为了方便大众理解简称内存就这么流传下来了。
jj256
2022 年 8 月 6 日
补充一点 手机真正的内存被叫做运行内存(运存) 大概~
FrankHB
2022 年 8 月 6 日
大多数程序员仍然需要了解的组成原理科普:

每个程序员基本迟早都得了解存储的层次体系(memory hierarchy) :寄存器(register) 、缓存(cache)、主存(main/primary memory) 、辅存(secondary memory) ,即便大多数语言完全不区分其中的种类,但是对实际质量影响太大了做不到全部无视。
但仍然应该注意通用语言不鼓励你强行区分实现细节,所以讲 memory ,程序员首先需要理解可能是以上的任何一种——即便 main memory 是主流实现的最常接触的 memory ,也不应该混同。
memory 比较正常的翻译就是“存储”( storage:存贮)。对面的“记忆体”也还行。“内存”是个很差的翻译,本义是在线存储(online memory),指 secondary memory 前的 hierarchy 。但是约定俗成对应 memory 也罢了。对应的“外存”是指离线(offline) 存储。离线是指能力(capability) ,而不是指状态,所以你硬盘就算一直加电联机也叫外存。内存和外存指一般用途,是和存储体系并列的分类。

另一种分类关于物理特性。最主要的大类是易失(volatile)/非易失(non-volatile)。外存要求使用易失存储实现。具体元件分为锁存器 /SRAM/DRAM/ROM 等等,这些和存储体系不完全正交,但属于另外的分类。

大多数情况下,主存是使用 DRAM 实现的物理内存。这是操作系统或者独立(freestanding)实现(或称为 bare-metal )的应用会看到的主存视图。对应用,典型情况使用虚拟内存空间,即经过被支持地址翻译(通过 MMU )的体系结构地址翻译映射的空间。这些空间实际来自于物理内存以及辅存中的交换空间(swap)。有些实现,如 IBM system i 直接使用 128-位地址空间,把主存和辅存都编址到同一个地址空间提供给应用。大部分常见实现都仍然不支持以相同的方式访问主存和辅存。
值得一提的是,辅存可能不是外存。虽然罕见,辅存也可能是易失存储并作为内存,例如 NDS 的 Slot-2 扩展 RAM 卡。使用这类扩展内存通常需要一些特殊的编程技术。

@seanzxx 这个图虽然罗列了不少要点,但是都放在一起技术上并不正确。另外,一些实现其实会按驱动类(driver class)区分设备,而并不对应图中的具体分类。这种分类下设备可能是虚拟的。

把主存叫做运行内存技术上不算错,但根本是冗余的。
FrankHB
2022 年 8 月 6 日
补上漏了的结论:严格意义上 memory 叫内存不合适。但是手机的存储空间实际上是内存+外存,把存储和内存对立技术上也是错的。
程序员还应该注意内存使用到非主存的物理实现。主要编程语言通常只能操作默认的地址空间,不可能排除寄存器和缓存,甚至连 swap 都不保证能可移植地排除(一个副作用是按字节访存忽略内存延迟都不保证 O(1),悲……)。

存储容量单位的差异不重要。钦定用 IEEE 词头就不会有歧义了。不精确更多是系统 UI 惯出来的。
但是不是所有存储都支持按字节寻址。这个意义上倒是更应该注意,空间上 1B 和几 bit 没有固定换算关系。常用体系结构默认 1B=8bit ,但是并非一直如此。ISO C/C++支持至少 8bit 。POSIX 重新限制回 8bit 。而具体存储介质上就更不固定,比如算上纠错码,光存储的 1B 实际可以超过 10bit 。

题外话:WM 时代时的 ROM 空间就已经被叫 internal memory 了。这才是“内存”的正经原文。

@catalysia 需要纠正一个错误:不是所有联机的存贮设备都可以叫做内存。
上面提过内存和外存的界限是能力而非联机状态。对冯·诺依曼机,能力指能被控制器直接访问,你的例子中需要另外的设备翻译 I/O 请求,就都不算内存。只是现在大多数都是混入了缓存的修改哈佛结构,算是加了不少飞线,甚至还有两用的设备(比如傲腾),这个情况才真正在体系结构上模糊界限。这个界限通常在 ISA 之下(缓存对 ISA 以上原则不可见)。ISA 的编程接口向上可以虚拟出内存设备,但已经不算是冯·诺依曼机了——而是更具体的寄存器-存储机和其它具体编程语言对应的抽象机。
Osk
2022 年 8 月 7 日
歪个楼, 那 RAM 区(运存)和 ROM 区(存程序代码)共享同一个存储硬件的算什么存.

/doge/ 滑稽




其实主要是各种存太多了, 非从业人员搞不明白, 一部分厂商宣传时也滥用名词...

一般情况下, 大家都能理解的语境倒还好, 就怕一些奇怪的语境:
我手机 8GB 的内存, 我几年前的旧手机 8GB 的内存.
我电脑内存 128GB, 你 surface 平板内存只有 128GB....

这就没法交流了.


另外:
ram 可以在系统内部, 也可以在系统外部;
rom 可以在系统内部, 也可以在系统外部;

internal 相对于 external: 表明位置;
RAM 相对于 ROM 等: 表明类型.

我们常见的 RAM 对应的特征是: 断电易失, CPU 可直接寻址.
但计算机世界(嵌入式也是计算机)里, 太多模糊的边界了, 有断电不易失的 RAM, 也有 CPU 能直接寻址访问的 ROM...

非要细究就得考古... 根本分不清.


我的解决方案是, 尽量不用这些模糊的词语+根据语境决定用词, 另一个经典案例:
"进入 BIOS 设置中打开 BIOS 模式启动.:


是不是很迷惑... 确实, 所以现在很多地方这样称呼的:
进入 `固件` 设置中打开 `Legacy/传统` 模式启动. (虽然固件也是一个模糊词语, 一个主板上就一大堆固件, 您指哪个固件?)



把自己说晕了....
Osk
2022 年 8 月 7 日
另外 1024 进制和 1000 进制这个, 不能作为参考依据.

厂商太鸡贼:
1MiB 的芯片非要写成 8Mbit; 原因不清楚, 但估计看起来有点大, 但大部分用户不会直接用 bit 这个容量的, 就算是单片机大部分情况下也不至于. 包括: SRAM/DRAM/EEPROM/NOR FLASH/NAND FLASH 等芯片很多都是写的 xxx bit.

1MiB = 1024 KiB
1MB = 1000 KB

其实硬盘厂家没乱写, 内存厂商在乱写呢, 明明是 x GiB 内存.
felixcode
2022 年 8 月 7 日
@Osk
Windows 里开机故障诊断用的 UEFI Firmware Settings ,还是挺准确的。
所以可以分别称 BIOS 固件和 UEFI 固件。
Osk
2022 年 8 月 7 日
@felixcode 是的, 事实上 BIOS 和 UEFI 应该算是完全不一样的东西, UEFI 替代了 BIOS.

但是大部分人在使用 UEFI 中, 却仍称呼 UEFI 为 BIOS 就会迷惑了, 特别是 UEFI 的 CSM 支持 BIOS 模式启动...

(实际上我也经常叫 BIOS, 因为说固件或者 UEFI 虽然相对更准确, 但反而更不容易交流, 别人会蒙的)
Remember
2022 年 8 月 7 日
@Osk 就不存在 GiB MiB 这种东西,这玩意是硬盘厂偷工减料被人骂了很多年后发明出来堵用户嘴的。
内存厂没一个标 GiB MiB 的。
Yzh361
2022 年 8 月 7 日
内存就是运行内存,RAM

人们普遍把 存储空间 说成「内存」。
我身边一些苹果用户经常这样说。
「你的 13 内存多少?」「 256G 」
zhlxsh
2022 年 8 月 7 日
看了这么多评论突然也想说两句哈哈
1. 我们的目的还是沟通准确
2. 程序员社区也应该有刚入门甚至没入门的人可以逛
3. 学计算机基本都看书,玩手机游戏、微信约妹子不必
4. 计算机方面连在总线上的只有高速设备,所以内存和存储可以很方便的区分开。而手机厂商把能不能拆开当作标准,管自带的存储叫内存。说起来应该让厂商的宣传部门背锅的。甚至某厂商把正反可插的 type-c 标准叫做华为口呢。
MEIerer
2022 年 8 月 7 日
我觉得爱说啥说啥,能理解就行
e9pWeUbh9PGCnp95
2022 年 8 月 7 日
記憶體, 硬碟,固態硬碟

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/870855

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX