沈洁 发表于 2023-7-7 11:18:39

为啥大学基础教育还要坚持CISC指令集的8051教学?

本帖最后由 沈洁 于 2023-7-7 13:13 编辑

一开始的处理器设计人员不知道RISC精简指令集处理器好设计吗?最少只需要35条指令集就可以编写所有程序了。为啥还要设计CISC复杂指令集处理器呢?

有谁能说一下吗?
https://pic4.zhimg.com/80/v2-241f10eb89bb71cdcf4b24abccd75e2f_720w.webp

https://pic1.zhimg.com/v2-3a28c0f00ebb4b214ecd2e94438a8470_r.jpg

其实很简单。就是因为那个时代没有强大的编译器。编译这个工作还是需要人类手工完成的。为了降低人类的工作量。所以CISC指令集就孕育而生了。

古代的CISC指令集处理器的真实名字其实应该是,适合人类理解,快速编程的汇编指令集处理器。

简单的说。CISC处理器的指令集不能太多,否则人类记不住,CISC的指令集成的功能又要尽可能的全,减少人类需要编写代码的数量。方便人类理解。

这其实是在编译器和C语言发明之前,大规模使用汇编编程的唯一方法。

https://file2.renrendoc.com/fileroot_temp3/2021-3/25/a69ba460-3e3e-49a6-8066-43ec5336f72c/a69ba460-3e3e-49a6-8066-43ec5336f72c3.gif

这是常规的51的汇编代码。简单容易读懂。

而现在的ARM汇编指令集代码呢?
https://images.xiaozhuanlan.com/photo/2020/dd4c67f8eedb050806927c05340bf94b.jpg

大家可以比较一下,基本就明白了。现代ARM的汇编代码基本已经不是人类能轻松阅读的了。

汇编指令集的发展的三个阶段

第一,方便人类编写和理解的汇编指令级 人类编程用CISC

第二,使用机器编译,减少硬件资源,方便提高频率的 极简RISC指令集 最少只要35条指令集

第三,使用机器编码,大幅度提高硬件利用率的超长RISC指令集,或者现在称之为融合指令集。因为有微指令翻译器这个部件。所以只用考虑提高硬件利用率就足够了。输入的指令集有些处理器甚至可以编程改变,例如全美达的处理器

https://2a.zol-img.com.cn/product/50_450x337/230/cenSNJneyMDxc.jpg
全美达处理器的指令集是可以再编程改变的,也就是说全美达的处理器理论上可以运行任何指令集的程序。在这种情况下,如何提高指令集更合理调用硬件资源的效率,就变成了处理器第一要考虑的工作了。

准确的说。现代ARM的指令数量已经远远超过了传统的CISC处理器的指令集数量了。岂不是简单指令集处理器比复杂指令集处理器的指令数量更多吗?

其实现代的ARM应该称之为,高执行效率指令集。它的设计初衷其实是基于TI的超长指令级原理设计的。指令集越长,输入的信息越多。处理器单位时钟能执行的程序就越高效。

这和精简指令集的设计初衷其实早就背道而驰了。只有那些指令集特别稀少的处理器。才能称之为真正的精简指令集处理器。不过无论是那种精简指令集处理器,都已经早就不再适合人类编写和学习了。

毕竟这类指令集从一开始的设计目的就是让机器来编码。来解决指令集的翻译工作。

讨论到这里,就可以回答大家,为啥大学基础教育还要坚持51单片机的编程教学了。

因为51单片机是最后还广泛使用的,基于为人类汇编编程而设计的指令集系统处理器。

在现在大量学生还在抱怨学习困难。单片机汇编难学的今天。51的 CISC指令集,就是学生掌握一门汇编语言,了解计算机底层运作逻辑,最容易学习的产品了。

没有51单片机的CISC指令集,让这群没有经验的人去学习机器的RISC汇编,这基本就已经是一件不可能完成的任务了。

简单说,51指令集单片机汇编,就是现在学生最容易上手的处理器汇编指令集了,没有之一

https://5b0988e595225.cdn.sohucs.com/images/20180206/55eac93a30094aca82733504462a4705.jpeg
并且对于有志于学习芯片设计的同学,51也是最方便获得verilogHDL源码的处理器核心,大家可以方便的在理解了51汇编代码之后,轻松修改51的代码。用来学习如何设计出更高效率的处理器系统。

但是如果你不了解汇编系统的原理。这一切就无从谈起了。

简单的说,51汇编,是现代学生能接触到的,最容易学习的汇编指令级系统了。没有之一。

本人的51汇编就是纯自学的。WAVE编译器+一片2051单片机就搞定了






sbk100 发表于 2023-7-21 09:47:43

但现在大学里是不是不怎么教汇编了

沈洁 发表于 2023-7-21 15:43:38

本帖最后由 沈洁 于 2023-7-21 15:45 编辑

sbk100 发表于 2023-7-21 09:47
但现在大学里是不是不怎么教汇编了
没办法啊,学生都不想学啊,这才是问题啊,本来就难。但这却是衔接处理器设计,HDL芯片设计的敲门砖啊

angmall 发表于 2023-7-25 17:59:22

可以从电路层面直观了解运算过程学习汇编

TD4 CPU一个 4 位 CPU(中央处理)的可编程计算机系统
TD4 CPU 仿真器
https://vanya.jp.net/td4/

https://github.com/johnsonwust/TD4-4BIT-CPU
页: [1]
查看完整版本: 为啥大学基础教育还要坚持CISC指令集的8051教学?