展望 芯片技术
写 这篇文章 的 原因 是 前几天 在 学帝 @XDDongfang 的 一个 帖 (暂时找不到是 哪个 帖 了) 里 和 @dons222 @思维机器 等 聊天, 也讲到 计算机语言 什么的, 学帝 鼓励 “也应该进军芯片” , 我回复 “我随后写一篇 《展望 芯片技术》” 。
我 在 《偏微分方程 张量 矩阵 可以 归为 计算机 语言》 https://tieba.baidu.com/p/6655949347 的 18 楼 说 可以将 芯片 的 设计 分工, 这样 可以 简单易行 。
节选如下 :
“
大家可能会拿 GPU 说事, 说 设计 GPU 需要 图形学 知识, 这么说也对 。 但可以把 设计 GPU 的 工作 分成 2 部分, 打个比方, 小明 负责 设计 图形函数, 小刚 负责 设计 逻辑电路 。 小刚 只要 把 小明 提供 的 图形函数 用 逻辑电路 实现 就可以了 。
显然, 设计 图形函数 是 数学, 设计 逻辑电路 是 系统设计 。
当然, 还要一个 小红, 把 逻辑电路 变成 物理电路, 小红 和 小刚 的 不同 是, 小刚 不必过多关心 硬件工艺, 主要关心 逻辑设计, 小红 需要 关心 硬件工艺, 把 逻辑设计 转换为 硬件设计 。
”
芯片 在 计算机层面 的 设计 和 发展方向, 我写了一篇 《CPU 应该 搞 0 级 Cache , 而不是 大寄存器》 https://tieba.baidu.com/p/7764325871 。 其实 归纳下来 很简单, 就是 一句话 : 把 成本 都 花在 Cache 上, 比 什么都强 。
Cache 能造 快一点 的 就 造 快一点的, 能造 离 CPU 核 近一点 的 就 造 近一点的, 不能 再快 也 不能 再近, 就 多造一点, 增加 数量(容量), 也是好的 。
这样的话, 摩尔定律 还是 能 继续 有效 比较长 的 一段时期 的 。
在 QQ 群 里, 我 和 网友 争论过这个问题, 现在, 我想对他说 : 你 懂 底层, 会 玩 寄存器, 玩 10 个 就 差不多了, 再多 就 乱了(顾不过来), 而且 现在的 大寄存器 一个 顶 4 个, 你还要 按 位 (寻址)访问 (数据), 这不就是 要 管理 很多个 寄存器 ? 就像 耍杂技 同时 在 手里 抛接 三个球 、四个球, 球 太多 就 忙不过来 了 , 也无暇 关心 其它 事 。 少玩 几个 寄存器, 把 底层 的 编译器 / 编译器 的 底层 写得 小而坚固, 我们 可以 关心 点 其它 事情 , 比如 共商大计, 展望未来, 大展宏图, 喝酒品茶, 谈玄论道, 吟诗作赋, 陶冶情操, 增长课外知识, 培养业余爱好, 唱摇滚 什么的 。
芯片 的 电路设计, 也不难, 我写过
《用 逻辑电路 实现一个 开平方 算法》 https://tieba.baidu.com/p/6865666198
《设计 逻辑电路 的 开关元件》 https://tieba.baidu.com/p/6867831769
《设计 逻辑电路 的 开关元件 (2)》 https://tieba.baidu.com/p/6898604921
电路设计 一个 关键的技术 是 计算 和 控制 误差耦合, 这 有一定 难度 。 但 误差耦合 可以 等价 为 阻抗匹配 问题 来看, 这样 就 容易 理解 了 。 在 《设计 逻辑电路 的 开关元件 (2)》 里 讲到 这部分, 节选一段 如下 :
“
这似乎 引出 了 “输入阻抗” 和 “输出阻抗” 的 问题, 两个 元件 要 连在一起用, 输入阻抗 和 输出阻抗 要 匹配, 或者说 符合 彼此 给出 的 规格 , 大概 就是 输入阻抗 和 输出阻抗 问题 吧 。
规格 是指 阻抗 的 范围 , 两个元件 要 连在一起用, 自己 的 输出端阻抗 要在 对方 给出 的 输入阻抗 范围 内 。 以及, 对方 的 输入端阻抗 要 在 自己 给出 的 输出阻抗 范围 内 。
”
想 知道 输入端阻抗 和 输出端阻抗, 就要 将 元件 的 内部电路 等效为 电阻电路, 来 计算出 等效 的 输入端电阻 和 输出端电阻 。 典型的, 把 三极管 这样 的 非线性元件 等效 为 电阻 , 比如
这 4 个 图 是否 都 正确 , 在 正确 的 基础上, 哪一个 最 简化 而 最 接近 实际 ?
若干个 元件 连接 成 一个 电路, 把 元件 替换为 等效电阻 , 就可以 画出 整个 电路 的 等效电阻图, 定义出 电路 的 输入端 和 输出端, 这样 就是一个 模块, 可以 计算出 输入端 的 等效电阻 和 输出端 的 等效电阻 。 进一步 可以 计算出 在 额定电压 下 , 输入端 接入 的 电阻 的 范围, 即 输入阻抗, 和 输出端 接入 的 电阻 的 范围, 即 输出阻抗 。
在 额定电压 和 这些 电阻 范围 内, 电路 里 各个电阻 两端 的 电压 都 可以 获得 正常 的 工作电压 。 这样 就达到了 阻抗匹配 的 效果 。 即 这样 的 额定电压 和 输入输出模块 的 阻抗匹配, 使得 即使 有 误差耦合 , 但 各个电阻 两端 的 电压 都 在 正常范围 内, 电路 可 正常工作 。
上面说, “进一步 可以 计算出 在 额定电压 下 ”, 好像 这个 额定电压 是 一个 值, 那 如果 稍微 偏差一点,会不会 计算出的 输入阻抗 和 输出阻抗 范围 就 有误 ?
好问题 。 实际中, 额定电压 也是一个 范围, 同理, 计算出 额定电压 在 某个范围 时 的 输入阻抗 范围 和 输出阻抗 范围, 就可以了 。
同学们, 以 我们 的 数学知识 、物理知识 、计算机知识, 计算 阻抗匹配 没问题 吧 ? 来, 给点信心, 给点掌声 …… !?
计算 出了 阻抗匹配, 也就 掌握 和 解决了 误差耦合 。
《设计 逻辑电路 的 开关元件》 里 给出过 继电器 的 构造图 :
可知 继电器 的 等效电阻图
继电器 的 等效电阻 就是 两个 不相干 的 电阻, 因此, 可以说 继电器 没有 误差耦合, 是 一个 理想的 开关元件 。 全部 由 继电器 组成 的 电路 的 电路计算 很简单 。
我不知道 为什么要用 Verilog HDL 和 VHDL 这样 的 硬件设计 语言, 我觉得, 数字硬件设计 是 很简单 的 。 软件界 一直 流传着 一个 说法 : 软件界 很羡慕 硬件设计, 硬件设计只要 把 模块 一个个 凑起来 就行了, 一些 元件 凑成 模块, 一些 模块 凑成 更大的模块, 一些 更大 的 模块 凑成 更大更大 的 模块 …… 像 搭积木 一样 。
所以, 我们 按照 这样 把 模块 的 线路图 画出来, 把 每个 模块 的 输入输出 参数 定义好, 不就 设计出来 了 ?
我一直 认为 设计电路 用 模块线路图 就可以, 我一直 提倡 这个 方法 。
我在 《CPU 应该 搞 0 级 Cache , 而不是 大寄存器》 https://tieba.baidu.com/p/7764325871 的 结尾 说
“
我提倡 用 模块线路图 来 设计 硬件电路, 硬件电路 本来 就是 模块化 的 , 用 模块线路图 设计 很适合 。 模块 的 规格, 包括 接口 和 电路参数 作为 模块 的 说明书 单独说明 就好 。
其实 设计 CPU 很简单, 主要 是 制造工艺 和 电路计算 比较难 。
”
我在 《研究一下 CPU 除法》 https://tieba.baidu.com/p/7508676984 的 结尾 说
“
我 提倡 用 模块电路图 + 模块规格 来 做 硬件电路 设计, 真的很爽, 爽死了, 无敌 。
模块规格 包括 模块 定义 、接口 、参数 等 。
”
有人说, 模块线路图 给人看 可以, 但是 怎么把 模块线路图 展开 为 光刻机 能 读懂 的 Map ? 这里 的 Map 指 硅片 上 微观元件 的 结构 和 布局, 光刻机 根据 Map 在 硅片 上 光刻 。
这好办, 我们不是 程序员 吗 ? 写一个 程序 把 模块线路图 递归 展开 为 Map 不就行了 ?
综上, 一个 开源团队 提供出 一套 芯片 设计方案 是 可能 的, 或者说, 一个 开源团队 主导负责 一款 芯片 的 设计 和 研发生产 是 可能 的 。
接下来, 我们 来 展望 未来 的 芯片技术 。 小时候, 看 科普读物 《明天的科学》, 讲到了 未来 的 光子计算机, 就是使用 光子芯片 的 计算机 。 光子芯片 由 光子开关 组成 。 文中说 光速 比 电信号速度 快很多, 因此, 光子开关 比 电子电路 快, 光子芯片 比 集成电路 快, 光子计算机 比 电子计算机 快 。
除了 光子计算机, 我还想到 量子计算机 。 这个 量子计算机 不是 “退火” 、塌缩 、 “平行宇宙” 的 那个 “量子计算机”, 这个 量子计算机 仍然 是 冯诺依曼 计算机, 只是 采用 量子开关 。
量子开关 类似 电子开关(三极管) 、 光子开关, 只不过 利用 量子间作用 来 实现 开关 效果 。
现在 芯片技术 已经达到了 几纳米 的 粒度, 其实 这么小 的 微观元件 间 的 作用 已经 可以是 量子作用 了, 当然, 目前 的 芯片运行 还是 依靠 和 宏观 一样 的 欧姆定律 。
蛋白质 的 分子 比 几纳米 大 , 而 原子 分子 电子(共价键) 之间 的 作用 是 量子作用 。
目前 的 芯片 的 几纳米 的 粒度 在 分子水平, 也 差不多 在 原子水平, 当然, 目前 的 芯片运行 还是 依靠 和 宏观 一样 的 欧姆定律 。
那么, 能不能 利用 分子 原子 间 的 作用 (量子作用) 来 实现 开关 效果 呢 ?
分子 原子 间 的 作用, 我们 最熟悉 的, 最普遍 的 就是 化学反应 。
我 写过 一篇 《浅谈 生物体信号传递》 https://tieba.baidu.com/p/7743406689 , 里面说 “神经信号 的 生化反应 在 分子级 的 反应速度 应该是 纳秒级 的, 就是说 跟 计算机 CPU 主频 差不多是一个 水平” 。
我们 再来 计算看看 。 设 人 的 手指 到 大脑 的 神经通路 长 1 米, 手指 的 感觉 传递到 大脑 的 时间 是 0.1 秒, 则 神经信号 传递 的 速度 = 1 米 / 0.1 秒 = 10 米 / 秒 。 传递 1 纳米 的 距离 需要的时间 = 1 纳米 / ( 10 米 / 秒 ) = 0.1 纳秒 。
假设 CPU 的 一个 核 的 集成电路 的 面积 是 0.1 * 0.1 平方毫米, 相当于 边长 = 0.1 毫米 的 正方形 。 一个 时钟周期 里, 电信号 必须 从 核 的 这一端 传递到 核 的 另一端 , 一端 到 另一端 的 距离 按 边长算, 也就是 0.1 毫米, 一个 时钟周期 按 1 纳秒 算, 也就是 主频 1 GHz, 则 电信号 传递速度 = 0.1 毫米 / 1 纳秒 = 10 万 米 / 秒 。
这里, 我们 计算出的
神经信号 传递速度 = 10 米 / 秒,
电信号 传递速度 = 10 万 米 / 秒
显然, 电信号 远远 比 神经信号 快, 电信号 速度 是 神经信号 的 1 万 倍 。
神经信号 是 化学反应 实现, 化学反应 是 分子 原子 间 的 作用, 是 量子作用, 不过 从 上面 的 神经信号 传递速度 = 10 米 / 秒 来看, 这个 量子作用 的 速度 比 电信号 慢 1 万 倍, 如果 用 这个 量子作用 来 实现 量子开关, 那 速度 也比 电子开关 慢 1 万 倍, 用 这个 量子开关 制造 计算机, 速度 比 电子计算机 慢 1 万 倍 。
也就是说, 仿照 神经信号 传递 的 化学反应 来 制造 量子开关, 速度 比 电子开关 慢 1 万 倍, 这个 不是 我们要的效果, 我们 希望 量子开关 比 电子开关 快 。
但 其实 神经信号 传递速度 = 10 米 / 秒 这个 说法 也有点问题, 我们 是 按照 人 的 体型 和 反应时间 来 估算 这个 速度 的, 但 自然界 中 动物 有大有小, 如果 神经信号 传递速度 总是 10 米 / 秒, 那 动物 体型越大, 从 身体局部 到 大脑 的 神经通路 越长, 反应速度 越慢 ? 动物 体型越小, 反应速度 越快 ? 好像不是这样 。
刚 在 网上 查了一下 恐龙 的 第二大脑 的 资料, 看到 神经系统传导速度大概是 100 米 / 秒, 以前 的 科学家 认为 恐龙 在 屁股 那里 有一个 神经球, 也就是 第二大脑, 如果没有 第二大脑, 尾巴 的 感觉 传到 大脑 的 时间 太长, “切掉 恐龙 的 尾巴, 等 烤熟 了, 它 的 大脑 也许才能 感觉到疼痛并做出反应 。” 但 现在 的 科学家 又 认为 这个 第二大脑 的 说法 是 错误 的 。 见 知乎 《为什么说有的恐龙有两个脑子,是真的吗?》 https://www.zhihu.com/question/302602677/answer/540057319 。
说起 恐龙 的 尾巴, 我就想起 《妖精的尾巴》 …… 虽然没看过 。
总之, 能不能 找到 比 电信号 更快 的 量子作用 ?
上文说到 继电器 没有 误差耦合, 是 理想的 开关元件, 能不能 做出来 一个 原子 、量子层面 的 继电器 ?
小时候 看 《明天的科学》, 书里 展望了 光子计算机, 神经网络 、模糊数学 。 要 实现 光子计算机, 就要 先 实现 光子开关 。
可以 用 光 的 干涉 来 实现 光子开关 。 一束光 和 另一束光 干涉 会 产生 条纹, 这意味着 它们 的 光子 的 运动方向 发生了 改变 。 也就是说, 通过干涉, 可以让 一束光 让 另一束光 的 光子 的 运动方向 改变, 这个 特性 可以 用来 实现 光子开关, 即 用 光信号 控制 光信号 。
我在 《谁能证明:标准波面的光若能汇集于一点,则它们的光程长度必然相等》 https://tieba.baidu.com/p/7692891691 的 11 楼 提出了 光子碰撞定理, 并且对 @dons222 说 “过两天我会在另一篇文章里让你看到 光子碰撞定理 的 实际应用”, 这个 实际应用 就是 光子开关 。 光子碰撞 就是 光子 对 光子 的 干涉, 就是 光的干涉 。
也可以说, 光子 和 光子 之间 不一定 总是 无视对方 和 可以穿过对方, 有时候会 发生 干涉, 可以 把 干涉 理解 为 光子 和 光子 之间 的 相互作用, 比如 碰撞 。
既然 找到了 光子 和 光子 之间 的 相互作用, 比如 可以让 一个 光子 去 碰撞 另一个 光子 使之 改变 运动方向, 顺理成章 的, 当然 可以 用 一个 光子 控制 另一个 光子 的 运动方向, 也就是 用 光信号 控制 光信号, 也就是 光子开关 。
虽然 我 在 《谁能证明:标准波面的光若能汇集于一点,则它们的光程长度必然相等》 的 12 楼 又说了, 光子碰撞定理 不一定 成立, 但是, 用 光的干涉 实现 光子开关 是 可以 的 。
光子开关 有多快 ? 光子开关 由 光 的 某些 介质 制造而成, 或者 刻在 “集成光路” 上 。 集成光路 的 底板 是 光 的 某种 介质, 就像 集成电路 的 底板 是 硅片 。
于是, 光子开关 的 速度 就和 光 在 介质 中 传播 的 速度 有关 。 光 在 真空 中 的 速度 是 30 万 千米 / 秒, 在 介质 中 的 速度 小于 真空 中 的 速度 。
假设 光 在 介质 中 的 速度 是 10 万 千米 / 秒, 可以认为, 光信号 的 传递速度 也是 10 万 千米 / 秒 。 上文 计算出的 电信号 传递速度 = 10 万 米 / 秒 , 显然 光信号 的 速度 是 电信号 的 1000 倍, 即 光信号 比 电信号 快 1000 倍 。 这样的话, 光子 CPU 的 主频 比 电子 CPU 快 1000 倍, 我们现在 用的 CPU (电子 CPU) 主频 是 1 GHz 水平, 光子 CPU 的 主频 可以达到 1 THz 水平 。
也就是说, 以后 买 一台 光子计算机 的 笔记本, 相当于 买了 1000 台 电子计算机 的 笔记本 。 一台 光子计算机 PC, 相当于 1000 台 电子计算机 PC 。 一台 光子计算机 服务器, 相当于 1000 台 电子计算机 服务器 。
只是 CPU 快 还不够, 内存 和 CPU Cache 也要快, 用 光子开关 制作 双稳态光路, 双稳态光路 组成 的 光子 内存 和 CPU Cache 比 电子 内存 和 CPU Cache (我们现在用的) 快 1000 倍 。
上文 说到 做一个 量子层面 的 继电器, 由此想到 我 写过 《出题 : 请 计算 2 个 铁原子 之间 的 摩擦力 大小》 https://tieba.baidu.com/p/6564151919 。
我 在 《谁能证明:标准波面的光若能汇集于一点,则它们的光程长度必然相等》 里 也 展望了一下 光刻机 。
我还写过 《设计一个 硬件 实现的 Dictionary(字典)》 https://tieba.baidu.com/p/6429003216 , 《用 CPU 计算 100 万 个 点 的 三维坐标 旋转》 https://tieba.baidu.com/p/7697407520 。
在 《左手坐标系坐标变换》 https://tieba.baidu.com/p/7668913258 里 提出了 用 CPU 多核计算 代替 FPGA / DSP / GPU ,
在 《大自然的密码 : 色彩 的 起源》 https://tieba.baidu.com/p/7679825850 里 提出了 超 • 冯诺依曼 计算机 。
假设 光子 CPU 的 一个 核 的 集成光路 的 面积 是 0.1 * 0.1 平方毫米, 相当于 边长 = 0.1 毫米 的 正方形 。 一个 时钟周期 里, 光信号 必须 从 核 的 这一端 传递到 核 的 另一端 , 一端 到 另一端 的 距离 按 边长算, 也就是 0.1 毫米, 则 一个时钟周期 = 0.1 毫米 / ( 10 万 千米 / 秒 ) =
一个 时钟周期 按 1 纳秒 算, 也就是 主频 1 GHz, 则 电信号 传递速度 = 0.1 毫米 / 1 纳秒 = 10 万 米 / 秒 。
神经构造 简化为 由 某种 分子 组成,
模块线路图设计 程序员 递归展开光刻线路图
光子计算机
量子计算机
在 原子 量子 的 层面 搞一个 继电器 ?
光刻机
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2020-01-06 官科 和 雷达测距测速
2020-01-06 学生党 应该去 研究研究 Socket(套接字) 实现原理
2019-01-06 后线程时代 的 应用程序 架构
2019-01-06 我发起了一个用 .Net 编写的 源代码管理工具 开源项目 SourceKit