• 听水的湖
    置顶
    2022-07-25
    又见面啦,我是这门课的编辑小新。 以下是下节课的预告和“预习作业”: 下个模块开始手写CPU啦(8月1日更新),我们这次用Verilog语言写。老师正奋战中,把配套代码等等都为大家准备上,大伙儿可以趁等待更新这周吸收消化下前两节课。 还可以看看下面的“预习”作业: 1.第一季也有一篇内容稍微涉及了一点Verilog语言,代码也不多,会带你实现一个可以计算任意 N 位二进制数的 ALU。迫不及待的同学可以先行去瞅瞅,找个感觉:https://time.geekbang.org/column/article/409790 2.也许你之前并没接触过硬件语言,但对比学习大法还是很不错的。可以先自行思考一下Verilog语言和我们熟悉的软件编程所用语言有哪些不同,带着疑问学习,效果加倍哦。答案我们将在后面揭晓!

    作者回复: 比心

    
    20
  • pedro
    2022-07-20
    为什么riscv需要定义不同的特权级? 这并不是riscv独有的,让我们把注意力回到老朋友intel上。 事实上,cpu刚出现的那段时间里,压根就没有特权级这个概念,任何人都是实打实土皇帝,但是这样怎么管理?应用程序之间经常打架斗殴,搞不好还把机器搞垮了。 然后inter的那帮人就搞出了一个特权级的概念,你虽然想打架,但我不准你打,你出手,我就红牌,然后大家都老实了,系统运行就很稳定了。 说了这么多,特权级无非是让大家守规矩,讲安全,和谐共生。

    作者回复: 我p哥 66666

    共 8 条评论
    43
  • 仰望星空
    2022-07-21
    为什么RISC-V要定义特权级?主要是为了系统能稳定和安全的运行,设想一下如果没有特权级,任何应用都能任意访问所有硬件,这必将会是一场灾难

    作者回复: 是的 是的 学的明白

    
    3
  • 可爱因子1/n
    2022-07-21
    就像老师上课讲到的,设置特权级就是给指令加上了权力,这样的话应用程序所执行的指令就只能做自己权利范围以内的事情,避免对其他的应用程序产生不必要的干扰和破坏,维持这个生态的稳定和平衡

    作者回复: 正确 理解到位

    
    3
  • 青玉白露
    2022-07-20
    特权级是为了能够实现资源隔离、权限管理所设置的。之后实现的操作系统就需要用到他

    作者回复: 哈哈 对的

    
    3
  • lifetime
    2022-10-23 来自湖北
    问个小白才会问到的问题? 硬件CPU的“源代码”指的是什么? 对于ARM是售卖“源代码”存活的,那么它的“源代码”是指指令集的定义,寄存器的定义,特权级的定义吗,以及如何实现特权级的转换,寄存器如何使用等的规范? 我觉得是不是除了这些规范,还会包含CPU的内部结构,那些晶体管的摆放和连接设计图纸呀?

    作者回复: 设计CPU的资料

    
    2
  • 苏流郁宓
    2022-07-21
    俺觉得特权级区分用户软件与操作系统功能,在操作系统那边讲过,亮点应该是硬件线程,任意时刻只能运行在一个特权级上。这算不算是在安全与好用上做平衡?算不算是RISCv指令集对cpu发展的贡献?

    作者回复: 是的 其它CPU的核心 也是一样的 同一时间只用运行在一个特权级上

    
    2
  • J
    2022-07-20
    RISC-V定义特权级,有助于保护系统资源不被滥用和破坏,不会因为低特权程序的bug或恶意代码破坏环境。

    作者回复: 对 正确的

    
    2
  • 尹小白
    2022-12-12 来自湖北
    开放,简单,模块化

    作者回复: 是的

    
    1
  • 揭晓林
    2022-10-15 来自湖北
    老师和同学们好,我这边想补充两个点: 1. 在RSIC-V因何流行那里,老师写的是“之前硬件和软件一样,都是小心地保护自己的 “源代码” ”这里是否将“硬件”和“软件”互换位置更顺畅一点?因为后面讲的是“直到后来,软件界出现了开源的 Linux” 2. 评论区有人评论特权级是如何切换的:我在B站看哈工大的操作系统课程时,第5讲里说到是用段寄存器来实现的,CPL(Current Privilege Level 当前的特权级) 和 DPL (Descriptor Privilege Level,目标段)。在操作系统启动的时候会初始化好。当用户程序执行的时候,会判断两个寄存器的值。

    作者回复: 嗯嗯

    
    1