许式伟的架构课
许式伟
七牛云 CEO
84945 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 89 讲
许式伟的架构课
15
15
1.0x
00:00/00:00
登录|注册

05 | 思考题解读:如何实现可自我迭代的计算机?

通过对比别人的方案与自己的不同之处,可以加深对架构设计在决策上的体会
设计“一个可自我迭代的计算机”是一个复杂的系统,不太适合架构新手
需求分析是一个需求从模糊到细化并最终清晰定义的过程
外置存储上的引导程序需要支持外置存储的数据格式、管理外置存储的基础能力、执行外置存储上的可执行程序
BIOS需要负责键盘和显示器的驱动程序、外置存储设备的驱动程序、支持执行外置存储中引导区的机器代码程序、跳转到外置存储的固定地址
外置存储需要保存汇编程序的源代码和编译出来的可执行程序
存储的程序包括计算机主板ROM上的启动程序(BIOS)和外置存储上的软件
计算机分为三大类的零部件:中央处理器、存储、输入输出设备
需要区分需求的变化点和稳定点
架构师需花费三分之一的精力在需求分析上
结语
怎么实现可自我迭代的计算机?
需求分析
思考题解读:如何实现可自我迭代的计算机?

该思维导图由 AI 生成,仅供参考

你好,我是七牛云许式伟。
在“03 | 汇编:编程语言的诞生”中,我给出了一个架构思考题:
第一台以键盘 + 显示器为标准输入输出的现代计算机出现后,一个最小功能集,但计算能力可自我迭代的计算机应该是什么样的?
从需求上来说,我们期望它有如下能力。
键盘和显示器的驱动程序。
当时最主流的外置存储设备(不一定是现代的硬盘)的驱动程序。
一个汇编程序编辑器。可从存储中读取汇编程序代码,修改并保存到存储中。
一个汇编编译器。可将汇编程序代码编译成机器代码程序,并保存到存储中。
支持执行一段保存在外置存储设备中的机器代码程序。
那么,它的变化点和稳定点分别是什么?为此,你会怎么设计,设计出哪些子系统,每个子系统的规格是什么?扩展性上有哪些考虑?

需求分析

我们前面谈架构思维时提到:做架构,第一件事情要学会做需求分析
需求分析的重要性怎么形容都不过分。准确的需求分析是做出良好架构设计的基础。我个人认为,架构师在整个架构的过程中,至少应该花费三分之一的精力在需求分析上。
这也是为什么很多非常优秀的架构师换到一个新领域后,一上来并不能保证一定能够设计出良好的架构,而是往往需要经过几次迭代才趋于稳定,原因就在于:领域的需求理解是需要一个过程的,对客户需求的理解不可能一蹴而就。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文探讨了构建一台具有最小功能集但计算能力可自我迭代的计算机的需求分析和设计思路。作者强调了需求分析的重要性,指出准确的需求分析是良好架构设计的基础。在需求分析时,要区分需求的变化点和稳定点,稳定点是系统的核心能力,而变化点需要对应地考虑扩展性上的设计。文章通过讨论实现一个最小化的计算能力可自我迭代的计算机的需求分析,展示了架构师在设计过程中需要考虑的重要因素。文章详细讨论了计算机的各个组成部分,包括中央处理器、存储、输入输出设备以及外置存储的数据格式设计等。同时,还探讨了BIOS和外置存储软件的分工,以及外置存储上的引导程序需要实现的功能。整体而言,本文为读者提供了对构建可自我迭代计算机的深入理解,强调了需求分析和设计思路的重要性。 文章通过讨论构建一台具有最小功能集但计算能力可自我迭代的计算机的需求分析和设计思路,强调了需求分析的重要性。作者指出准确的需求分析是良好架构设计的基础,要区分需求的变化点和稳定点。文章详细讨论了计算机的各个组成部分,包括中央处理器、存储、输入输出设备以及外置存储的数据格式设计等。整体而言,本文为读者提供了对构建可自我迭代计算机的深入理解,强调了需求分析和设计思路的重要性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《许式伟的架构课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(71)

  • 最新
  • 精选
  • Enthusiasm
    总结:设计系统架构的前提是用户需求分析,用户需求包括分析出稳定需求点和变化需求点。从功能上看,稳定需求点一般是实现偏核心需求的需求点,变化需求点往往是实现偏扩展性需求的需求点。从层次结构上看,稳定需求点往往在系统层次的底层,而变化需求点往往在更加抽象层(上层)。从从属关系上看,稳定点需要提供功能给变化点使用,变化点调用稳定点提供的功能。从时间顺序看,稳定需求往往先现是变化点实现的基础,变化点通过调用已经实现的稳定点提供的功能来实现更为抽象的功能。 系统架构类似于一个栈的结构,人机交互(变化点)放在栈顶,底层工作(稳定点)置于栈底。 这节课程让我联想到网络中的OSI 7层模型。大概其也体现了这种软件架构思想。好处就是架构清晰,职责明确,功能规范等等。 以往我认为的架构设计类似上面的描述,描述起来类似按自顶向下顺序,采用分治思想完成。但许老师的方法又有些巧:架构好比搭积木,许老师是先有了很多积木(需求点),然后把再确定这些积木放在哪一层次的格子里。这简化了架构设计的难度,好比用市场经济代替计划经济,很有趣。 架构设计博大精深,灵活多变,初学课程的我们,对架构设计的学习,也只能算是盲人摸象。

    作者回复: 很赞的总结

    2019-05-02
    3
    166
  • s
    已经很久没有看到这么赞的文章了,起初踏入编程的大门就是想创造,在我眼里设计一个项目仿佛完成一个完美的艺术品。工作了以后感觉这份激情渐渐的被磨平,面对客户需求,仅仅是 "他指哪,我打哪",软件的产出仅仅只是换钱的砝码。这篇文章又把我的梦想拉了回来。技术能解决的问题都不叫问题,唯独思想的升华是无价的,万分感激!

    作者回复: 这是我听到的最好的赞美,感谢。能够唤醒人们对架构之美的追求,无疑是我最大的动力。

    2019-05-08
    2
    78
  • 山口谈退隐去了
    看完这篇文章让我想起了在一本育儿书上看到过这么一句话:“当人们使用‘需求’这个词的时候,他们所说的常常是一个能够满足需求的解决方案而不是需求本身”。而需求分析就是为了找到问题,然后告诉人们,你其实还可以这么做而不是你应该这么做。

    作者回复: 赞,很多人都有这个误区,以解决方案代替需求。要清醒认知这一点并不容易。

    2019-05-08
    2
    69
  • 梦醒十分
    老师授课知识的角度很有深度,更贴切的说是一种思维方式,这种深度思考,从事情的本质重新推演与复盘的思考方式是很值得学习的。因为我们大部分人应该都没有想过自己去重新设计一个计算机的实现。

    作者回复: 从无到有到万物,我们这个课的脉络之一就是重新从零构建整个信息世界,这一点在开篇词中提到过,这一点非常非常关键。另一个脉络是架构思维的递进,这一章重点是需求分析。这两个脉络相辅相成,交织在一起。

    2019-04-30
    32
  • Enthusiasm
    “活到老学到老”啊,突然意识到,不光是软件架构如此,连计算机系统架构也是如此。 我们从小学计算机,每门计算机课程的第一课总是概述“计算机由硬件系统和软件系统构成”。 今天,许老师通过抽象出“稳定点”和“变化点”的概念,从另一个角度带给我对这句话更深的理解,才让明白这句话的真正含义。 原来,所谓的硬件系统就是“稳定点”,软件系统就是“变化点”。 原来,一句最最平淡无奇的描述,一个最最基础的系统,也蕴含着“架构思维”。 万事万物其实是相通的,我的梦想就是,透过这些表象的描述,看到思想的本质。

    作者回复: 硬件系统就是“稳定点”,软件系统就是“变化点”。挺好的总结。

    2019-05-02
    20
  • WL
    请问一下老师, 03和05两篇文章中的"可自我迭代的计算机"中的"可自我迭代"是啥意思, 是指的是计算机可以执行各种各样的外部程序吗?

    作者回复: 指功能可以越来越强大,是活的机器,而不是能力固定的机器

    2019-04-30
    19
  • 程序员小跃
    拿到一个需求,需要做明确的需求分析,这是对我目前水平来说最有用的方式。文中讲的需求分析,让我受益很深。 不过实践部分,有点吃力,还需要细细品味才行。

    作者回复: 做任何事情,首先要有正确的姿势,然后就是千锤百炼、熟能生巧了。

    2019-04-30
    12
  • Geek_88604f
    请问许老师,用户执行ls命令的时候,从系统架构图上看各模块之间是如何交互的?

    作者回复: ls会调用文件系统,文件系统会调用外置存储的驱动程序,驱动程序会调用cpu的端口io指令。

    2019-05-01
    7
  • ljf10000
    1。这里外置存储应该包括我们平常所说的内存和硬盘。现在允许cpu直接执行存储上的指令,除了内存,可能大家熟悉的只有flash了。 2。如果没有cpu直接执行外置存储上指令的能力,就是有sh也没用,毕竟sh也是保存在外置存储上。

    作者回复: 1、不包括内存。外置存储(外存)是指cpu不直接支持的存储。cpu直接支持的叫内置存储,包括:寄存器、内存(RAM)、主板上的ROM。 2、cpu并没有直接执行外置存储上指令的能力。它通过支持虚拟内存做到支持外置存储的。虚拟内存在某一个页不存在的时候发生缺页中断,缺页中断由某个函数响应,再把缺的页从外存读进来。

    2019-04-30
    2
    7
  • 裴海港
    我觉得拿一个软件系统的架构作为例子是不是更好,因为对于有些人来说,BIOS,ROM,文件系统,驱动程序这些过于抽象,难有代入感,不便于消化吸收。

    作者回复: 这个例子的确有点复杂。不过这些概念引入的时候都有相应的内容介绍,而且也是理解计算机很重要的基础,所以在例子类型上没有刻意避免。您可以说一下哪个概念比较难以理解,这样我可以多补充一下相关背景知识。

    2019-04-30
    7
收起评论
显示
设置
留言
71
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部