你的机器想要有序的动起来,就需要别人下命令
机器有有序有意义的运动起来,需要命令
下命令就需要
点到每一个部件,都要点到名,都要正确。
下命令需要统一的口号,
下命令需要有序有步骤。
下命令需要有下命令的人。
下命令还要指定对方可以获得的资源。
要有下命令的人,需要统一的口号,需要有序,需要每个人都到位
下命令点到每一个部件,
就需要有对各个部件的指令(保证都可达)。但是每个人都分别给命令不方便,
可以考虑约定(编码)。
比如我说136表示 要求A去做十个俯卧撑。
236表示B去做十个俯卧撑
333表示C去打中单
但是如果全部用编码,未免太抽象,难以记忆,也不方面。所以两个都采用,兼而有之.
用一串码来表示,分段。
比如 21136245333实际上会被视作2|1|136|245|333
意思是 E走2路,F走1路,A去做十个俯卧撑,B去守家,C打中单。
21136245137会被视作2|1|136|245|337
意思是 E走2路,F走1路,A去做十个俯卧撑,B去守家,C去打野。
21000245337会被视作2|1|000|245|337
意思是 E走2路,F走1路,A啥都不做,B去守家,C去打野。
用编码的可以考虑把彼此互斥的放一起,比如C不能同一时间,既打中单,又去打野。
这样子 反过来说,不用编码的,放在一串的里,有时候可以并行执行。一起执行,提高效率。
下命令需要统一的口号
也就是时钟来控制。如果没有时钟,队伍就没有一个统一口号。甚至可以说 每个人都没有手表。没办法看时间。这是非常不利的。
时间对于一个系统的控制来说至关重要
下命令需要有序有步骤
这一点可以通过时钟+存储器实现。时钟有序推进,把在存储器里存储的命令一行一行的读出来(存储器是 线性,按顺序读就可以。如果要跳转,用栈,配合存储器线性的结构,依旧可以实现有序。这里看不明白没有太大关系)
还有一种办法是实时计算,下命令的是一个对部下,对当前局势,对时间有非常强掌握力的一个“程序”,它能根据现在的输入输出(当前局势),节拍(时钟(对这里也要时钟!)),自己的硬件系统(部下)十分了解(充分快速获得信息),根据自己写好的了程序(组合逻辑电路)快速决策。
即 Instructions=F(IN,OUT,TIME,HARDWARE)
F是一个组合逻辑电路,一个函数,写死.
这就是所谓硬布线技术,是非常难的。优点是快,缺点是难,扩展性不好。
下命令需要有下命令的人
这个人一般统称为“控制器”
如刚才所言,有两种。一种是用存储的(即微程序),一种是硬布线。
然后进一步细说一下怎么实现.
既然存储器那种,也就是微程序,是依靠存储起来的命令.那么其实是可以编程的.一条指令就是一条微程序,微程序用微命令写.
这两层的性质是相似的(命令控制),但是规模不同(是组成的,递归的关系)
打比方就是 你想要一把诅咒刀,宏观上上你获得一把诅咒刀.细看,刀刃上布满了诅咒性质的刀齿,你再细看会发现刀齿上嵌合着诅咒性质的微粒,按照诅咒的魔法纹路嵌合在上面.
硬布线本人不是很了解,不多讲.
下命令还要指定对方可以获得的资源。
这里就是在说操作数的问题。为什么要指定告诉部件它需要的资源呢?
因为
1部件实在很笨啊,自动化和逻辑判别能力都很死很低。
2实际情况也可能很复杂,数据的转移是很复杂的。一个数据也许需要到很多地方去接受处理。也要有序。有时还要和其他数据一起。情况复杂。需要下命令来控制
3计算机里存在总线结构。总线相当于火车路线,总线上可以传输数据资源(实际上 命令也可以视作是数据资源,也会依赖总线传输)。不可避免会有多辆火车共用一条路线的问题。那更需要调控了。
看看这复杂的通路,你能清楚描述,该把什么从哪里送到哪里吗?
好那么,确实需要下命令来调控资源,告知部件去哪里要资源。
怎么告诉呢?
因为命令需要尽可能简短,所以有各种方法来指代数据的位置
当然非常简单的可以直接附在命令里,比如 去喝【水】。还有
吃【屎】啦你
如果要指定,哪种饮料,那一厂家,那一年的,那个地区生产的,全部写下来就变成
去喝【矿泉水,农夫山泉,2021年6月产,云南生产基地】。太长了!
还是用老方法,编码。这里叫“编址”或者叫寻址(告诉部件去寻找数据的地址)
既然是编码就可以有很多方案了。
实际上为了简化和统一,很多时候这里还是采用 “存储器的方法”,你只要给出数据的地址 在存储器里的 地址就好
比如 【矿泉水,农夫山泉,2021年6月产,云南生产基地】在 A16区32号).就写 “去喝A1632”。
为了简化和统一嘛,不然这么多种数据,怎么一一编码??
虽然简化统一,因为数据有很多中,机器本身也各有不同。还是有不少寻址方式,以适应这个情形。
课程设计
上面的这些所有,除了时钟是另外的独立部分来实现。其他都需要浓缩在一条指令里面!
一条很简短的指令。包含上面的所有要求!
这也是本次课程设计的目标…微程序方法, 指令集的设计.
我们实践,
时钟已提供
存储+时钟
寻址方式(自己定)
能表示涵盖每个:微程序编写实现
然后 后悔后面没听课…
现在素养知识很差,所以写一写理理思路,计组这课看书又特别抽象无聊…
继续加油!