V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Ayanokouji
V2EX  ›  程序员

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

  •  1
     
  •   Ayanokouji · 2022-08-05 12:29:52 +08:00 · 13761 次点击
    这是一个创建于 849 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我经历过自己组装 pc ,买过内存条和硬盘。
    为什么到手机就混乱了呢。

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

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

    不清楚其他手机厂商的文案是啥。
    第 1 条附言  ·  2022-08-05 13:06:52 +08:00
    我个人观点认为:作为程序员,手机的存储空间也不应该简称内存,但是非程序员爱叫啥就叫啥吧
    后端肯定要和内存打交道的
    app 端闪退也要分析内存的
    前端也应该了解内存吧,数据量大,渲染慢也应该要分析下内存吧
    不然和别人讨论内存,双方概念都不统一,怎么解决问题
    第 2 条附言  ·  2022-08-05 21:53:11 +08:00
    维基百科解释:内存是 CPU 能直接寻址的储存空间
    补充点我觉得有意思的知识
    内存单位是按 1024 来计算的,存储现在厂家都默认按 1000 来计算
    从这个角度看,能说明谁才是内存了吧
    159 条回复    2023-11-01 10:03:18 +08:00
    1  2  
    Cbdy
        101
    Cbdy  
       2022-08-05 23:31:46 +08:00 via Android
    上过组原课的应该都知道内存是啥,外存是啥
    Ayanokouji
        102
    Ayanokouji  
    OP
       2022-08-05 23:41:11 +08:00
    @hftrrt 不是吧,nvme 的固态硬盘也是有自己的主控芯片
    koebehshian
        103
    koebehshian  
       2022-08-05 23:55:12 +08:00
    建议从原理出发,参考“磁盘、光盘”,叫“电容阵列”,简称“容阵”
    jim9606
        104
    jim9606  
       2022-08-06 00:22:41 +08:00
    翻译商店文案的人不是程序员,可能只是一班打算把 Mac 当奢侈品卖的人而已。
    fackVL
        105
    fackVL  
       2022-08-06 00:32:42 +08:00 via iPhone
    那个人可能是个门外汉那种吧
    littlewing
        106
    littlewing  
       2022-08-06 00:32:49 +08:00
    干脆学 ww 叫记忆体吧
    Caan07
        107
    Caan07  
       2022-08-06 00:41:22 +08:00
    笑死,我某个微信群以前经常把内部存储称为内存,后来硬生生被我和另外两个主力烂果的群友把内存和内部存储分开了,现在他们称内存都知道是 RAM ,例如 12GB ,而 512GB 就变成内部存储和存储容量了,哈哈哈哈

    PS:那个群没几个程序员,基本各行各业都有。
    felixcode
        108
    felixcode  
       2022-08-06 00:45:49 +08:00
    所以以后谁要是下订单买 16G 内存,就可以发货 16G 的 SD 卡了是吗?不要上纲上线哦
    Macolor21
        109
    Macolor21  
       2022-08-06 00:47:24 +08:00
    最难说出口的三句话:

    1. 我错了
    2. 我需要帮助
    3. ...


    我大概是在大学的醒悟了,我只是个平凡人,知错就改就可以了。
    dxgfalcongbit
        110
    dxgfalcongbit  
       2022-08-06 00:51:45 +08:00 via Android
    寨厂才管外存叫内存,大厂该写内存的地方都是写内存。
    catalysia
        111
    catalysia  
       2022-08-06 02:09:59 +08:00
    @Ayanokouji 你这正好碰上我专业了,我学计算机基础科学的,虽然我大学还没学完我们系就并入另外一个学院了
    虽然我是个门门挂科的学渣 但我还真能纠正你 在 冯·诺伊曼结构中 计算机内部存储器 Computer memory 内存还真就是指的 易失性存储器 Volatile memory 和非易失性存储器 Non-volatile memory 的统称 其固态硬盘 Solid-state drive 和上面的 Flash ROM 以及 硬盘 都属于 Non 也就是说无论你指的内存是掉电就没得 volatile memry 还是能长时间保存数据的 Non-volatile memory 都是内部存储器 memory 是冯诺依曼结构中 memory 存储器的这个部分

    而外部存储器 或者不管你叫啥吧 需要系统在离开这个存储器后 依旧能正常工作 独立工作 完成包括开关机的整个循环
    比如 软盘 光盘 u 盘 sd 卡 tf 卡 这些在平常使用中属于外存 因为他们在冯·诺伊曼架构中并不是 memory 而是 i/o 他们实际上是和打孔机带 打印机里的纸 显示器屏幕上的画一样 被存储起来了 不再影响系统的运行了

    举几个极端的例子 比如使用 linux live cd (话说这玩意现在还有人用吗?)那光盘就是内存
    任天堂的 FC 磁碟机 在软盘插入后接管 FC 的系统 此时软盘就是内存
    使用网卡远程无盘启动 那网卡就是内存
    你在一个路由器上插个 u 盘 然后把 sda 地址 mount 到 jffs 或 swep 那这个 u 盘就是内存
    你让打孔机输出一段程序的孔 再放入计算机中读取这个打孔带来运行 那这个打孔带就是内存

    你使用带有内存镜像功能的服务器主板 在上面插上带有超级电容和锂电池的内存然后用 ramdisk 把他虚拟成磁盘用来存储数据后在拔掉偶数条 那这些内存也成了外部存储器

    冯·诺伊曼架构中 存储器 memory 和输入输出设备 I/O 是逻辑上的概念 而非固定的物体

    一个数据是当前架构系统中必须使用的 就是内存 不需要使用的已经输出去就是外存
    甚至一个数据所在的设备 这一秒是内存 下一秒就是外存了

    所以如果你觉得约定俗成的 内存就是指易失性存储器 外存就是指非易失性存储器
    那内存是存储器 运行存储器是 运存也是约定俗成

    而如果你拿冯·诺伊曼架构来表达区别 抱歉 你错了
    hoyiyang
        112
    hoyiyang  
       2022-08-06 03:59:54 +08:00 via Android
    @churchill 确实同意,按你的说法,那这世界 sb 还挺多的,可能你爸爸妈妈也是其中一员哦。
    buttenkill
        113
    buttenkill  
       2022-08-06 08:06:02 +08:00
    那家伙确实是傻逼,用错了词什么都是小事关键是这个鸟态度,人家只是客观的指正,你实在不愿认错干脆不回就行了非要阴阳怪气人家,人贱嘴硬。
    keepeye
        114
    keepeye  
       2022-08-06 09:39:49 +08:00
    我印象中最早普及 mp3 的时候就开始这么叫了,把容量叫做内存,因为那时候对于普通人来说压根就不知道电脑内有个东西叫内存条,只是觉得内存这个词挺高级的就直接拿来用了,关键商家卖的时候也称之为内存,很快这种叫法就在民间普及了..
    其实,我认为一词多义也没啥问题,关键看使用场景吧,对于外行来说内存==内部存储这么理解也不是不行
    当然程序员还是分清楚点比较好
    Spark100
        115
    Spark100  
       2022-08-06 10:06:22 +08:00
    @FakerLeung 这图应该不是真的吧? 应该不会这么准 1024GB
    我电脑内存 48G 显示 47.9G
    tairan2006
        116
    tairan2006  
       2022-08-06 10:07:11 +08:00
    不行你可以说英文嘛,Storage 和 RAM 还是能分清的吧…

    当然我个人建议还是说运存、闪存之类的
    pmispig
        117
    pmispig  
       2022-08-06 10:43:10 +08:00
    这年代管好自己就不错了,还想约束别人,别人只会喷你一脸
    wszgrcy
        118
    wszgrcy  
       2022-08-06 10:57:39 +08:00
    我以前还一直以为手机里的字库是存字的呢....
    asen1987
        119
    asen1987  
       2022-08-06 11:09:13 +08:00
    @keepeye #114

    我个人印象不是这样,MP3 普及的时候还在网吧时代,能知道内存这个词的大多还都电脑上知道的,那时候还有 windows 内存整理 /清理的操作呢,跟存储的硬盘完全没有混淆。也不存在只用 MP3 不碰电脑的,因为 MP3 需要电脑传歌。

    真正混淆起来的时候还是手机 ram 在 GB 级别开始,会有人弄错,“你内存怎么只有 2G ?我的有 8G”
    然后就开始有不要脸的厂家将错就错,“8G 超大内存”
    以至于还有无知者说“现在谁还玩电脑啊,淘汰的玩意,内存还没手机大”

    所以为什么纠正内存是 ram 说法有必要性?因为这个说法的确才算正确。
    不能因为不知道的人乱用得多了就改变其定义,否则造成的混淆是很难解决的。
    这和霰弹枪、阈值不一样,这些读错的词即便读错了,也较少会产生误解和混淆。
    内存不是这样,它不止会混淆,还会真金白银的让人受骗,而这可能本来就是厂家的阴谋。

    其实要脸大厂都写的很清楚,你打开手机看,内存就是内存,存储就是存储,一清二楚。
    keepeye
        120
    keepeye  
       2022-08-06 11:33:49 +08:00
    @asen1987 我记得那时候下歌曲,去卖 mp3 的店里面下,几块钱下一次吧,去网吧的毕竟是少数
    brader
        121
    brader  
       2022-08-06 11:37:04 +08:00
    之前看到的概念,忘记是从什么角度区分了,叫法是分为 内存、外存,我感觉这个叫法很清晰。

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

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

    每个程序员基本迟早都得了解存储的层次体系(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
        131
    FrankHB  
       2022-08-06 23:31:02 +08:00
    补上漏了的结论:严格意义上 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
        132
    Osk  
       2022-08-07 00:27:08 +08:00
    歪个楼, 那 RAM 区(运存)和 ROM 区(存程序代码)共享同一个存储硬件的算什么存.

    /doge/ 滑稽




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

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

    这就没法交流了.


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

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

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

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


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


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



    把自己说晕了....
    Osk
        133
    Osk  
       2022-08-07 00:33:17 +08:00
    另外 1024 进制和 1000 进制这个, 不能作为参考依据.

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

    1MiB = 1024 KiB
    1MB = 1000 KB

    其实硬盘厂家没乱写, 内存厂商在乱写呢, 明明是 x GiB 内存.
    felixcode
        134
    felixcode  
       2022-08-07 00:44:31 +08:00 via Android
    @Osk
    Windows 里开机故障诊断用的 UEFI Firmware Settings ,还是挺准确的。
    所以可以分别称 BIOS 固件和 UEFI 固件。
    Osk
        135
    Osk  
       2022-08-07 00:58:32 +08:00
    @felixcode 是的, 事实上 BIOS 和 UEFI 应该算是完全不一样的东西, UEFI 替代了 BIOS.

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

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

    人们普遍把 存储空间 说成「内存」。
    我身边一些苹果用户经常这样说。
    「你的 13 内存多少?」「 256G 」
    zhlxsh
        138
    zhlxsh  
       2022-08-07 07:13:26 +08:00 via iPhone
    看了这么多评论突然也想说两句哈哈
    1. 我们的目的还是沟通准确
    2. 程序员社区也应该有刚入门甚至没入门的人可以逛
    3. 学计算机基本都看书,玩手机游戏、微信约妹子不必
    4. 计算机方面连在总线上的只有高速设备,所以内存和存储可以很方便的区分开。而手机厂商把能不能拆开当作标准,管自带的存储叫内存。说起来应该让厂商的宣传部门背锅的。甚至某厂商把正反可插的 type-c 标准叫做华为口呢。
    MEIerer
        139
    MEIerer  
       2022-08-07 09:27:16 +08:00
    我觉得爱说啥说啥,能理解就行
    e9pWeUbh9PGCnp95
        140
    e9pWeUbh9PGCnp95  
       2022-08-07 09:58:46 +08:00
    記憶體, 硬碟,固態硬碟
    7RTDKSAK
        141
    7RTDKSAK  
       2022-08-07 15:24:42 +08:00
    @agagega
    plugin,调用操作系统 API,依赖于操作系统,即不能跨平台使用---俗称"插件"
    addon/extension,调用浏览器 API,依赖于浏览器,即不能跨浏览器使用---俗称"扩展"
    moioooo
        142
    moioooo  
       2022-08-07 18:59:20 +08:00
    根据对话场景、谈话的对象自己区别呗,不确定的就多问一句。
    如果是熟悉的人,那就提醒校正一下。不熟悉的或者不适合较真的,知道个意思就行。
    比如“你手机多大?“,一般就是问的存储。64g 、128g 等等。
    要是”我手机 4g 内存,你的呢?“,那我会回复:”我也 4 个 g“
    hatebugs
        143
    hatebugs  
       2022-08-07 21:08:04 +08:00 via iPhone
    @doveyoung 阈值 优惠券 认同,别人爱咋咋叫吧。一二三级域名这个感觉定义比较模糊,一般都是交流前先约定比如 a.com 是一级还是二级,再去沟通,感觉还好,请教下标准里 a.com 算一级域名吗?
    tril
        144
    tril  
       2022-08-08 03:19:47 +08:00
    @Remember 二进制词头的具体标准:IEEE 1541-2002 和 ISO/IEC IEC 80000-13:2008 。只是标准出的太晚了,大家不统一也正常。
    angrylid
        145
    angrylid  
       2022-08-08 09:52:27 +08:00 via Android
    所以应该叫蒙莫利和斯托瑞基以消歧义 /doge
    qrobot
        146
    qrobot  
       2022-08-08 11:22:28 +08:00
    @binfengxy #83L 这就是你把 DDR4 设置成 Disk , 把 HDD 设置成 RAM 的原因? [doge]
    qrobot
        147
    qrobot  
       2022-08-08 11:31:40 +08:00
    @catalysia #111L 我非计算机专业, 请教一下, 内存( Volatile memory )的作用是什么? 理论上不需要这个也是可以运行系统的,例如 `linux live cd` 等等
    qrobot
        148
    qrobot  
       2022-08-08 11:32:48 +08:00
    @catalysia 是因为技术和材料的问题吗? 导致只能有设计 Volatile memor 来进行解决速度效率的问题
    catalysia
        149
    catalysia  
       2022-08-08 12:29:44 +08:00
    @FrankHB 冯·诺依曼架构中 内存 memory 和输入输出设备 I/O 是平级的 并不存在谁被逻辑单元直接控制 逻辑单元只能直接控制累加器 accumulator 你去看看最早的冯·诺伊曼原型机
    打孔带是直接被放进逻辑单元里的 也是直接被逻辑单元的打孔机打出来的 打孔带即是内存也是硬盘
    所以内存是概念 不是能力 是这个设备正在做什么用途决定的 而不是看这个设备能不能被与逻辑单元之间的能力关系
    至于你说的什么翻译请求 通过内存二次加载之类的都是后来的扩展型搞出来的
    这已经不是单一的冯·诺依曼机了

    顺便说下 内存 这一词的翻译就是内部存储器 指参与系统运转的 累加器 寄存器 随机读取内存 硬盘 和软盘
    出自《计算机科学基础》

    这就是内存最早的含义 致于后来怎么延伸那是后来的问题 这肯定有个先来后到 内存被特指能被 cpu 直接读取的主内存
    这是后人的约定俗称

    就像老八就是指第八个兄弟 至于后来特指吃 shit 那位 这是后来的约定俗成
    catalysia
        150
    catalysia  
       2022-08-08 12:49:31 +08:00
    @qrobot 成本问题和路径依赖吧
    内存的初衷是解决累加器或者寄存器 以及 Nor 太贵的问题
    先是累加器完全不够用 所以需要内存
    而非易失性内存 nor 太贵了 所以降低成本搞了易失性的
    然后从业者越来越多发展起来了 百万老公衣食所系
    以至于寄存器大到可以装系统 固态硬盘快到比内存还快 我们还是用内存
    毕竟发展了这么多年有好多基于内存的优点我们还放不下

    这个有点类似 ipv4 和 nat
    为了解决 ipv4 地址不足搞了 nat
    结果再 nat 基础上建立了内网安全,一群相关的从业人员把这个玩到了极致
    结果 ipv6 无线的地址不需要端口映射这个概念了反倒没有 ipv4+nat 那么好用了
    Remember
        151
    Remember  
       2022-08-08 13:48:33 +08:00
    @tril 这个标准就是硬盘厂推动的,给自己偷工减料创造了一个依据。
    Zien
        152
    Zien  
       2022-08-08 14:15:15 +08:00 via iPhone
    @kop1989smurf 对对对,感觉和这个有关。然后大家都将错就错,选择最普遍接受的词了
    FrankHB
        153
    FrankHB  
       2022-08-08 20:56:43 +08:00
    @catalysia 原型机……你说的是 First Draft of a Report on the EDVAC 里的具体设计?那反而更不支持你的说法,因为里面 CA 、CC 、M 、I 、O 、R 这 6 个部件是分离的,明确区分 M 和 R parts ,CA 、CC 和 M 相连,而 R 得通过 O 中介。至少考虑拓扑结构,这里就自始至终都无法让 M 和其它存储部件平级,除非是你把 R 抽象掉合并回 M 作为实现细节,然而就算是今天的物理机器都没这样(甚至软件上也只有 IBM System i 等少数实现做到了统一 M 和 R )。
    后来所谓的冯·诺依曼机的共性其实无视或者至少明确削弱了这点(要义在于“程序存储”,CA/CC 都能访问 M ,而不在乎 M 和 I 、O 、R 之间怎么配置),但是实用体系结构研究中要求具有一定的静态属性以便能取得比较具体的配置(≈能造出相对固定物理形态的设备以及设备互联),所以习惯上我没看到有按你说的怎么用那么 ad-hoc 的分类。

    翻译请求是泛化了的体系结构才会关心的,但也就是因为这里的判断准则也是“程序存储”这种“能力”而非当前实现的功能。只要你的 CA/CC 部分足够弱,在一个实现冯·诺依曼原始设计的或者其扩展的机器上可以强行拒绝实现这些功能的指令而重新移除这些功能,但这不表示这种机器的物理配置不是冯·诺依曼机。这里完全都是同一种体系结构(纯粹的冯·诺依曼机)来说的,改变的配置都是实现细节。
    倒是 model of computation (而不是 model of computer )会有类似你的思路,但基本上也不会叫 memory ,而是叫 store ;而且很少有动态配置,因为这些抽象机对应的大部分原生语言的核心语义规则都不支持动态配置,至少不会动态掉干掉活动记录和 store 这样主要的存储部件。

    内存当然很自然地是 internal memory 的直译,对应这里的 M part ,这没什么问题。但原始文献中其实 memory 通常专指 M 但是有时候又同时指 M 和 R (比如比较 M 和 R 说明为什么需要区分两者的时候),所以歧义一直就有,原则上不可能不多加对应关系就翻译对。
    我的意见是既然现代观点大部分用户(软件作者+最终用户)接触到的 memory 和 internal memory 是两回事,那么就不要混起来,只有少部分历史上下文才有容忍需要消歧义的必要。
    主存也是自然的说法,因为 M part 在后来的设计普遍就被拆分了,特别是几乎所有用户都没法对主存以下的存储编程,所以要严格就不能无视主存和 cache/寄存器的差别。然而所有这些部分自始自终都是“内存”。把主存和内存混在一起就不可能自然,只能解释为体系结构误解太多,不能编程的部分(容量又那么点)用户平时就忽略了,即便它们的日常作用就非常重要。
    catalysia
        154
    catalysia  
       2022-08-09 18:08:05 +08:00
    @FrankHB 加法器是直连累加器 然后累加器直连的打孔带 也就是说 也就是说累加器负责引导 I 和 O
    而加法器连接 M 不需要经过累加器 M 和打孔带就是平级的 除非你这里把累加器当作了 M 的一部分
    但是冯·诺依曼的草图里明显 M 是 M ACC 是 ACC

    还是退到最原始的 打孔带作为存储的时候 这里要存储翻译干啥

    最后我对翻译的理解就是约定俗成即可 有歧义就有歧义

    现在家里独生子女多了 所以老八非得指那些吃 shit 的就指咯
    你非得说 我家里就有第八个孩子 这么污名化老八不对 那我也没办法

    而且歧义这个事情本来就是语言的特点之一 不是 bug 是特性
    中文和英语都不是严谨语言 歧义是有存在必要的 是语言简化的充分必要条件
    实在非要用严谨语言那程序员干脆都学法语得了
    法语严谨没歧义

    没有歧义的语言就没活力且学习和使用成本特别高
    顺便说下你的这一大段回复里就有很多歧义的地方
    FrankHB
        155
    FrankHB  
       2022-08-10 01:35:40 +08:00
    @catalysia 我指的是 1940~1950 年代年代的早期数字式电子计算机中通常被当作冯·诺依曼机鼻祖的具体设计。
    还是不清楚你说的最原始的是指哪个。实际的 EDVAC 在 1949 年交付,外存是磁带(一说磁性钢丝),直到 1954 年才升级支持打孔卡 I/O ,1955 年支持磁鼓。(题外话,最早的直连磁记录的键盘输入设备 UNITYPER 在 1952 年就能用了。)

    我强调的是,即便是这类最早期的实用设计,也是区分两种 memory 的。原因很现实:考虑延迟和持久化要求,没什么同时适合担当两种部件的物理实现——甚至到现在也很少见,以至于仍然有物理内存和硬盘的差异。
    即便现在所谓的冯·诺依曼机习惯上不那么强调不同的 memory ,在这个问题上仍属于横插一杠——要在体系结构上消除两类存储的差别,通过随意模拟经典的冯·诺依曼机凑数是不够的。

    至于翻译,首先要看是否准确达义,约定俗成是在歧义不会阻碍理解的情况下才轮得到考虑的次要的方面。不论是特性还是 bug ,在阻碍主要需求的时候都应当尽量排除。
    如果不是无路可退,就不选择有歧义的翻译,至少是避免卖弄半吊子语言水平增加歧义的翻译(比如什么“堆栈”)。而这里并不属于没词可用的情况。
    现在的状况是已经够混乱了。比如问一个 C 语言用户:寄存器(register)属于 memory 吗?硬盘空间可能作为 memory 的一部分吗?继续放任混用就容易凌乱。
    所以在我经手的技术文献中,memory 通常就翻译成存储。
    catalysia
        156
    catalysia  
       2022-08-10 18:37:51 +08:00
    @FrankHB 你这样依旧有歧义 对于 ios 设备用户来说 如果 memory 翻译成存储 那存储空间不足是说的内存不足吗?删除软件是在释放内存吗?如果硬盘空间不属于 memory 那 cache 和 swap 区算啥?还有把手机上的内部存储器说成硬盘或者闪存也是很大的歧义啊 如果 nand 被叫成硬盘 那 ipods classic 用的 1.5 寸 hard disc 叫啥呢 如果叫闪存 那使用 nor 极平电路存储设备的设备该叫啥呢?使用 POM 的呢?使用 PEROM 和 CMOS 的呢?
    甚至还有 CCD 的设备啊? CCD 算是最 bug 的了 你说他是硬盘吧 unit 可以直接访问它,它掉电就没,它不需要存储翻译 也不需要控制器 你说他是寄存器吧?它在总线外 有独立的 ISP 你说它是内存吧?它有独立供电在系统循环之外,关机它也不掉电,数据也不消失,而且它就在启动时被完全读取进内存 系统没它也没事
    FrankHB
        157
    FrankHB  
       2022-08-12 03:47:35 +08:00
    @catalysia 歧义生效的主要问题是指代不明,同时没法通过补充定义来消歧义。排除歧义的优先顺序不一定就是看歧义“大不大”,而首先要考虑添加消歧义后如何避免逻辑矛盾,否则意味着整个说法就是一团乱。
    一股脑儿把包括提供硬盘空间在内的存储部件都叫 memory 可以不是歧义,因为至少是技术上正确的,memory 就是个系统能支持的顶层分类。全混沌抽象成 memory ,最多只是不够明确而不是歧义。虽说考虑到大多数典型实现的习惯,在物理器件上,强调持久性的 memory 一般会直接叫做 storage ,而名义叫做 memory 的实际自动退化为 internal memory ,但这种情况下仍然不算错,因为内存都是存储。

    同理,内存不足都是存储不足,反过来未必。理由么,用 PL 的话来说,内存是存储的真(proper)子类型,在这个偏正结构的上下文中符合协变,因此形式地有:内存⫋存储→内存不足⫋存储不足。这个推理的依据是普遍的类型论公理,跟直觉相一致。
    删除软件可能真是在释放内存,比如你软件存 RAM disk 上。当然,更多时候软件放在外存,所以直接说“释放内存”一般就是错的。这里麻烦的关节其实是基本会至少隔了个文件系统,所以用户见到的效果不同。如果要强调可用性,那么还不如直接叫“释放空间”,尽管“空间”其实比“存储”更抽象而笼统,但不同上下文体验容易一致。
    cache 和 swap 自然都算 memory 。前者总是内存所以是存储;后者在系统可见的虚拟地址空间视图上属于主存,即便不保证不是内存(无聊点可以 RAM disk 上继续划 swap 出来)且系统自身看到可能不同,说成“存储”也是没歧义的。

    直接把手机外存说成硬盘是错的,因为几乎就没手机真带硬盘。很早以前的 WM 设备能带动内含微硬盘的 CF 卡,基本也就只有这种非主流奇葩配置下才可能偶然正确。
    顺便,现在市面上的手机也有带 SSD 的,但 SSD 不是硬盘。PC 上所谓的硬盘很多也是离谱的,真正的硬“盘”是 HDD 这样的带有机械盘片结构的磁盘(跟软盘相对),而 SSD 一类封装 IC 驱动器大部分存储部件通常就是闪存,恰恰不是硬盘,硬说“盘”(扁的,不要求圆的能转的,其实是 plate 而不是 disk 了)也就是闪存盘。iPod Classic 那种叫硬盘没问题,因为真是 HDD 。
    把 SSD 算硬盘这个怕是真没救了。但这里至少也可以用更准确的说法代替来回避。

    IC 实现的非易失存储可以都叫闪存,尽管这个提法在历史上不能涵盖 PROM 之类的形态。但现时闪存一般不被认为专有的商标,所以就像 PC 不需要专指 IBM PC 一样,可以按照构词追溯到语源之前,追认传统的 PROM 作为现在意义的闪存( flash 指可擦写),这也不会有什么问题。字面上反倒是 ROM 的“只读”尴尬多了,但就是这个都能靠加前缀救回来,扩展闪存的外延又算啥呢?
    再者,现时几乎也就 NAND 和 NOR Flash ROM 两种,限制闪存的具体实现也是不明智的。不必要排除历史或未来的其它实现。

    至于 CCD ,如果你说的是能作为传感器实现部分的那种,那么很明确不属于体系结构意义上的 memory ,尽管它能是物理实现意义上的。就像 SSD 主控里带的处理器甚至 CPU 微架构内部隐藏的协处理器(比如 Intel ME 跑 Minix 的 RISC CPU )也不应被视为整个系统意义上的控制器的一部分一样,这类部件都是体系结构意义下的可选实现细节。即便这类器件在物理上保持作为不同角色的能力,系统的拓扑结构限制了这些能力对系统外部(软件)可见,所以让角色重新回归也没什么意义——除非你讨论的系统能物理地把自己拆了动态重配置这些器件的角色——我是没见过。
    FrankHB
        158
    FrankHB  
       2022-08-12 03:53:06 +08:00
    @FrankHB 注释:RAM disk 也是约定俗称的说法,其实照我上面的观点并不太支持,正经的说法应该是 RAM-backed virtual drive 。但这个实在太啰嗦和不常见了,就仍然沿用了 RAM disk 这个本质有问题但是至少外延上不会有歧义(不会找错东西)的说法——如果照虚拟设备(像 VHD 就不关心真的是不是真能让你看到个长得像 disk 的东西,而只是把 disk 该有的软件可访问的性质都模拟了)这样的意思的理解还是能说得通的。
    usedTo404
        159
    usedTo404  
       2023-11-01 10:03:18 +08:00
    @autumn426 。。。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2610 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:23 · PVG 14:23 · LAX 22:23 · JFK 01:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.