02 | 大厦基石:无生有,有生万物-笔记
之前的一篇专栏中,专栏作者带我们分析了如何 “构建一个而应用程序”
这一篇的笔记,我主要记录的是解剖架构的过程
话接上回,第一个问题:
我们如何分析结构设计中设计的每一个零件,也就是说设计或拆件零件时,我们会关心哪些问题?
需求
还是问题。这个零件的作用? 能做啥? 他一定不会用来做啥?
规格
零件的接口长啥样? 如何和其他零件适配?
规格是零件适配需求的抽象,可有多种方案 。然而,一旦规格某个条件不满足 (除了一点问题) 就不能适配其他零件 ,也就有无法工作(可以联想发动机)
约束:
多样化
- 外观
- 交互方式
- 质量
冯诺依曼体系结构
整个信息科技的体系像是一个无中生有的全新世界(虚拟化的世界)
计算的边界在哪里? 计算机是否能够像人类一样思考?(图灵之前的想法)
计算机是否有一天可以像人一样智能?
计算终将解决智能问题
冯诺依曼体系的规格
三个基础零件
- 中央处理器
- 存储
- 输入输出
中央处理器:
- 内置寄存器
- 内存
- 机械硬盘
- SSD
- 光盘
从 CPU 的角度,存储可以分为:
1. 内置支持存储 例如 ROM 内存 寄存器
2. 外置存储: 输入输出谁被 不能直接读取
冯诺依曼体系中的“存储” 指的是内置支持的存储
输入输出设备
一个设备通过一个端口连接到CPU,通过端口地址,它们(CPU 和 设备)可以进行数据交互 ,数据交互的数据格式由设备定义 CPU不理解。
设备使用方可以解释接收的数据的含义 ,设备厂商一般会提供设备的驱动,隐藏交换数据的细节,设备方只需要调用相关的接口函数即可。
指令
CPU的指令大致上如下:
- 计算类
- 读写类
- 指令跳转类
需求是如何被满足的?
如何从0开始设计一个叫做计算机的设备,用来解决计算可以解决的问题?
1. 需求
问题是五花八门 包罗万象
如何形成稳定的且可拓展的架构来支持变化? 也就是说如何以不变应万变?
计算机的核心能力是稳定
计算机的核心能力是计算,而计算是什么?
计算是对于输入数据的处理也就是转换,之后输出成为我们想要的结果。
数学中成为 F(x) ,编程语言中成为 Function () 函数
即
y = F(x)
这里如果用作TS语言表达:
function F(x:any):any{
}
其中
x,y 是数据 他们可以是你所常见的文档类型, 例如 图片 文本 视频
x,y 物理上的载体是什么?
如果数据没有载体,就不能被我们所观察到
存储就是存放计算所要操作的数据所在
具体的计算如何表达?
F(x) 这个函数式未知的 ,如何可以设计一个系统架构让用户可以表达任意复杂的函数呢?
任意复杂的自定义函数,都可以通过:
- 内置函数
- 循环 条件分支
- 子函数(自定义函数)
来组合定义
对于任意的一个计算函数 我们都可以直接使用一组指令进行表达
函数 F 物理上可以放在哪?
以指令序列形式厨房在存储即可
因此 存储存放了包含计算本身在内的数据
谁才能理解并执行存储的这些数据呢?
这个执行者就是中央处理器
它要支持 包含内置函数 循环 条件分支 执行子函数
现在有了中央处理器和存储了
交互
就是输入和输出
人: 输入为五官 触觉 、听觉 嗅觉。 输出靠语言、动作 等等
计算机: N
计算机可以被看作为:
输入输出设备从根本上解决了什么?
无限的可拓展能力
输入输出设备是黑盒子:他可以是任何电子器件、计算机? 不同架构的电脑 : GPU 量子计算机
## 架构思维我们学到了啥?
需求
稳定点
变化点
固定存储地址执行主板的ROM上的一点启动程序 BIOS
存储设备驱动
基础外部设备驱动
设备 启动配置管理 能力
位置存储执行程序能力
执行权转移到外置存储
把所有的变化点从PC的最核心配件CPU中玻璃之后 CPU的需求变得极其稳定 可以独立演进去了!
专栏作者 github 实现以及修改迭代
https://github.com/qiniu/arch/tree/master/von
极客时间版权所有 https://time.geekbang.org/column/article/91007
有疑问、勘误、请您在下方留言,感谢您的支持 ღ( ´・ᴗ・` )!
如果转载,请注明出处: 极客点子版权所有(/page/927.html)

本网站使用 创作共用 归属 - 非商业用途 - 共享4.0国际许可协议的相同方式 许可.
- You Don't Know JS: Async & Performance Appendix B: Advanced Async Patterns
- 6.You Don't Know JS: ES6 & Beyond Chapter 5: Collections
- You Don't Know JS: ES6 & Beyond Chapter 6: API Additions
- 2.You Don't Know JS: ES6 & Beyond Chapter 1: ES? Now & Future
- You Don't Know JS: ES6 & Beyond Chapter 8: Beyond ES6
博文分类
- nodejs
- express
- thinkjs
- go
- beego
- javascript
- css3
- react native
- python3
- react
- 翻译
- 手册
- 树莓
- Error修复
- 五味
- IoT
- 技巧
- swift
- Android
- C++
- ruby
- perl
- linux
- mysql
- pgSQL
- Redis
- webpack
- C
- Object-C
- SOA
- browserify
- unix
- NDK
- C#
- Docker
- java
- PHP
- gulp
- Sass
- Data mining
- Architecture
- Laravel
- TCP/IP
- AI
- Unix Socket
- Lua
- League of Legends
- tensorflow
- minecraft
- flutter
- dart2
- mongodb
- Julia
- UML
- typescript
- rust
- nginx
- 极客时间
- 架构与道
- 算法
- RHCA