写 这篇文章 的 原因 是 前几天 在 一个 学帝 XDDongfang 的 帖 (暂时找不到是 哪个 帖 了) 里 和 dons222 思维机器 等 聊天, 也讲到 计算机语言 什么的, 学帝 鼓励 “也应该进军芯片” , 我回复 “我随后写一篇 《展望 芯片技术》” 。
我 在 《偏微分方程 张量 矩阵 可以 归为 计算机 语言》 https://tieba.baidu.com/p/6655949347 的 18 楼 说 可以将 芯片 的 设计 分工, 这样 可以 简单易行 。
节选如下 :
“
大家可能会拿 GPU 说事, 说 设计 GPU 需要 图形学 知识, 这么说也对 。 但可以把 设计 GPU 的 工作 分成 2 部分, 打个比方, 小明 负责 设计 图形函数, 小刚 负责 设计 逻辑电路 。 小刚 只要 把 小明 提供 的 图形函数 用 逻辑电路 实现 就可以了 。
显然, 设计 图形函数 是 数学, 设计 逻辑电路 是 系统设计 。
当然, 还要一个 小红, 把 逻辑电路 变成 物理电路, 小红 和 小刚 的 不同 是, 小刚 不必过多关心 硬件工艺, 主要关心 逻辑设计, 小红 需要 关心 硬件工艺, 把 逻辑设计 转换为 硬件设计 。
”
芯片 在 计算机层面 的 设计 和 发展方向, 我写了一篇 《CPU 应该 搞 0 级 Cache , 而不是 大寄存器》 。 其实 归纳下来 很简单, 就是 一句话 : 把 成本 都 花在 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://www.cnblogs.com/KSongKing/p/14584657.html 的 结尾 说
“
我提倡 用 模块线路图 来 设计 硬件电路, 硬件电路 本来 就是 模块化 的 , 用 模块线路图 设计 很适合 。 模块 的 规格, 包括 接口 和 电路参数 作为 模块 的 说明书 单独说明 就好 。
其实 设计 CPU 很简单, 主要 是 制造工艺 和 电路计算 比较难 。
”
我在 《研究一下 CPU 除法》 https://tieba.baidu.com/p/7508676984 的 结尾 说
“
我 提倡 用 模块电路图 + 模块规格 来 做 硬件电路 设计, 真的很爽, 爽死了, 无敌 。
模块规格 包括 模块 定义 、接口 、参数 等 。
”
有人说, 模块线路图 给人看 可以, 但是 怎么把 模块线路图 展开 为 光刻机 能 读懂 的 Map ? 这里 的 Map 指 硅片 上 微观元件 的 结构 和 布局, 光刻机 根据 Map 在 硅片 上 光刻 。
这好办, 我们不是 程序员 吗 ? 写一个 程序 把 模块线路图 递归 展开 为 Map 不就行了 ?
综上, 一个 开源团队 提供出 一套 芯片 设计方案 是 可能 的, 或者说, 一个 开源团队 主导负责 一款 芯片 的 设计 和 研发生产 是 可能 的 。
接下来, 我们 来 展望 未来 的 芯片技术 。 小时候, 看 科普读物 《明天的科学》, 讲到了 未来 光子计算机, 就是使用 光子芯片 的 计算机 。 光子芯片 由 光子开关 组成 。 文中说 光速 比 电信号速度 快很多, 因此, 光子开关 比 电子电路 快, 光子芯片 比 集成电路 快, 光子计算机 比 电子计算机 快 。
除了 光子计算机, 我还想到 量子计算机 。 这个 量子计算机 不是 “退火” 、塌缩 、 “平行宇宙” 的 那个 “量子计算机”, 这个 量子计算机 仍然 是 冯诺依曼 计算机, 只是 采用 量子开关 。
量子开关 类似 电子开关(三极管), 光子开关, 只不过 利用 量子间作用 来 实现 开关 效果 。
现在 芯片技术 已经达到了 几纳米 的 粒度, 其实 这么小 的 微观原件 间 的 作用 已经 可以是 量子作用 了, 当然, 目前 的 芯片运行 还是 依靠 和 宏观 一样 的 欧姆定律 。
蛋白质 的 分子 比 几纳米 大 , 而 原子 分子 电子(共价键) 间 作用 是 量子作用 。
目前 的 芯片 的 几纳米 的 粒度 在 分子水平, 也 差不多 在 原子水平, 当然, 目前 的 芯片运行 还是 依靠 和 宏观 一样 的 欧姆定律 。
那么, 能不能 利用 分子 原子 间 的 作用 (量子作用) 来 实现 开关 效果 呢 ?
分子 原子 间 的 作用, 我们 最熟悉 的, 最普遍 的 就是 化学反应 。
我 写过 一篇 《浅谈 生物体信号传递》 https://www.cnblogs.com/KSongKing/p/10328146.html , 里面说 “神经信号 的 生化反应 在 分子级 的 反应速度 应该是 纳秒级 的, 就是说 跟 计算机 CPU 主频 差不多是一个 水平” 。
我们 再来 计算看看 。
模块线路图设计 程序员 递归展开光刻线路图
光子计算机
量子计算机
在 原子 量子 的 层面 搞一个 继电器 ?
光刻机